Проблема с подматрицей 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);
Вышесказанное, похоже, работает для матриц с плавающим типом, но не тогда, когда я использую short.
Идея заключается в том, чтобы не копировать данные, а использовать ссылку на данные из rightBestX. Он успешно копируется в x. однако при выполнении последней строки кода он потерянный (в отличие от x). Также refcount равен 2 для x, но 1 для leftBestXRegion...
Опять же, это работает для поплавков. Кто-нибудь знает, что здесь может быть не так?