C++opencv修改一个点的颜色
时间: 2023-09-30 15:08:39 浏览: 335
opencv-基于c++实现的opencv图像处理算法之颜色空间变换RGBHSV.zip
要修改一个点的颜色,可以直接通过像素坐标访问图像中的像素值,并修改该像素的值。以下是一个示例代码:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("test.jpg");
// 修改坐标为 (100, 100) 的像素为红色
img.at<Vec3b>(100, 100) = Vec3b(0, 0, 255);
imshow("Image", img);
waitKey(0);
return 0;
}
```
在这个示例中,我们读入了一张图片,然后使用 `at` 函数访问了该图片中坐标为 (100, 100) 的像素,并将该像素的颜色修改为红色。注意,在 OpenCV 中,像素值的类型是 `Vec3b`,表示一个由 3 个无符号 8 位整数构成的向量,分别表示蓝色、绿色和红色通道的值。因此,我们将红色通道的值设为 255,而蓝色和绿色通道的值都设为 0,即可得到红色像素。
需要注意的是,如果修改的像素坐标超出了图像的范围,会导致程序崩溃。因此,在修改像素值之前,需要先判断像素坐标是否在图像范围内。另外,如果需要修改的是一个区域的像素值,可以使用 `Rect` 类型来表示该区域,并使用 `roi` 函数访问该区域的像素。
阅读全文