c++ - opencv在访问像素点时终止运行
大家讲道理
大家讲道理 2017-04-17 15:30:29
0
2
570

我进行这样的操作:
image_backup_.at<Vec3b>(xpos + i, ypos + j - 1)[k]
就会终止程序,然后debug下发现call stack:定位到上一行image_backup_.at<Vec3b>(xpos + i, ypos + j - 1)[k]

CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]);

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(2)
阿神

at 함수의 매개변수가 x, y가 아닌 (행, 열)에 있어서 out-of-bounds 오류가 발생하므로 둘을 바꿔줘야 합니다.
x와 y를 사용해야 하는 경우 at(cv::Point(x,y))를 사용할 수 있습니다.
또한 opencv는 예외를 발생시킵니다. catch(std::Exception e)를 사용하여 예외를 포착하고 오류 정보를 볼 수 있습니다.

阿神

라는 이름의 함수에는 일반적으로 경계 검사가 있습니다. 여기서 확인은 CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]);이라는 어설션을 통해 구현됩니다. 표현 의미론에 따르면 어설션이 실패하는 이유는 좌표가 "i>=size" 범위를 벗어났기 때문입니다.

xpos iypos j - 1의 값 범위를 확인해주세요. 참고: 확인 시 unsigned 변환으로 인해 0보다 작은 값은 더 큰 값이 됩니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿