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