Opencv C++ 灰度图像黑色像素化结果(替换图像值时)
Opencv C++ grayscale image black pixeled result (when replacing image values)
我是 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 );
结果图像具有应有的尺寸,但它是黑色像素图片,不应该是白色像素图像吗?
如果我提到我有 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();
我遇到的另一个问题是,当我释放垫子时(在执行期间),我收到 "Segmentation fault (core dumped)" 错误。 (我从 Linux Ubuntu 发行版编码)
尝试:
dst=Mat::zeros(src_gray.size(), CV_8UC1);
当您使用 CV_BGR2GRAY 时,您正在创建一个具有 3 个颜色通道的垫子,然后,当您有一个数字数组 (B、G、R) 时,无法分配一个数字。
使用 CV_8UC1,您创建一个带有 1 个 uchar 颜色通道的垫子,然后它应该适用于:
dst.at<uchar>(j,i)=255;
我是 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 );
结果图像具有应有的尺寸,但它是黑色像素图片,不应该是白色像素图像吗?
如果我提到我有 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();
我遇到的另一个问题是,当我释放垫子时(在执行期间),我收到 "Segmentation fault (core dumped)" 错误。 (我从 Linux Ubuntu 发行版编码)
尝试:
dst=Mat::zeros(src_gray.size(), CV_8UC1);
当您使用 CV_BGR2GRAY 时,您正在创建一个具有 3 个颜色通道的垫子,然后,当您有一个数字数组 (B、G、R) 时,无法分配一个数字。 使用 CV_8UC1,您创建一个带有 1 个 uchar 颜色通道的垫子,然后它应该适用于:
dst.at<uchar>(j,i)=255;