gpt4 book ai didi

c++ - OpenCV 子矩阵问题(短类型)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:59:03 25 4
gpt4 key购买 nike

我在创建一个取自更大矩阵的新(子)矩阵时遇到问题,我希望有人能帮我一把。

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

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);

以上似乎适用于 float 类型的矩阵,但当我使用 short 时则不行。

想法是不复制数据,而是使用来自 rightBestX 的数据引用。它已成功复制到 x。但是,在执行最后一行代码时,它丢失了(与x不同)。此外,x 的引用计数为 2,而 leftBestXRegion 的引用计数为 1...

同样,这适用于 float 。有谁知道这里可能出什么问题吗?

最佳答案

尝试使用 ushort 而不是 short。另外,检查一下你是否正确填充了矩阵(我只是这么说,因为我运行了它,即使使用 short,它对我来说也能正常工作)

关于c++ - OpenCV 子矩阵问题(短类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12802246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com