PowerShellで画像を白黒に変換する

| 2009年10月19日月曜日
OpenCVSharpを使って画像を白黒(2値化)する。
最初にグレースケールにしておいて、しきい値以下だったら白色、以上だったら黒色の二色の画像にする。
少しぼかした方が、白い部分と黒い部分が分かれるのでいいかもしれない。
ぼかさないと、ノイズが多い感じになる。
サンプルはぼかし無しで、ぼかしの部分はコメントアウトしてある。
  1. [void][System.Reflection.Assembly]::LoadFrom((Join-Path $pwd OpenCvSharp.dll))
  2. # グレースケールで読み込む
  3. $srcIplImage = [OpenCvSharp.Cv]::LoadImage( (Join-Path $pwd "foo.jpg"), [OpenCvSharp.LoadMode]::GrayScale)
  4. # ソース画像と同じサイズのグレースケールで初期化する
  5. $dstIplImage = New-Object OpenCvSharp.IplImage( $srcIplImage.Size, [OpenCvSharp.BitDepth]::U8, 1)
  6. # 画像をすこしぼかすした方がいいかも
  7. #$smooth = 5
  8. #$srcIplImage.Smooth($srcIplImage, [OpenCvSharp.SmoothType]::Gaussian, $smooth)
  9. $threshold = 128 # 白色か黒色かのしきい値
  10. $srcIplImage.Threshold($dstIplImage, $threshold, 255, [OpenCvSharp.ThresholdType]::Binary)
  11. $dstIplImage.SaveImage((Join-Path $pwd "bar.jpg"))
  12. $srcIplImage.Dispose()
  13. $dstIplImage.Dispose()

0 コメント: