Open cv——绘图操作(椭圆与多边形,Linestyle)

cv2.line(),cv2.rectangle(),cv2.circle(),cv2.ellipse(),cv2.polylines()

目标

·学会使用open cv绘制几何形状学会使用函数

·cv2.line(),cv2.circle(),cv2.rectangle,cv2.ellipse()等代码在以上的所有函数中,你将会看到一些相同的参数:

·img:就是绘制的形状所在的图像

·color:就是绘制形状所用的颜色,对于BGR通道,传递一个元组(B,G,R)。对于灰度图。只要传递一个灰度值

·thickness:线条或者圆圈的厚度。如果封闭的图形并且该值是-1的话,形状的内部会被填充。default thickness=1

·lineType:线条的形状,八连通直线,反走样直线(比像素点直线平滑)等。默认值是八连通直线,cv2.LINE_AA给出的是反走样直线,因为反走样直线的算法,使得它不是单纯使用像素值绘制,因而显得平滑。有两篇文章解答了我对八连接直线和反走样直线的问题:

https://blog.csdn.net/jssyy123/article/details/42007565(反走样直线)

https://blog.csdn.net/Young__Fan/article/details/82696276(八连通直线)

绘制直线

给定初始和结尾的坐标值。

import numpy as np

import cv2


img = np.zeros((512,512,3), np.uint8)

#img为一个纯黑色的背景

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

画一个矩形

给出左上角和右下角的坐标值。

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

画圆

圆心坐标和半径

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

画椭圆

要绘制一个椭圆,我们需要传递几个参数,一个是椭圆的中心点坐标。下一个是轴长度(第一主轴和第二主轴),angle是绘制椭圆的完整程度,从startangle开始逆时针旋转到endangle。例如给startangle赋值0,endangle赋值360就是一整个椭圆。下面是函数的参数:

def ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=None, lineType=None, shift=None).  

·   @param img Image.   

.   @param center Center of the ellipse.   

.   @param axes Half of the size of the ellipse main axes.   

.   @param angle Ellipse rotation angle in degrees.   

.   @param startAngle Starting angle of the elliptic arc in degrees.

.   @param endAngle Ending angle of the elliptic arc in degrees.   

.   @param color Ellipse color.   

.   @param thickness Thickness of the ellipse arc outline, if positive. Otherwise, this indicates that    .   a filled ellipse sector is to be drawn.   

.   @param lineType Type of the ellipse boundary. See #LineTypes

.   @param shift Number of fractional bits in the coordinates of the center and values of axes.

分别是:第一个是中心点的坐标,一个元组;第二个两条半主轴的长度,也就是椭圆方程里面的长半轴与短半轴,也是一个元组。第三个是椭圆相对于水平旋转的角度,逆时针方向旋转。第四个参数和第五个参数一起使用,第四个参数是椭圆开始的角度(与水平的夹角),第五个是椭圆结束的角度(与水平的角度)。两个参数表示了能显示的椭圆的部分;比如0,180代表显示一半的椭圆,因为整个椭圆的角度是360。第六个是线条的颜色,可以是长为三的元组,代表BGR颜色,也可以是一个数字,代表颜色的深度(在这个数字为255的时候是纯蓝色,为0的时候是黑色)。第七个参数是线条的宽度,如果是负数就代表要完全填充所画的图形。第八个参数是线条类型,有八连通线条,反走样线条(其他的我就不知道了)。第九个是浮点数的精度,就是中心点的坐标和主轴长度的精度。

绘制多边形

首先要全部给出点的坐标,但是这些点的坐标又必须转化为一个RAWSx1x2的数组,也就是行数可以改变,但是其他两个维度必须是1和2的三维数组,并且是numpy中的有符号的32位数。

def polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)

.   @param img Image.   

.   @param pts Array of polygonal curves.   

.   @param isClosed Flag indicating whether the drawn polylines are closed or not. If they are closed,   

.   the function draws a line from the last vertex of each curve to its first vertex.   

.   @param color Polyline color.   

.   @param thickness Thickness of the polyline edges.   

.   @param lineType Type of the line segments. See #LineTypes   

.   @param shift Number of fractional bits in the vertex coordinates.



pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)

pts = pts.reshape((-1,1,2))

#因为数组的转化是相对应的,元素的个数不会减少,因此使用-1来代表第一个维度是不确定的,numpy会自动计算一维的值

img = cv2.polylines(img,[pts],True,(0,255,255))

画多边形除了注意坐标点转化为一个三维矩阵之外还需要注意个布尔参数i是isClosed。决定了多边形是否闭合

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容