iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >OpenCV 基本图形绘制函数详解
  • 846
分享到

OpenCV 基本图形绘制函数详解

2024-04-02 19:04:59 846人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

用于绘制直线的line函数; 用于绘制椭圆的ellipse函数; 用于绘制矩形的rectangle函数; 用于绘制圆的circle函数; 用

  • 用于绘制直线的line函数;
  • 用于绘制椭圆的ellipse函数;
  • 用于绘制矩形的rectangle函数;
  • 用于绘制圆的circle函数;
  • 用于绘制填充的多边形的fillPoly函数。

#include <OpenCV2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;
using namespace std;

#define WINDOW_WIDTH 600 // 定义窗口大小的宏
#define WINDOW_NAME1 "原子图"        //为窗口标题定义的宏 
#define WINDOW_NAME2 "多边形图以及画线"        //为窗口标题定义的宏 


void DrawEllipse(Mat img, double angle)
{
    int thickness = 2; //  线宽
    int lineType = 8; // 线性,8 代表联通线性

    ellipse(img,
        Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),
        Size(WINDOW_WIDTH / 4, WINDOW_WIDTH / 16),
        angle, // 角度,0~360 度
        0,
        360,
        Scalar(255, 129, 0),
        thickness,
        lineType);
}


void DrawFilledCircle(Mat img, Point center)
    int thickness = -1; //  线粗-1,代表实心

    circle(img,
        center,
        WINDOW_WIDTH / 32,
        Scalar(0, 0, 255),


void DrawPolyGon(Mat img)
    int lineType = 8;

    // 创建一些点
    Point rookPoints[1][20];
    rookPoints[0][0] = Point(WINDOW_WIDTH / 4, 7 * WINDOW_WIDTH / 8);
    rookPoints[0][1] = Point(3 * WINDOW_WIDTH / 4, 7 * WINDOW_WIDTH / 8);
    rookPoints[0][2] = Point(3 * WINDOW_WIDTH / 4, 13 * WINDOW_WIDTH / 16);
    rookPoints[0][3] = Point(11 * WINDOW_WIDTH / 16, 13 * WINDOW_WIDTH / 16);
    rookPoints[0][4] = Point(19 * WINDOW_WIDTH / 32, 3 * WINDOW_WIDTH / 8);
    rookPoints[0][5] = Point(3 * WINDOW_WIDTH / 4, 3 * WINDOW_WIDTH / 8);
    rookPoints[0][6] = Point(3 * WINDOW_WIDTH / 4, WINDOW_WIDTH / 8);
    rookPoints[0][7] = Point(26 * WINDOW_WIDTH / 40, WINDOW_WIDTH / 8);
    rookPoints[0][8] = Point(26 * WINDOW_WIDTH / 40, WINDOW_WIDTH / 4);
    rookPoints[0][9] = Point(22 * WINDOW_WIDTH / 40, WINDOW_WIDTH / 4);
    rookPoints[0][10] = Point(22 * WINDOW_WIDTH / 40, WINDOW_WIDTH / 8);
    rookPoints[0][11] = Point(18 * WINDOW_WIDTH / 40, WINDOW_WIDTH / 8);
    rookPoints[0][12] = Point(18 * WINDOW_WIDTH / 40, WINDOW_WIDTH / 4);
    rookPoints[0][13] = Point(14 * WINDOW_WIDTH / 40, WINDOW_WIDTH / 4);
    rookPoints[0][14] = Point(14 * WINDOW_WIDTH / 40, WINDOW_WIDTH / 8);
    rookPoints[0][15] = Point(WINDOW_WIDTH / 4, WINDOW_WIDTH / 8);
    rookPoints[0][16] = Point(WINDOW_WIDTH / 4, 3 * WINDOW_WIDTH / 8);
    rookPoints[0][17] = Point(13 * WINDOW_WIDTH / 32, 3 * WINDOW_WIDTH / 8);
    rookPoints[0][18] = Point(5 * WINDOW_WIDTH / 16, 13 * WINDOW_WIDTH / 16);
    rookPoints[0][19] = Point(WINDOW_WIDTH / 4, 13 * WINDOW_WIDTH / 16);

    const Point* ppt[1] = { rookPoints[0] }; // 多边形定点集
    int npt[] = { 20 }; // 多边形定点数目

    fillPoly(img, 
        ppt, 
        npt, 
        1, 
        Scalar(255, 255, 255),  // 多边形颜色:白色


void DrawLine(Mat img, Point start, Point end)
    int thickness = 2;
    line(img,
        start,
        end,
        Scalar(0,0,0), // 黑色


int main(int arGC, char ** argv)
    Mat atomImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);
    Mat rookImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);

    // 椭圆绘制
    DrawEllipse(atomImage, 0);
    DrawEllipse(atomImage, 90);
    DrawEllipse(atomImage, 45);
    DrawEllipse(atomImage, -45);
    // 绘制圆心
    DrawFilledCircle(atomImage, Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2));


    // 绘制多边形
    DrawPolygon(rookImage);

    // 绘制矩形
    rectangle(rookImage,
        Point(0, 7 * WINDOW_WIDTH / 8),
        Point(WINDOW_WIDTH, WINDOW_WIDTH),
        Scalar(0, 255, 255),
        -1,
        8);

    // 绘制一些线段
    DrawLine(rookImage, Point(0, 15 * WINDOW_WIDTH / 16), Point(WINDOW_WIDTH, 15 * WINDOW_WIDTH / 16));
    DrawLine(rookImage, Point(WINDOW_WIDTH / 4, 7 * WINDOW_WIDTH / 8), Point(WINDOW_WIDTH / 4, WINDOW_WIDTH));
    DrawLine(rookImage, Point(WINDOW_WIDTH / 2, 7 * WINDOW_WIDTH / 8), Point(WINDOW_WIDTH / 2, WINDOW_WIDTH));
    DrawLine(rookImage, Point(3 * WINDOW_WIDTH / 4, 7 * WINDOW_WIDTH / 8), Point(3 * WINDOW_WIDTH / 4, WINDOW_WIDTH));

    // ---------------------------<3>显示绘制出的图像------------------------
    imshow(WINDOW_NAME1, atomImage);
    moveWindow(WINDOW_NAME1, 0, 200);
    imshow(WINDOW_NAME2, rookImage);
    moveWindow(WINDOW_NAME2, WINDOW_WIDTH, 200);

    waiTKEy(0);
    return(0);

运行:

参考:

《OpenCV3 编程入门》 毛星云 P104

到此这篇关于OpenCV 基本图形绘制函数的文章就介绍到这了,更多相关OpenCV 基本图形函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: OpenCV 基本图形绘制函数详解

本文链接: https://www.lsjlt.com/news/159658.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • OpenCV 基本图形绘制函数详解
    用于绘制直线的line函数; 用于绘制椭圆的ellipse函数; 用于绘制矩形的rectangle函数; 用于绘制圆的circle函数; 用...
    99+
    2024-04-02
  • OpenCV基本图形绘制函数有哪些
    本篇内容主要讲解“OpenCV基本图形绘制函数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“OpenCV基本图形绘制函数有哪些”吧!用于绘制直线的line函数;用于绘制椭圆的ellipse...
    99+
    2023-06-25
  • Python OpenCV实现基本图形绘制
    1.导入模块 import cv2 as cv import numpy as np 2.OpenCV绘图大致步骤 OpenCV 图形绘制步骤 (1)先定义基础画布canv...
    99+
    2024-04-02
  • AndroidFlutter利用CustomPaint绘制基本图形详解
    目录绘制矩形绘制圆形绘制椭圆绘制任意形状绘制弧形总结上一篇我们介绍了 CustomPaint 的基本概念和使用,可以看到 CustomPaint&nbs...
    99+
    2024-04-02
  • OpenCV绘制图形功能
    本文实例为大家分享了OpenCV绘制图形功能的具体代码,供大家参考,具体内容如下 1、绘制直线 绘制直线函数是cv::line,函数完整形式如下 void line(InputOut...
    99+
    2024-04-02
  • C++ OpenCV绘制几何图形
    本文实例为大家分享了C++ OpenCV绘制几何图形的具体代码,供大家参考,具体内容如下 绘制几何图形 直线 矩形 多边形 圆形 椭圆 ...
    99+
    2024-04-02
  • python数字图像处理之基本图形的绘制
    目录引言1、画线条2、画圆3、多边形4、椭圆5、贝塞儿曲线6、画空心圆7、空心椭圆引言 图形包括线条、圆形、椭圆形、多边形等。 在skimage包中,绘制图形用的是draw模块,不要...
    99+
    2024-04-02
  • Python-基本图形绘制及库引用
    turtle库的使用 概述:turtle(海龟)库是turtle绘图体系的python实现 turtle库的理解: -有一只海龟,其实在窗体正中心,在画布上游走 -走过的轨迹形成了绘制的图形 -海龟由程序控制,可以变换颜色,改变宽度 tu...
    99+
    2023-01-30
    图形 Python
  • matplotlib基本图形绘制操作实例
    目录matplotlib1.折线图2.散点图3.条形图4.直方图matplotlib matplotlib是最流行的python底层绘图库,接下来就由小编为大家介绍一些关于matpl...
    99+
    2022-12-08
    matplotlib 图形绘制 matplotlib 绘图
  • C++ opencv实现几何图形绘制
    目录1.矩形 rectangle()2. 圆 circle()3.椭圆 elliple()在学习过程中,我们可以在图像中绘制一些几何图形,比如矩形,椭圆,线段,填充多边形等,这些函数...
    99+
    2024-04-02
  • Android Flutter绘制扇形图详解
    目录简介CustomPaint介绍CustomPainter介绍paint介绍shouldRepaint介绍示例使用CustomPaint自定义Painter绘制触摸事件处理动画实现...
    99+
    2024-04-02
  • 怎么用OpenCV绘制图形功能
    这篇文章主要介绍“怎么用OpenCV绘制图形功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用OpenCV绘制图形功能”文章能帮助大家解决问题。1、绘制直线绘制直线函数是cv::line,函数...
    99+
    2023-06-26
  • Python pyecharts绘制条形图详解
    目录一、简介二、整理数据1、配置主题2、柱状图 Bar - Bar_base_dict_config3、样例数据 Faker.choose()4、滚动条 Bar - Bar_data...
    99+
    2024-04-02
  • python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
    目录实现方法1)画线段 cv.line2)画圆形 cv.circle3)画矩形 cv.rectangle4)画椭圆形 cv.ellipse5)添加文本 cv.putText最近学了下...
    99+
    2024-04-02
  • 怎么用C++ OpenCV绘制几何图形
    本篇内容介绍了“怎么用C++ OpenCV绘制几何图形”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!具体内容如下绘制几何图形直线矩形多边形圆...
    99+
    2023-06-25
  • Python+OpenCV绘制灰度直方图详解
    1.直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数...
    99+
    2024-04-02
  • Python OpenCV中如何进行图形绘制
    这篇文章将为大家详细讲解有关Python OpenCV中如何进行图形绘制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。背景使用OpenCV进行图形绘制是一种必备的技能,在图像的任务...
    99+
    2023-06-22
  • 如何使用html5 Canvas绘制基本的图形
    这篇文章主要介绍“如何使用html5 Canvas绘制基本的图形”,在日常操作中,相信很多人在如何使用html5 Canvas绘制基本的图形问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • 使用c++实现OpenCV绘制旋转矩形图形
    目录功能函数测试代码测试效果  功能函数 // 绘制旋转矩形 void DrawRotatedRect(cv::Mat mask,const cv::RotatedRe...
    99+
    2024-04-02
  • 绘制图形用什么python函数库
    python中使用turtle库绘制图形,具体方法如下:绘制一个正方形import turtle as tt.screensize(600,600."green")t.color("...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作