C++ opencv 图像几何形状绘制

1.普通几何绘制及原图融合

1.rectangle  矩形绘制

之前讲过了,略

示例代码

注:也可以不新建,直接在原图上面画

void QuickDemo::drawing_demo(Mat& image) {

	Rect rect;//关于rect坐标类,我们只要记住四个属性即可
	rect.x = 50;
	rect.y = 50;
	rect.width = 50;
	rect.height = 50;

	Mat dst = Mat::zeros(image.size(), image.type());
	rectangle(dst, rect, Scalar(0, 0, 255), -1, LINE_8, 0);

	imshow("绘制图形", dst);

}	


 

2.circle  绘制圆形

 
        共7个参数
            第1个参数 输入
            第2个参数 圆心点
            第3个参数 圆形半径
            第4个参数 圆形颜色
            第5个参数 线宽
            第6个参数 lineType  8和line8一样,一般都是
            第7个参数  缩小图像,同时缩短圆心与(0,0)位置的距离
                      0表示不变
                      1表示图像*1/2,同时距离(0,0)的x方向和y方向距离*1/2
                      2表示图像*(1/2)^2,同时距离(0,0)的x方向和y方向距离*(1/2)^2

示例代码 

void QuickDemo::drawing_demo(Mat& image) {

    Mat dst = Mat::zeros(image.size(), image.type());

    circle(dst, Point(100, 100), 50, Scalar(200, 0, 0), -1, 8, 0);

    imshow("绘制图形", dst);
}

3.ellipse 绘制椭圆
    

ellipse
    绘制椭圆
        共5个参数
            第1个参数 输入
            第2个参数 RotatedRect
            第3个参数 椭圆颜色
            第4个参数 线宽
            第5个参数 lineType
void QuickDemo::drawing_demo(Mat& image) {

	Mat dst = Mat::zeros(image.size(), image.type());

	RotatedRect rrt;

	rrt.center = Point(200, 200);	//椭圆的中心
	rrt.size = Size(100, 50);		//椭圆两个轴大小的一半
	rrt.angle = 0;				//椭圆的旋转角度

	ellipse(dst,rrt,Scalar(200,0,0),10,8);
	
	imshow("绘制图形", dst);
}

4.图像融合几何图形

接下来,这里演示一种很有意思的用法利用addWeighted融合几何图形与原图像

void QuickDemo::drawing_demo(Mat& image) {

    Mat dst = Mat::zeros(image.size(), image.type());

    RotatedRect rrt;

    rrt.center = Point(200, 200);    //椭圆的中心
    rrt.size = Size(100, 50);        //椭圆两个轴大小的一半
    rrt.angle = 0;                //椭圆的旋转角度

    ellipse(dst,rrt,Scalar(200,0,0),10,8);
    
    addWeighted(image, 0.7, dst, 0.3, 0, dst);
    
    imshow("绘制图形", dst);
}

可以看到,这种隐约的图形效果很nice,只在原图像上绘制图形是达不到这种效果的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 你可以使用以下代码来用QT软件用C语言一个圆形:QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.setPen(QPen(Qt::blue, 5, Qt::DashLine)); painter.setBrush(QBrush(Qt::red, Qt::SolidPattern)); painter.drawEllipse(100,100,100,100); ### 回答2: 使用QT软件,可以使用C++语言来绘制一个圆形的代码。以下是一个简单的示例: ```cpp #include <QApplication> #include <QWidget> #include <QPainter> class MyWidget : public QWidget { public: void paintEvent(QPaintEvent *) { QPainter painter(this); painter.setPen(Qt::black); painter.setBrush(Qt::red); painter.drawEllipse(50, 50, 100, 100); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.resize(200, 200); widget.show(); return app.exec(); } ``` 在这个示例中,我们创建了一个继承自QWidget的MyWidget类,并重写了它的paintEvent函数。在paintEvent函数中,我们使用了QPainter来绘制一个圆形,其中setPen函数设置了笔的颜色,setBrush函数设置了填充颜色,drawEllipse函数绘制了一个圆形。 在main函数中,我们创建了一个QApplication对象来管理应用程序。然后,我们创建了一个MyWidget对象,设置了窗口的大小,并显示出来。最后,通过调用app.exec()来运行应用程序的事件循环。 ### 回答3: 使用QT软件和C语言来一个圆形的代码,可以采用以下步骤: 1. 引入QT库文件和头文件。 2. 创建一个QT应用程序。 3. 定义一个自定义的QWidget类来绘制圆形。 4. 在QWidget类的构造函数中设置圆形的位置和大小。 5. 重写QWidget类的paintEvent()函数,在函数中使用QT库提供的绘图函数来一个圆形。 6. 在主函数中创建QWidget类对象并显示。 下面是一个简单的示例代码: ```c++ #include <QApplication> #include <QWidget> #include <QPainter> // 自定义QWidget类用于绘制圆形 class CircleWidget : public QWidget { public: CircleWidget(QWidget *parent = nullptr) : QWidget(parent) { } protected: void paintEvent(QPaintEvent *event) override { Q_UNUSED(event); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); // 抗锯齿 painter.setPen(Qt::NoPen); painter.setBrush(Qt::red); painter.drawEllipse(rect()); // 绘制圆形 } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建一个CircleWidget对象并显示 CircleWidget circleWidget; circleWidget.show(); return app.exec(); } ``` 以上代码使用QT库中的QPainter类来进行绘制,设置了绘图的属性如抗锯齿,笔颜色等。在paintEvent()函数中,使用了绘图函数drawEllipse()来绘制一个圆形。然后在主函数中,创建了CircleWidget对象并显示出来。 注意,以上代码仅为示例,实际使用时可能需要添加更多的功能和处理逻辑,例如设置圆的位置和大小等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打酱油的;

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值