방금 이상한 문제가 발생했습니다. 내 클래스의 헤더에서 나는 다음과 같은 여러 cv::Mat
을 정의했습니다 :
img_cov = Mat::zeros(somemat.size(), CV_32FC(6))
이상한 일이 있다는 것입니다 :
코드에서 cv::Mat drawing, img_grad, img_bright, img_cov;
(VER1)
cv::Mat drawing, img_grad, img_bright, img_cov, img_notused;
(VER2)헤더에 cv :: Mat를 정의한 다음 다른 매트가 다중 채널을 피함
난 후 다음과 같은 img_cov 정의이 사용되지 않더라도, 내 img_cov
의 다른 채널에 액세스 할 수 없다고하더라도, 내 여러 매트의 헤더 선언 (위의 ver2 참조)에 다른 매트를 추가하면 0이됩니다. img_cov.at<float>(j, i, 1)
을 통해 충돌이 발생합니다.
위자료 할당 것으로 보입니다. 누군가 나에게 설명 할 수 있을까요?
감사합니다,하지만 난 내 첫 번째 게시물에 쓴 방법은 정말 잘못된 결과를 제공하지만, 왜에서 결과를 반환 않습니다 모든 내가 한 후 헤더에 다른 매트를 선언하지 주어진 액세스? 슬프게도 나는 코드 마스크에 ''을 넣지 않았기 때문에 사이트가 이런 식으로 표시하지 않았습니다. Ver2뿐만 아니라 "Ver1"에서도 가치있는 방식으로 액세스 할 수 있습니다. 그러나 이것이 위에서 언급 한 이상한 행동을 설명합니까? –
moatilliatta
내 길은 Ver1과 Ver2에서 제대로 작동하기 때문에 작동합니다. 너의 길은 우연히 만났어. 아마 컴파일러는 변수의 수에 따라 다른 메모리 레이아웃을 제공하며 할당 된 메모리의 한계에 더 가깝습니다. 그래도 반환 된 값은 Ver1 및 Ver2에서 잘못되어 시도하고 표시합니다. –
그래, 그들은 정말로 완전히 틀리고 매우 작다. 이상하게도 어딘가에'img_cov.at (j, i, 1)'명령에 대해 적색으로 표시되었지만 분명히 그것이 잘못된 흔적이었다. 감사! –
moatilliatta