OpenCV子矩阵问题(类型简称)

时间:2012-10-09 14:26:26

标签: c++ opencv matrix short submatrix

创建一个从更大的矩阵中获取的新(子)矩阵时我遇到了一个问题,我希望有人可以帮助我。

我已将问题缩小到以下小代码片段:

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的代码不同)。对于x,引用计数也是2,但对于leftBestXRegion ...

则为1

同样,这适用于花车。有谁知道这里有什么问题?

1 个答案:

答案 0 :(得分:0)

尝试使用ushort代替short。另外,请检查您是否正确填充了矩阵(我只是说,因为我运行它,即使使用short也适用于我)