gpt4 book ai didi

c++ - Opencv C++ 灰度图像黑色像素化结果(替换图像值时)

转载 作者:行者123 更新时间:2023-11-28 05:40:55 26 4
gpt4 key购买 nike

我是 opencv 的新手,我遇到了这个问题......

给定以下 Mat 类型(全局声明) 垫 src_gray; 垫dst;

我有 dst 是一个零灰度垫与这个初始化

dst=Mat::zeros(src_gray.size(), CV_BGR2GRAY);

似乎我无法编辑 dst 图像上的像素(当我使用 imwrite 时,它​​给我一个黑色图像,就好像我什么都没做一样)。这是我目前拥有的代码:

  for(int i=0;i<=dst.cols;i++)
for(int j=0;j<=dst.rows;j++)
{
dst.at<uchar>(j,i)=255;
}
imwrite( "img_res.png", dst );

结果Image有它应该有的尺寸,但是它是一个黑色像素的图片,它不应该是一个白色像素的Image吗?

我不知道如果我提到我有 3 个全局垫是否相关

Mat image;
Mat src_gray;
Mat dst;

哪些是这样初始化的:

image = imread( argv[1], 1 );

cvtColor( image, src_gray, CV_BGR2GRAY );

然后,我将它们发布为:

image.release();
dst.release();
src_gray.release();

我遇到的另一个问题是,当我释放 Mats(在执行期间)时,我收到“段错误(核心已转储)”错误。 (我从 Linux Ubuntu 发行版编码)

最佳答案

尝试:

dst=Mat::zeros(src_gray.size(), CV_8UC1);

当您使用 CV_BGR2GRAY 时,您正在创建一个具有 3 个颜色 channel 的垫子,然后,当您有一个数字数组(B、G、R)时,不可能分配一个数字。使用 CV_8UC1,您创建一个带有 1 个 uchar 颜色 channel 的垫子,然后它应该适用于:

dst.at<uchar>(j,i)=255;

关于c++ - Opencv C++ 灰度图像黑色像素化结果(替换图像值时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37102323/

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