2011-10-25 6 views
1

私はこれを行う:
1.今、エッジがmIntermediateMatにする必要があります: - 私の間違ったが、ときMatオブジェクト内のピクセルエッジを検出するにはどうすればいいですか?

Imgproc.Canny(mGraySubmat, mIntermediateMat, 50, 100); 

は私を停止します。
2. mIntermediateMatのすべてのピクセルの色値は0または255でなければなりません(mIntermediateMat.get(x、y)を使用して値を取得します)。
3. mIntermediateMat.type()=>マット[480 * 640 * CV_8UC1、isCont =真、isSubmat =偽、nativeObj = 0x139ec0、DATAADDR = 0x4453d010]

mGraySubmat.type()=>マット[480 * 640 * CV_8UC1、isCont = true、isSubmat = true、nativeObj = 0x1e8308、dataAddr = 0x450b4010

ここで、Cannyが矩形に似たエッジを検出したとします。今度はこの矩形内のシードポイントから始め、北、南、東、西へ歩き、私が端に達するまですべてのピクセル値をチェックします。
は結果を参照してください:

画像は北へ歩くここhttp://i.stack.imgur.com/JWVJW.png

見つけることができます動作するようです。ピクセル値255の座標x、y = 239,346 - >右
南:x、y = 239,488で値255のピクセル - 実際には488はありません(480が最大値なので) - >間違っている
東:ピクセル値255のx、y = 342,388 - >間違った
西:ピクセルが見つかりませんでした、画面外... - 間違っています
質問:何が間違っていますか?私が歩いているときにエッジピクセルが検出されないのはなぜですか?

重要:画像の上部と左側に100ピクセルのサイズの尺度があります。原点は左上にあり、x、y = 100,350の座標は右に100ピクセル、下に350ピクセルです。

答えて

1

Iは、mIntermediateMat.get(x、y)を使用してピクセルカラー値をフェッチしました。それはちょうど間違っている。関数はMat.get(rows、cols)として定義されているので、mIntermediateMat.get(y、x)となります。違いを見ます?私はしませんでした。失われた時間と私のための別の愚かさの賞の多く。

関連する問題