나는이 작업을 수행 :
1. 이제 가장자리가 mIntermediateMat에 있어야합니다 : 미안의 잘못이 때매트 객체에서 감지 된 픽셀을 찾는 방법은 무엇입니까?
Imgproc.Canny(mGraySubmat, mIntermediateMat, 50, 100);
저를 중지합니다.
2. mIntermediateMat의 모든 픽셀은 0 또는 255의 색상 값을 가져야합니다 (mIntermediateMat.get (x, y)를 사용하여 값을 가져옵니다).
3. mIntermediateMat.type() => 매트 [480 * 640 * CV_8UC1, isCont = TRUE, FALSE = 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이 최대이므로) -> 틀림
East : Pixel x, y = 342,388에서 255가 발견되었습니다 -> 틀림
웨스트 : 화면에서 벗어난 픽셀이 없습니다 ... -> 틀림
질문 : 무엇이 잘못 되었습니까? 내가 왜 걸 으면 가장자리 픽셀이 감지되지 않습니까?
중요 : 그림의 왼쪽과 왼쪽에는 100 픽셀 크기의 눈금이 있습니다. 원점은 왼쪽 상단에 있고 x, y = 100,350의 좌표는 오른쪽으로 100 픽셀, 아래로 350 픽셀입니다.