Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV子矩阵的问题(短型)_C++_Opencv_Matrix_Short_Submatrix - Fatal编程技术网

C++ OpenCV子矩阵的问题(短型)

C++ OpenCV子矩阵的问题(短型),c++,opencv,matrix,short,submatrix,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

我有一个问题,当创建一个新的子矩阵,是从一个更大的矩阵,我希望有人能帮我一把

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

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


同样,这适用于浮动。有人知道这里可能有什么问题吗?

尝试使用ushort而不是short。另外,请检查您是否正确填写了矩阵。我只是说,因为我运行了它,即使使用short,它也可以正常工作。请尝试使用ushort而不是short。另外,请检查您是否正确填写了矩阵。我只是说,因为我运行了它,它对我来说很好,即使使用short

也可以。难道您不能使用opencv的ROI感兴趣区域-用于您的目的的子矩阵吗?难道您不能使用opencv的ROI感兴趣区域-用于您的目的的子矩阵吗?是的,这就是答案!在我的实现中,我需要一个简短的示例,因此我使用OpenCV类型CV_16SC1而不是CV_CV_16UC1。万分感谢!是的,这就是答案!在我的实现中,我需要一个简短的示例,因此我使用OpenCV类型CV_16SC1而不是CV_CV_16UC1。万分感谢!