Opencv 用红色填充矩形,每 5 个像素应为黑色

问题描述

我是使用 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),~~~);将根据其他参数制作蓝色彩色矩形。因此,如果您想更改颜色,请根据需要更改这些值。

因此,如果您想重复更改矩形的颜色,我认为您肯定可以使用这两个参数进行循环。