opencv:图形绘制与填充

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3);

    // 相关绘制的API
    /* line 参数说明:
        1. 在哪个图像上绘制
        2. 起点
        3. 终点
        4. 颜色
        5. 线宽
        6. type:绘制模式,LINE_AA反锯齿,LINE_8就是8
        7. 水平位移,默认0,一般用不到
    */
    line(canvas, Point(0, 0), Point(200, 200), Scalar(0,0,255), 5, LINE_8);
    Rect rect(100, 100, 200, 200);
    rectangle(canvas, rect, Scalar(255, 0, 0), 4, LINE_8);
    circle(canvas, Point(256, 256), 100, Scalar(0, 255, 0), 1, 8);
    RotatedRect rrt;
    rrt.center = Point2f(256, 256);
    rrt.angle = 45; // 这里是角度
    rrt.size = Size(100, 200);
    ellipse(canvas, rrt, Scalar(0, 255, 255), 1, 8);

    //线宽如果为-1,则会变成填充模式

    namedWindow("canvas", WINDOW_AUTOSIZE);
    imshow("canvas", canvas);

    // 绘制随机形状
    Mat image = Mat::zeros(Size(512, 512), CV_8UC3);
    int x1 = 0, y1 = 0;
    int x2 = 0, y2 = 0;
    RNG rng(12345);
    while (true) {
        x1 = (int)rng.uniform(0, 512);
        x2 = (int)rng.uniform(0, 512);
        y1 = (int)rng.uniform(0, 512);
        y2 = (int)rng.uniform(0, 512);

        int w = abs(x2 - x1);
        int h = abs(y2 - y1);
        rect.x = x1;
        rect.y = y1;
        rect.width = w;
        rect.height = h;

        image = Scalar(0, 0, 0);
        Scalar color(rng.uniform(0, 256), rng.uniform(0, 256), rng.uniform(0, 256));

        rectangle(image, rect, color, 1, 8);
        //line(image, Point(x1, y1), Point(x2, y2), Scalar(rng.uniform(0, 256), rng.uniform(0, 256), rng.uniform(0, 256)), 1, 8);
        imshow("image", image);
        char c = waitKey(10);
        if (c == 27) {
            break;
        }
    }

    waitKey(0);
    destroyAllWindows();

    return 0;
}

原文地址:https://www.cnblogs.com/wbyixx/p/12244309.html

时间: 2024-10-03 23:47:19

opencv:图形绘制与填充的相关文章

OpenCV基础(五)---图形绘制

图形绘制 OpenCV提供了直线,矩形,圆,椭圆的绘制函数,下面介绍用法 直线绘制:line() 函数原型: void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0); 参数声明: InputOutputArray img:输出图像 Point pt1:线段的第一个点 Point pt2:线段

iOS:quartz2D绘图(给图形绘制阴影)

quartz2D既可以绘制原始图形,也可以给原始图形绘制阴影. 绘制阴影时,需要的一些参数:上下文.阴影偏移量.阴影模糊系数 注意:在对绘制的图形做了绘制阴影处理前,需要先对上下文进行保存,绘制阴影成功后,还要对上下文进行复位.目的是为了不影响后面的绘图操作. 举例的阴影绘制实例如下: 1.自定义一个视图类DemoView,并将控制器的视图关联该自定义类,同时在该定义类中重写- (void)drawRect:(CGRect)rect,将绘制无阴影图形和绘制阴影图形的调用方法写在里面.     

【Windows编程】系列第五篇:GDI图形绘制

上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数百个API可供我们使用,本篇把最常用的GDI绘图做一个讲解.GDI可以绘制点.直线曲线.填充封闭区域.位图以及文本,其中文本部分已经在上一篇中将了,请参考[Windows编程]系列第三篇:文本字符输出. 跟前面的GDI对象一样,本篇的这些绘图函数也必须要设备上下文句柄(HDC)作为函数参数,从前文我

Quartz2D--iOS下的图形绘制

一.基本介绍 Quartz 2D是一个二维绘图引擎,Quartz 2D的API是C语言,来自CoreGraphics框架,没有面向对象的思想. 1.作用:绘制图形:线条.三角形.矩形.圆.弧等 绘制文字 绘制.生成图片(图形) 读取.生成PDF 截图.裁剪图片 自定义UI控件 2.图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:1.保存绘图信息.绘图状态 2.决定绘制的输出目标(绘制到什么地方,输出目标可以是PDF文件.Bitmap或者

图形绘制-线段绘制相关

最近公司的项目要用到一些图表效果,本来也打算在github上找一些第三方.然而第三方的风格与公司的需求不尽相同,改动起来较麻烦.于是自己写了一个,并且通用化,现已共享至github上.一下是自己的一些开发历程. 1.刚起手的时候,想完全用Quartz2D来绘制,然而Quartz2D只能绘制一些基本的图形,并不能达到路径绘制的动画效果.想要完全用UIBezierPath(UIBezierPath实际上也是使用OC语法将Quartz2D封装而成,使用更加方便)绘制,有觉得大材小用了,最终觉得使用Qu

android游戏开发中图形绘制:Canvas和Paint的使用

android游戏开发中,使用android.graphics中的类来绘制2D向量图和文字. 一 画布Canvas 在Android中的绘图应该继承View组件,并重写它的onDraw(Canvas canvas)方法. Canvas代表指定View上的画布,常用方法如图: 二 画刷Paint Paint代表Canvas上的画刷,主要用于绘制风格,包括画刷颜色.画刷笔触粗细.填充风格等. 大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关. 常用方法如图: 三 路径Path Path表示

HTML5图形绘制学习(1)-- Canvas 元素简介

Canvas元素是HTML5中新增的一个专门用来进行图形绘制的元素.和其名称Canvas一样,它就相当于一个画布,我们可以在其上描绘各种图形. 这里所说的绘制图型,不是指我们可以进行可视化的图形绘制,而是要利用javascript在其中进行进行操作. 这里做个简单的canvas实例: 1.在页面中添加canvas元素 首先在页面中添加canvas元素,需要给定其高度.宽度和唯一标识id<!doctype html> <html lang="en"> <he

图形绘制 Canvas Paint Path 详解

图形绘制简介        Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.graphics和android.graphics.drawable包中.他们提供了图形处理相关的Canvas.ColorFilter.Point.RetcF等类,还有一些动画相关的AnimationDrawable.BitmapDrawable.TransitionDrawable等.       以图形

QT 基本图形绘制

QT 基本图形绘制 1.告诉绘制引擎一些东西 QPainter::Antialiasing 在可能的情况下,反锯齿       QPainter::TextAntialiasing 在可能的情况下,文字反锯齿       QPainter::SmoothPixmapTransform   采用平滑的Pixmap变换算法 2.绘制函数 3.风格 1)画刷风格 2)画笔风格 3)画笔连接点风格 4)顶端风格 4.绘图前的准备 1  如果要在绘图设备(一般为窗口部件)上绘图,只需创建一个QPainte