问题描述
我是使用 C++ 的 Opencv 初学者。我必须在图像中间绘制一个填充的矩形(10x10),其中每 5 个像素为黑色。
我知道如何创建一个矩形。但是我如何填充它并改变每 5 个像素的颜色? 如果有人可以提供帮助,那就太好了:/
void cv::rectangle ( InputOutputArray img,Point pt1,Point pt2,const Scalar & color,int thickness = 1,int lineType = LINE_8,int shift = 0
)
到目前为止我的代码:
#include "opencv2/opencv.hpp"
#include<sstream>
using namespace std;
using namespace cv;
int main(void)
{
//Laden vom Bild
Mat img;
img = imread("C:\\Users\\Mehmet\\Desktop\\yoshi.png");
if (!img.data)
{
cout << "Could not find the image";
return -1;
}
namedWindow("window");
imshow("window",img);
imwrite("C:\\Users\\Max Mustermann\\Desktop\\11.png",img);
cv::Size sz = img.size();
int imageWidth = sz.width;
int imageHeight = sz.height;
cout <<"Es gibt " <<img.channels()<<" Farbkanäle" << endl;;
cout << "Die Breite betreagt: "<<sz.width << endl;
cout <<"Die Hoehe betreagt: " << sz.height<<endl;
std::cout << img.type();
Mat img1;
img.convertTo(img1,CV_32FC3,1 / 255.0);
waitKey(0);
return 0;
}
```
解决方法
您或许可以在 opencv 文档中找到问题的答案。
要填充矩形,您可以更改参数 'thickness'
==> 'thickness 构成矩形的线条的粗细。 负值,如 FILLED,意味着函数必须绘制一个实心矩形。'
链接: https://docs.opencv.org/4.5.2/d6/d6e/group__imgproc__draw.html#ga07d2f74cadcf8e305e810ce8eed13bc9
而且,可以通过颜色参数来改变颜色。使用 cv::Scalar(BLUE,GREEN,RED) 可以轻松控制此参数。
例如矩形(~~~,cv::Scalar(255,0),~~~);将根据其他参数制作蓝色彩色矩形。因此,如果您想更改颜色,请根据需要更改这些值。
因此,如果您想重复更改矩形的颜色,我认为您肯定可以使用这两个参数进行循环。