Android (Java) で openCv を使用しています。私たちは多くの問題に直面しています:
convertTo() が機能しないため、3 チャンネルの画像を cvtColor() に渡さずに 1 チャンネルに変換することはできません。
grayImg.convertTo(grayImg, CvType.CV_8UC1);
cvtColor() は奇妙な出力を出します:
Imgproc.cvtColor(src, grayImg, Imgproc.COLOR_RGB2GRAY);
この行の出力は、4 回繰り返された画像です。この繰り返しを取り除く唯一の方法は、この行を追加することです。出力は白と黒の画像ですが、3 チャンネルなので、1 チャンネルの画像が必要なため、今後の関数がクラッシュします。
Imgproc.cvtColor(grayImg, grayImg, Imgproc.COLOR_GRAY2RGB,3);
エッジ検出用の canny():
Imgproc.Canny(grayImg, grayImg, 10, 100,3,true);
findContours() は恐ろしい数の輪郭を数えますが、画像内のオブジェクトの数は 2 つだけですが、入力画像は 3 チャンネルの bmp 画像であり、それを Mat に変換します。
出力画像:
https://dl.dropbox.com/u/36214963/canny.jpg
ご心配をありがとう