OpenCVSharpを使用して画像の白、黒、赤、青、緑、黄色、マゼンタ、シアン、その他の色に該当する色を数えてみる。
下のコードには、その色に該当するかについて、あそびをまったく入れていないのでほとんどが、その他の色になってしまう。
けど、今回は、白黒画像をカウントする事が目的で、白と黒だけちゃんと取れればよかっただけなのでこれで良しとする。
今度、ある程度まともな条件で取得できるようにしよう。
あと、この方法だとかなり遅いので、なにか別な取得方法がないかについても調べておこう。
- [void][System.Reflection.Assembly]::LoadFrom((Join-Path $pwd OpenCvSharp.dll))
- $iplImage = [OpenCvSharp.Cv]::LoadImage((Join-Path $pwd "foo.jpg"))
- for ($x = 0; $x -lt $iplImage.Width; $x++) {
- for ($y = 0; $y -lt $iplImage.Height; $y++) {
- # CvColor型にキャスト
- $cvColor = [OpenCvSharp.CvColor]$iplImage.Get2D($y, $x)
- $count++
- switch ($cvColor) {
- {$_ -eq [OpenCvSharp.CvColor]::White} {
- $white++
- break
- }
- {$_ -eq [OpenCvSharp.CvColor]::Black} {
- $black++
- break
- }
- {$_ -eq [OpenCvSharp.CvColor]::Red} {
- $red++
- break
- }
- {$_ -eq [OpenCvSharp.CvColor]::Blue} {
- $blue++
- break
- }
- {$_ -eq [OpenCvSharp.CvColor]::Green} {
- $green++
- break
- }
- {$_ -eq [OpenCvSharp.CvColor]::Yellow} {
- $yellow++
- break
- }
- {$_ -eq [OpenCvSharp.CvColor]::Magenta} {
- $magenta++
- break
- }
- {$_ -eq [OpenCvSharp.CvColor]::Cyan} {
- $cyan++
- break
- }
- default {
- $other++
- }
- }
- }
- }
- Write-Host White = ($white / $count).ToString("00.0%")
- Write-Host Black = ($black / $count).ToString("00.0%")
- Write-Host Red = ($red / $count).ToString("00.0%")
- Write-Host Blue = ($blue / $count).ToString("00.0%")
- Write-Host Green = ($green / $count).ToString("00.0%")
- Write-Host Yellow = ($yellow / $count).ToString("00.0%")
- Write-Host Magenta = ($magenta / $count).ToString("00.0%")
- Write-Host Cyan = ($cyan / $count).ToString("00.0%")
- Write-Host Other = ($other / $count).ToString("00.0%")
- $iplImage.Dispose()
0 コメント:
コメントを投稿