无法将图像的所有像素更改为所选颜色
Can't change all pixel of an image to selected color
我对此代码有问题,我不知道为什么它仅替换图像的第一个60像素(j从0到59),其他所有内容都不是(j in循环从60到360)。我刚刚进行了测试,它仍然是其他情况,但是它没有用我选择的颜色代替这些像素:
for (int i = 0; i < 40; i++)
{
for (int j = 0; j < 360; j++)
{
if (j > 300)
{
color_bar.at<Vec3b>(i, j)[2] = 0;
color_bar.at<Vec3b>(i, j)[1] = 255;
color_bar.at<Vec3b>(i, j)[0] = 0;
}
else if (j > 240)
{
color_bar.at<Vec3b>(i, j)[2] = 0;
color_bar.at<Vec3b>(i, j)[1] = 0;
color_bar.at<Vec3b>(i, j)[0] = 255;
}
else if (j > 180)
{
color_bar.at<Vec3b>(i, j)[2] = 0;
color_bar.at<Vec3b>(i, j)[1] = 255;
color_bar.at<Vec3b>(i, j)[0] = 0;
}
else if (j > 120)
{
putText(color_bar, "120", Point2f(2, 30), FONT_HERSHEY_PLAIN, 2, Scalar(0, 0, 255, 255));
color_bar.at<Vec3b>(i, j)[2] = 255;
color_bar.at<Vec3b>(i, j)[1] = 0;
color_bar.at<Vec3b>(i, j)[0] = 0;
}
else if (j > 60)
{
color_bar.at<Vec3b>(i, j)[2] = 0;
color_bar.at<Vec3b>(i, j)[1] = 255;
color_bar.at<Vec3b>(i, j)[0] = 0;
}
else
{
color_bar.at<Vec3b>(i, j)[2] = 0;
color_bar.at<Vec3b>(i, j)[1] = 0;
color_bar.at<Vec3b>(i, j)[0] = 255;
}
}
}
这是我的结果图像:结果
对不起,我的英语不好
打开图像后,我看到带有cols == 40的图片== 360,因此您应该使用
访问元素color_bar.at<Vec3b>(j,i)[..] = value;
j-是行,i-是col。
相关文章:
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 如何返回定义良好的内存部分?例如来自图像数据的像素的颜色值
- 访问和更改基于另一个图像的像素颜色-opencv c++
- 可视化 如何获取图像中像素的颜色(以C++ (sfml) 为单位)
- OpenCV 访问像素的颜色值
- 无法获取窗口 C++ 的像素颜色
- 如何使用 openCV 更改图像每个像素的颜色
- 用Xcb而不是Xlib抓取像素的颜色
- 无法在QImage上绘制或更改像素的颜色
- 为什么像素不改变颜色
- 如何使用stb_image将像素颜色数据写入 BMP 图像文件?
- 检测特定像素上的某种颜色并在检测到后发送点击的最快方法是什么?
- 无法将图像的所有像素更改为所选颜色
- 如何使用 glDrawPixel 时更改像素的颜色,我的像素始终为红色
- 如何在 QLabel 中以像素为单位放置颜色数据
- 获取 OpenGL 纹理中特定像素的颜色
- 根据OPENCV中一个通道中的一个值,查找最大颜色像素
- glsl-获取像素颜色[像素着色器]
- magick++修剪像素不是背景颜色(像素的顶部和底部的图像相同的颜色)