PowerShellで画像をぼかす

| 2009年10月17日土曜日
OpenCVSharpを使って画像をぼかす(平滑化する)。
たぶん、一部だけぼかすこともできるとは思うけど、やり方がわからないので、まずは全体をぼかす。

ぼかし方は五種類、OpenCvSharp.SmoothTypeで定義されている。

・ BlurNoScale
・ Blur
・ Gaussian
・ Median
・ Bilateral

そのうちの一つ「Bilateral」は例がでて使えなかった。

以下、コード
  1. [void][System.Reflection.Assembly]::LoadFrom( ( Join-Path $pwd OpenCvSharp.dll) )
  2. $smooth = 5 # ぼかし率?値が大きいほどぼかしが強い
  3. # 強い光を当てたみたいな画像になった
  4. $iplImage = [OpenCvSharp.Cv]::LoadImage( (Join-Path $pwd "foo.jpg"))
  5. $iplImage.Smooth($iplImage, [OpenCvSharp.SmoothType]::BlurNoScale, $smooth)
  6. $iplImage.SaveImage((Join-Path $pwd "BlurNoScale.jpg"))
  7. $iplImage.Dispose()
  8. # 全体的にぼゃ~って感じ
  9. $iplImage = [OpenCvSharp.Cv]::LoadImage( (Join-Path $pwd "foo.jpg"))
  10. $iplImage.Smooth($iplImage, [OpenCvSharp.SmoothType]::Blur, $smooth)
  11. $iplImage.SaveImage((Join-Path $pwd "Blur.jpg"))
  12. $iplImage.Dispose()
  13. # 全体的にぼゃっとしてるけどBlurよりははっきり
  14. $iplImage = [OpenCvSharp.Cv]::LoadImage( (Join-Path $pwd "foo.jpg"))
  15. $iplImage.Smooth($iplImage, [OpenCvSharp.SmoothType]::Gaussian, $smooth)
  16. $iplImage.SaveImage((Join-Path $pwd "Gaussian.jpg"))
  17. $iplImage.Dispose()
  18. # 油絵みたい
  19. $iplImage = [OpenCvSharp.Cv]::LoadImage( (Join-Path $pwd "foo.jpg"))
  20. $iplImage.Smooth($iplImage, [OpenCvSharp.SmoothType]::Median, $smooth)
  21. $iplImage.SaveImage((Join-Path $pwd "Median.jpg"))
  22. $iplImage.Dispose()
  23. #ぼかし方(平滑化)をBilateralにすると例外が発生してうまくいかない
  24. #$iplImage = [OpenCvSharp.Cv]::LoadImage( (Join-Path $pwd "foo.jpg"))
  25. #$iplImage.Smooth($iplImage, [OpenCvSharp.SmoothType]::Bilateral, $smooth)
  26. #$iplImage.SaveImage((Join-Path $pwd "Bilateral.jpg"))
  27. #$iplImage.Dispose()

0 コメント: