精华内容
下载资源
问答
  • Python 用 OpenCV 画椭圆 (5)

    千次阅读 2018-11-13 21:38:13
    利用 OpenCV 自带 ellipse() 函数画椭圆并显示,其函数声明如下: cv2.ellipse(img, center, axes, rotateAngle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) img:要画圆所在矩形或...




    利用 OpenCV 自带的 ellipse() 函数画椭圆 并显示,其函数声明如下:

    cv2.ellipse(img, center, axes, rotateAngle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) 
    
    • img:要画的圆所在的矩形或图像
    • center:椭圆的中心点
    • axes:椭圆的长半轴和短半轴的大小
    • rotateAngle:椭圆的旋转角度
    • startAngle:椭圆弧的起始角度
    • endAngle:椭圆弧的终止角度
    • color:线条颜色,如 (0, 0, 255) 红色,BGR
    • thickness:线条宽度
    • lineType
      • 8 (or omitted) : 8-connected line
      • 4:4-connected line
      • CV_AA - antialiased line
    • shift:坐标点小数点位数

    画椭圆的完整代码如下:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    """
    @Time    : 2018-11-13 21:20
    @Author  : jianjun.wang
    @Email   : alanwang6584@gmail.com
    """
    
    import numpy as np
    import cv2 as cv
     
    img = np.zeros((320, 320, 3), np.uint8) #生成一个空灰度图像
    print img.shape # 输出:(320, 320, 3)
    
    
    
    # 绘制一个红色椭圆
    ptCenter = (160, 160) # 中心点位置
    axesSize = (100, 45) # 长轴半径为 90,短轴半径为 60
    rotateAngle = 90 # 旋转角度为 90
    startAngle = 0
    endAngle = 360
    
    point_color = (0, 0, 255) # BGR
    thickness = 1 
    lineType = 4
    cv.ellipse(img, ptCenter, axesSize, rotateAngle, startAngle, endAngle, point_color, thickness, lineType)
    
    
    
    # 绘制一个绿色椭圆
    ptCenter = (160, 160) # 中心点位置
    axesSize = (90, 60) # 长轴半径为 90,短轴半径为 60
    rotateAngle = 0 # 旋转角度为 0
    startAngle = 0
    endAngle = 360
    
    point_color = (0, 255, 0) # BGR
    thickness = 1 
    lineType = 4
    cv.ellipse(img, ptCenter, axesSize, rotateAngle, startAngle, endAngle, point_color, thickness, lineType)
    
    
    
    # 绘制一个蓝色上半椭圆
    ptCenter = (160, 60) # 中心点位置
    axesSize = (100, 45) # 长轴半径为 90,短轴半径为 60
    rotateAngle = 0 # 旋转角度为 90
    startAngle = 180
    endAngle = 360
    
    point_color = (255, 0, 0) # BGR
    thickness = 1 
    lineType = 4
    cv.ellipse(img, ptCenter, axesSize, rotateAngle, startAngle, endAngle, point_color, thickness, lineType)
    
    
    cv.namedWindow("AlanWang")
    cv.imshow('AlanWang', img)
    cv.waitKey (10000) # 显示 10000 ms 即 10s 后消失
    cv.destroyAllWindows()
    

    运行后效果如下:
    在这里插入图片描述

    原文英文文档
    本文地址

    Python 安装 OpenCV 及显示图像 (1)

    Python 用 OpenCV 画点和圆 (2)

    Python 用 OpenCV 画直线 (3)

    Python 用 OpenCV 画矩形 (4)

    Python 用 OpenCV 画椭圆 (5)

    Python 用 OpenCV 显示文字 (6)

    展开全文
  • 1. void ellipse(InputOutputArray img, Point center, Size axes, double angle,...ellipse函数椭圆画到图像 lmg 上, 椭圆中心为点center,并且大小位于矩形 axes 内,椭圆旋转角度为 angle, 扩展弧度从 0 度到
  • !... 代码是 CBrush *brush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); pDC->SelectObject(brush); memDC.Ellipse(ell.p1.x, ell.p1.y, ell.p2.x, ell.p2.y);...我也加过 pDC->SelectObject...
  • OpenCV提供了一些基本绘图操作,比如画圆,画椭圆,画线,画矩形,在图像里插入文字等功能。 画圆使用是circle函数,必须提供参数是:画在出圆显示在哪里,圆心,半径,以及画线颜色。 [cpp] view...

    OpenCV提供了一些基本的绘图操作,比如画圆,画椭圆,画线,画矩形,在图像里插入文字等功能。

    画圆使用的是circle函数,必须提供的参数是:画在出的圆显示在哪里,圆心,半径,以及画线的颜色。

    1. //圆心  
    2. Point center = Point(255,255);  
    3. //半径  
    4. int r = 100;  
    5. //承载图像  
    6. Mat picture(500,500,CV_8UC3,Scalar(255,255,255));  
    7. //参数为:承载的图像、圆心、半径、颜色、粗细、线型  
    8. circle(picture,center,r,Scalar(0,0,0));  
    9. imshow("底板",picture);  


     

    其中可以通过把线的粗细设置为-1来画实心的图形。

    画椭圆的使用的是ellipse函数,参数比较复杂:

    1. //参数为:承载的图像、圆心、长短轴、径向夹角(水平面到长轴的夹角)、起始角度(长轴到起始边沿的夹角)、结束角度(长轴到结束点的夹角)、倾斜的矩形(可选项)、颜色、粗细、线性、偏移  
    2. ellipse(picture,center,Size( 250, 100 ),0,30,240,Scalar(0,0,0));  


     

    画线使用line函数就简单多了,只需要知道起点和终点就行了。

    1. //画线  
    2. Point a = Point (600,600);  
    3. //参数为:承载的图像、起始点、结束点、颜色、粗细、线型  
    4. line(picture,a,center,Scalar(255,0,0));  
    5. imshow("底板",picture);  


     

    只得注意的是,“画板”是500*500的,而我把结束点设为了(600,600),这样做的不会报错,绘图的结果是根据画板的大小裁剪掉显示不出来的部分。

     

    画矩形也比较简单,使用rectangle,需要知道的左上和右下角(与cv::rect定义的矩形不一样,rect是左上角点和矩形长宽)

    1. //画矩形  
    2. //参数为:承载的图像、顶点、对角点、颜色(这里是蓝色)、粗细、大小  
    3. rectangle(picture,a,center,Scalar(255,0,0));  
    4. imshow("底板",picture);  


     

    如前所述,右下角在画板外会使矩形显示不全。

    在图像里插入文字使用putText函数:

    1. //插入文字  
    2. //参数为:承载的图片,插入的文字,文字的位置(文本框左下角),字体,大小,颜色  
    3. string words= "good luck";  
    4. putText( picture, words, Point( picture.rows/2,picture.cols/4),CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 0, 0) );  
    5. imshow("底板",picture);  
    这里文字为蓝色,因为OpenCV中三彩色通道的顺序是BGR而不是RGB。
    展开全文
  • OpenCV里用ellipse画椭圆

    千次阅读 2019-12-27 10:22:23
    OpenCV里绘制椭圆,需要使用到ellipse函数,这个函数在这里是比较复杂的参数,要一下子了解它是不容易的事情,先来看一下OpenCV里是怎么样定义它...从上图可以看到img是要绘制图像,center是椭圆的中心点,axes是...

    在OpenCV里绘制椭圆,需要使用到ellipse函数,这个函数在这里是比较复杂的参数,要一下子了解它是不容易的事情,先来看一下OpenCV里是怎么样定义它的,如下图:

    从上面函数可以看到,在这里参数非常多,要理解每一个函数的作用,需要熟悉下面的示意图:

    这个函数不仅可以绘制椭圆,还可以绘一段椭圆弧,或者椭圆扇区。从上图可以看到img是要绘制图像,center是椭圆的中心点,axes是表示椭圆半轴的长短,也就是上图中的AXES WIDTH、AXES HEIGHT,angle是表示椭圆顺时针旋转的角度,从上图可以看到X轴与FIRST AXIS的夹角就是该角度,startAngle是表示第一主轴与椭圆弧的开始夹角,上图青色指示;endAngle是表示表示第一主轴与椭圆弧的结束的夹角;color是表示椭圆显示颜色;thickness是表示绘制椭圆线宽或填充;lineType是表示画线的算法;shift是表示坐标是否使用定点浮点数。

     

    从上面看到一大堆参数,还是比较难理解的话,现在就来开始对这个函数进行实操了,这样会深入地理解参数的作用:

    cv2.ellipse(img, (100,100), (50,20), 0, 0, 360, (255,255,255))

    这行代码就是在图像img里,椭圆中心的坐标为(100,100),第一半轴为50,第二半轴为20,第一半轴与X轴方向夹角为0度,椭圆弧为0到360度,颜色为白色。结果输出如下图:

     

    接着下来画一个与X轴有夹角的椭圆:

    cv2.ellipse(img, (100,200), (50,20), 10, 0, 360, (0,255,255))

    在这里把椭圆圆心换一个位置,然后改变angle的角度为10度,颜色改为黄色,结果显示如下图:

     

    cv2.ellipse(img, (100,300), (50,20), 10, 0, 180, (0,255,255))

    接着修改为只绘0到180度的椭圆弧,结果显示如下图:

     

    cv2.ellipse(img, (100,400), (50,20), 10, 0, 270, (0,255,255), thickness=cv2.FILLED)

    接着修改为0到270度的椭圆扇区填充方式,结果显示如下图:

     

    最后我们看一下,用中心点、长短轴和旋转角度可以构造一个旋转盒,用这个也可以表示一个内接椭圆出来,如下函数定义:

    可见要使用这个函数,必须构造一个RotatedRect,而RotatedRect的构造函数定义如下:

    因此可以使用元组来表示这个旋转盒:((x,y),(width,height),angle),于是代码如下来写:

    box = ((300,100), (50,20), 20)

    cv2.ellipse(img, box, (0,0,255), thickness=cv2.FILLED)

    结果输出如下图:

    在最后这种函数的方式,没有椭圆弧的开始和结束位置,所以不能绘部分弧,到这里我们终于完全理解了椭圆函数的使用,整个完整的演示代码如下:

    #python 3.7.4,opencv4.1
    #蔡军生 https://blog.csdn.net/caimouse
    #9073204@qq.com
    #
    import numpy as np
    import cv2
    from matplotlib import pyplot as plt
    
    #
    width = 600
    height = 500
    img = np.zeros((height, width,3),dtype='uint8')
    
    #
    cv2.ellipse(img, (100,100), (50,20), 0, 0, 360, (255,255,255))
    cv2.ellipse(img, (100,200), (50,20), 10, 0, 360, (0,255,255))
    cv2.ellipse(img, (100,300), (50,20), 10, 0, 180, (0,255,255))
    cv2.ellipse(img, (100,400), (50,20), 10, 0, 270, (0,255,255), thickness=cv2.FILLED)
    
    box = ((300,100), (50,20), 20)
    cv2.ellipse(img, box, (0,0,255), thickness=cv2.FILLED)
    
    cv2.imshow('ellipse',img)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

     

    展开全文
  • 示例代码均来自OpenCV官方文档 ...cv2.ellipse() #一个椭圆 cv2.putText() #给图像加入文字以上函数均有多个参数,并且排列顺序基本类似,基本如以下所示: (1)img:你想要绘图图像; (2)color:绘制图形

    示例代码均来自OpenCV官方文档
    主要函数:

    cv2.line()      #画一条线
    cv2.circle()    #画一个圆
    cv2.rectangle() #画一个矩形
    cv2.ellipse()   #画一个椭圆
    cv2.putText()   #给图像加入文字

    以上函数均有多个参数,并且排列顺序基本类似,基本如以下所示:
    (1)img:你想要绘图的图像;
    (2)color:绘制图形的颜色。以(B,G,R)的顺序排列,传入一个元组,如:(255,0,0)代表蓝色。对于灰度图像,只需要写入灰度值;
    (3)线宽:绘制图形的线条的粗细,如果给一个闭合图形赋值为 -1,那么这个图形就会被填充。默认值 = 1;
    (4)线条的类型:8连接或者抗锯齿等,设置为 8 或者 cv2.LINE_AA,建议设置为抗锯齿型(cv2.LINE_AA),这样线条看起来比较圆滑。

    以上参数为绘图函数的通用参数,即每一个绘图函数都会用到,但是具体使用函数的过程中,参数还需要做出略微的修改,简单举例说明一下:

    通用部分

    import cv2
    import numpy as np
    img = np.zeros((512,512,3),np.uint8)  #创建一块 512 * 512 的黑色区域

    画一条线:

    cv2.line(img,(0,0),(511,511),(255,0,0),5)

    这段代码中参数分别代表:

    img:在img这个图像中进行图形绘制;
    (0,0):所绘制线条的起点坐标;(以图像的左上角为坐标原点,向右及向下均为坐标轴正方向)
    (511,511):绘制线条的重点坐标位置;
    (255,0,0):线条的颜色;(参照(B,G,R)的顺序,且颜色为8位)
    5:线条的宽度。

    参数中没有设置线条类型,所以使用默认参数,如果想设置,可以自行加上去,方法参考上面所述内容。

    画一个矩形:

    cv2.circle(img,(384,0),(510,128),(0,255,0),3)

    和上面画线条不同的是,(384,0)(510,128)这两个坐标分别是矩形的左上角和右下角的坐标值。

    同样,画出一个圆形:

    cv2.circle(img,(447,64),63,(0,0,255),-1)

    代码中的(447,63)指的是圆形图形的圆心位置,63这个参数代表的是圆形的半径,-1上面已经说过了,表示圆形图形被填充。
    我们不执行代码,通过计算也能得出,绘制的圆形正好是之前绘制的矩形的内接圆。

    继续,我们在同一幅图像上绘制一个椭圆:

    椭圆的绘制比较麻烦,需要的参数包括:椭圆中心点的位置,接下来分别是长轴和短轴的长度,椭圆沿逆时针方向转到的角度(0~90),椭圆弧沿顺时针方向起始的角度,结束角度(0~360)。

     cv2.ellipse(img,(256,256),(100,50),0,0,180,(255,0,0),-1)

    接下来,绘制一个多边形:

    绘制多边形没有固定的函数来完成这个工作,因此我们需要借助矩阵来完成多边形的绘制。
    绘制多边形的时候,我们需要根据绘制图像的不同,分别指定多边形每个顶点的坐标位置,例如:

    pts = np.array([[10,5],[20,30],[70,20],[51,10]],np.int32)
    pts = pts.reshape((-1,1,2))
    img = cv2.polylines(img,[pts],True,(0,255,255))

    如果在上面代码中第三个参数的值设置为False,那么得出的多边形不是首尾相连的图形,具体可以实际操作一下看看。

    在图像中添加文字:

    在图像中添加文字需要的参数分别是:
    需要添加的文字;
    文字添加的位置;
    字体的类型;(可以在cv2.outText()文档中查到相应的字体)
    字体的大小;
    文字的一般属性(颜色、线条的粗细及线条的类型等),依据实际情况进行选择。

    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img,"Hello",(10,500),font,4,(255,255,255),2)

    首先我们定义了字体的选择,同样也可以直接在函数中设定,(10,500)这个坐标是插入文字的左上角的坐标值。

    注意
    所有的绘图函数的返回值都是None,因此,img = cv2.line(img,(0,0),(511,511),(255,0,0),5)这种是不能使用的。

    以上内容,我们可以通过修改参数等方式熟悉一下绘图函数的具体使用方法。

    展开全文
  • 圆形绘制 :OpenCV中使用circle(img,center,radius,color,thickness=None,lineType=None,shift=None)函数来绘制圆形import cv2import numpy as npimage=np.zeros((400,400,3),np.uint8)cv2.circle(image,...
  • 下面提供一下例子,是Opencv安装以后自带小程序,学习完现在程序你可以学会以下知识:(1)生成随机数,使用RNG类(2)画线(3)画矩形(4)画椭圆(5)画圆(6)输出文字、文本(7)如果不熟悉Opencv的还能学会...
  • 使用 OpenCV 绘制不同几何图形,其中包括的函数有 cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2.putText() 以上函数均需要接受以下参数: img:图片的路径; color:形状的颜色。以 RGB ...
  • //时间:2015年6月11日 ...//cvEllipse:画椭圆 //cvLine:画直线 #include #include #include using namespace std; #define thickness 2 #define line_type CV_AA #prag
  • Opencv的使用小教程1——Opencv基础函数汇总

    千次阅读 多人点赞 2019-09-21 13:33:51
    Opencv的使用小教程1——Opencv基础函数汇总1、VideoCapture2、imread3、resize4、clone5、cvtColor6、Scalar7、获取像素点值8、Rect9、截取Rect部分图像10、equalizeHist直方图均衡化11、threshold阈值操作12、...
  • 颜色 Scalar(int,int,int);//蓝,绿,红 ...画椭圆 ellipse(Mat,Point,Size,angle,0,360,Scalar,int,int); //原图,中心点,大小,旋转角,扩展弧度0-360,线条粗细,线条类型 画圆形 circle(Mat,Poin...
  • 1. 增加‘椭圆’菜单项,设置属性,添加类向导;...2. 编辑消息处理函数,设置画图变量标识my_draw_flag为5,并读取对话框里数据。 3. 修改OnMouseMove消息处理函数。 3.1增加变量CvSize  CvSize EllipseSi
  • 1.绘图函数所需要参数 • img:你想要绘制图形那幅图像。 • color:形状颜色。以 RGB 为例,需要传入一个元组,例如:(255,0,0)代表蓝色。对于灰度图只需要传入灰度值。 • thickness:线条粗细。如果给...
  • 画直线cv2.line(),画圆cv2.circle(),画方形cv2.rectangle(),画椭圆 cv2.ellipse(),画多边形cv2.polylines(),写文字cv2.putText() 等。等待键盘输入cv2.waitKey()设定。 cv2绘图函数参数shift为小数点位数。 ...
  • 魏老师学生——Cecil:学习OpenCV-机器视觉之旅画线画线:代码演示画矩形画矩形:代码演示画圆画圆:代码演示画椭圆画椭圆:代码演示画多边形画多边形:代码演示图片上加文字加文字:代码演示 画线 计算机坐标:原点...
  • 学习用OpenCV画出不同几何图形 将学习这些功能:cv.line(), cv.circle() , cv.rectangle(), cv.ellipse(), cv.putText() etc.等。 代码 在上述所有功能中,您将看到如下所示一些常见参数: img:你想要绘制...
  • opencv常见的几何图形的函数
  • 想要实现一个对图像中所有的轮廓画椭圆的功能 代码如下:for(int k = 0; k (int)threecontours.size(); k++) { RotatedRect rRect = fitEllipse(threecontours.at(k)); double majorAxis = rRect.size.height > ...
  • 图片相关操作的函数 【创建一张白的的画布】img = np.zeros((512,512,3),np.uint8) 【窗口命名】cv2.namedWindow(‘image’,cv2.WINDOW_NORMAL) 【重新定义窗口大小】cv2.resizeWindow(‘image’,1000,10...
  • 设置空白画布 画线 画矩形 画圆 画椭圆 画多边形 添加文字 1 设置空白画布 import numpy as np import cv2 img = np.zeros((512,512,3), np.uint8) 本质是创建了一个512x512x30矩阵,用于存储512x512...
  • OpenCV-Python[第二章]——画图函数

    千次阅读 2016-10-27 19:47:36
    完整代码简介学习使用OpenCV画几何图形,主要的函数为:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2.putText等。相关说明上述几个函数具有如下的相同类型的参数: img: 背景图像 color: 形状的颜色...
  • 学习OpenCV3:在空白图片上虚线

    千次阅读 2020-06-17 08:32:30
      在OpenCV中,可以画圆、线、矩形、椭圆和多边形,但并不能出虚线,现希望通过OpenCV已有的函数画出由点或线组成的虚线。 cv::circle() // 一个简单圆 cv::clipLine() // 判断一条直线是否在给定的矩形内 cv:...
  • 找轮廓–轮廓–计算轮廓–标注轮廓(椭圆、矩形)找轮廓–轮廓–计算轮廓opencv.cv2.findContours()函数形态学变换参考各种颜色空间解释和相互转换[各种边缘检测算子对比图]用OpenCV实现Otsu算法####Python图表...
  • 椭圆的绘制方法在上一节中我们已经知道了是使用ellipse,ellipse的函数原型如下,为了清晰认识ellipse方法,在此使用了中文代替参数: ellipse(image, 椭圆的中心坐标, 长轴和短轴, 旋转角度, 起始角度, 终止角度, ...
  • 有时程序中需要一些基础图形,例如直线,矩形,椭圆以及多边形。OpenCV中当然有此类函数。 1.函数介绍 直线line: void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, ...
  • 以下是 Python 用 OpenCV 绘制基本图形文章汇总,每篇文章都有函数及参数详细说明、完成 Python 代码及运行效果图。 文章链接如下: Python 安装 OpenCV 及显示图像 (1) ...Python 用 OpenCV 画椭圆...
  • OpenCV 绘图功能

    千次阅读 2017-02-21 13:45:29
    在利用Opencv处理图像时,我们常常需要利用一些绘图操作用来验证中间结果是否正确,比如画圆,画椭圆,画线,画矩形等功能。下面对常用绘图函数做个整理,也方便以后自己使用:在说明绘图功能之前,首先介绍绘图时...

空空如也

空空如也

1 2 3 4 5
收藏数 81
精华内容 32
关键字:

opencv画椭圆的函数