gpt4 book ai didi

c++ - 在 OpenCV C++ 中将彩色图像中的像素 (i,j) 设置为黑色

转载 作者:行者123 更新时间:2023-11-28 00:11:21 25 4
gpt4 key购买 nike

我希望对彩色图像进行分割,以尝试识别某些特征。如果像素不符合某些决策规则,我希望将其设置为黑色,否则我想让像素与第一次读取时完全相同。

我正在使用以下方式读取图像:

Mat apples = imread("C:/Users.......", CV_LOAD_IMAGE_COLOR); 

到目前为止,我的尝试是将第 i 行和第 j 列的像素设置为黑色:

apples.at<uchar>(i,j) = 0;

其中,当遍历图像的所有行和列时,似乎跳过了图像的 2/3。

我也试过:

Vec3b black;

black[0] = 0;
black[1] = 0;
black[2] = 0;

apples.at<Vec3b>(i,j) = black;

这似乎几乎将图像过滤为。任何帮助,将不胜感激!

编辑我按如下方式遍历图像矩阵:

 for(int i=0;i<apples.rows;i++)
{
for(int j=0;j<apples.cols;j++)
{
if(applescopy[0].at<uchar>(i,j) == 0 || applescopy[1].at<uchar>(i,j) == 0 || applescopy[2].at<uchar>(i,j) == 0 )
{
apples.at<Vec3b>(i,j) = black;
}
}
}

如果我删除第二个 for 末尾的“if”语句并设置 apples.at uchar (i,j) = 0;无条件地,只有左三分之一的图像会变黑。

edit 2 我相信我在原始彩色图像上使用“拆分”似乎修改了原始彩色图像。从那以后,我复制了它以供在循环中使用,并且得到了更多预期的结果,谢谢大家!

最佳答案

在特定条件为真后,将像素值分配给彩色图像中的白色。我已将其更改为白色,您可以通过将 255 替换为 0 将其设置为黑色。下面的代码片段将完成这项工作。

#include <opencv\cv.h>
#include<highgui\highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main( ) {

Mat originalImage = imread("5.jpg", CV_LOAD_IMAGE_UNCHANGED);

if (originalImage.empty()){
cout << "Error : Image cannot be loaded..!!" << endl;
return -1;
}

for(int i=0;i<originalImage.rows;i++)
{
for(int j=0;j<originalImage.cols;j++)
{
if(originalImage.at<cv::Vec3b>(i,j)[0] == 0 || originalImage.at<cv::Vec3b>(i,j)[1] == 0 || originalImage.at<cv::Vec3b>(i,j)[2] == 0 )
{
//originalImage.at<Vec3b>(i,j) = 255;
originalImage.at<cv::Vec3b>(i,j)[0]=255; // change it to white
originalImage.at<cv::Vec3b>(i,j)[1]=255;
originalImage.at<cv::Vec3b>(i,j)[2]=255;
// cout << i<<" " <<j<< endl;
}
}
}
imwrite("result.png",originalImage);
namedWindow("MyWindow",CV_WINDOW_AUTOSIZE);
imshow("MyWindow", originalImage);
waitKey(0);
destroyWindow("MyWindow");
return 0;
}

希望这就是您所需要的!!让我知道。

关于c++ - 在 OpenCV C++ 中将彩色图像中的像素 (i,j) 设置为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32961007/

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