Проблема с подматрицей OpenCV (тип short)

У меня есть проблема при создании новой (под) матрицы, которая взята из более крупной матрицы, и я надеялся, что кто-то может протянуть мне руку помощи.

Я сузил проблему до следующего небольшого фрагмента кода:

cv::Mat* rightBestX;
rightBestX = new cv::Mat(4, 4, CV_16UC1); // short matrix

// fill rightBestX matrix with values

const cv::Rect r2(0, 0, 2, 2);
cv::Mat x = rightBestX->operator()(r2);
cv::Mat_<short> leftBestXRegion = x; // x is not equal to cv::Mat_<short>, according template<typename _Tp> inline Mat_<_Tp>& Mat_<_Tp>::operator = (const Mat& m)
//cv::Mat_<short> leftBestXRegion = results.leftBestX->operator()(r2);

Вышеуказанное работает для матриц с плавающей запятой, но не для коротких.

Идея состоит в том, чтобы НЕ копировать данные, а использовать ссылку на данные из rightBestX. Он успешно скопирован в x. Однако при выполнении последней строки кода она теряется (отличается от x). Также refcount 2 для х, но 1 для leftBestXRegion …

Опять же, это работает для поплавков. У кого-нибудь есть идеи, что тут может быть не так?

2

Решение

Попробуйте использовать ushort вместо short, Кроме того, проверьте, правильно ли вы заполняете свою матрицу (я просто говорю, что, потому что я запустил ее, и она отлично работает для меня даже с short)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]