gpt4 book ai didi

c++ - 将 cv::Mat 转换为 std::vector 并发症

转载 作者:行者123 更新时间:2023-11-28 01:33:30 34 4
gpt4 key购买 nike

<分区>

我必须处理一个 .PNG 文件。该处理将 std::vector 作为输入,我想将图像显示为灰度。所以我做了什么:

Mat img = imread("Image.PNG");
cvtColor(img, img, COLOR_RGB2GRAY);
imshow(windowName,img);

这张图片看起来不错,cout<<img<<endl;吐出 0 到 255 之间的实际值。然后我想将此 cv::Mat 转换为 std::vector

std::vector<double> imgvec;
imgvec.assign(img.begin<double>(), img.end<double>());

这些值现在都非常小(大约 1e-180)。为什么会发生这种情况,我该如何解决?

更新:

我按照@Swift-Friday Pie 的建议尝试了以下方法:

std::vector<double> imgvec;
if (img.isContinuous()){
imgvec.assign((double*)img.datastart, (double*)img.dataend);
}else{
for (int i = 0; i < img.rows; i++){
imgvec.insert(imgvec.end(), img.ptr<double>(i) + img.cols);
}
}

但是,这给了我以下错误:

no matching function for call to 'std::vector<double>::insert(std::vector<double>::iterator, double*)'

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