gpt4 book ai didi

c++ - 在 vector 中存储非零元素的坐标时 findnonzero() 出错

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

我试图将 Mat img1 的非零元素索引存储到 vector vp1 中,但它显示了 cv::Exception at memory location 错误。当垫子不包含任何非零元素时会发生这种情况。示例代码如下。从 img 中找到非零元素索引并存储在 vp 中是成功的,但是从 img1 到 vp1 中存储非零元素索引显示错误。解决此问题的任何帮助将不胜感激。我只需要点 vector 中的坐标,因为我的算法的其余部分是基于它运行的。

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main() {
Mat img(10, 10, CV_8U, Scalar::all(0));
img.at<uchar>(0,2)=1;
vector<Point> vp;
findNonZero(img, vp);

Mat img1(10, 10, CV_8U, Scalar::all(0));
vector<Point> vp1;
findNonZero(img1, vp1);

return 0;
}

最佳答案

此错误是因为 cv::Mat 中没有非零元素。我认为它已在更新版本中得到纠正。

虽然它增加了复杂性,但我给出了一个简单的解决方案(正如@berak 在评论中解释的那样)

vector<Point> locations;
int count = countNonZero(binaryMat);
if(count < 0)
{
findNonZero(binaryMat,locations);
}

关于c++ - 在 vector<Point> 中存储非零元素的坐标时 findnonzero() 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24953187/

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