Python OpenCV简单的绘图函数使用教程
作者:代码骑士 发布时间:2023-08-02 23:22:22
1、画直线的函数是cv2.line
cv2.line函数语法:
cv2.line(img,start_point,end_point,color,thickness=0)
cv2.line函数参数解释:
img:需要画的图像
start_point:直线的开头,必须是一个元组类型
end_point:直线的结尾,必须是一个元组类型
color:直线的颜色,必须是一个元组类型
thickness:直线的宽度
代码示例:
cv2.line(img,(0,0),(100,100),(0,255,0),3)
实际操作:
import cv2
import numpy as np
#读取一张画布
img=cv2.imread('1.jpg')
#在上面画线
cv2.line(img,(0,0),(100,100),(0,255,0),3)
#将画完的图像存到“.img”文件以后再显示出来
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
演示结果:
2、画矩形的函数是cv2.rectangle
cv2.rectangle函数语法:
cv2.rectangle(img,point1,point2,color,thickness=0)
cv2.rectangle函数的参数解释:
img:需要画的图像
point1:矩形左上角点的坐标,必须是一个元组类型
point2:矩形右下角点的坐标,必须是一个元组类型
color:线的颜色,必须是一个元组类型
thickness:线的宽度
说明:这个函数每调用一次,就会产生一个矩形,多次调用就会产生多个矩形。
示例代码:
cv2.rectangle(img.(0,0),(128,128),(0,255,0),3)
实际操作:
import cv2
import numpy as np
#读取一张画布
img=cv2.imread('1.jpg')
#在上面画线
cv2.rectangle(img,(0,0),(128,128),(0,255,0),3)
#将画完的图像存到“.img”文件以后再显示出来
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果演示:
上面的两个实例中,颜色都是我们固定好的,那么我们想要一个随机颜色的图形,该怎么做呢?
import cv2
import numpy as np
img = np.zeros((512,512,3),np.uint8)#创建一个黑色的画布,大小为512*512像素,通道数为3
flag=1#跳出外层循环
while flag:
for a in range(0,256):
cv2.rectangle(img,(350,0), (500,128),(a,255-a,a),3)
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.resizeWindow('image',(1000,1000))#调整屏幕大小
cv2.imshow('image',img)
if cv2.waitKey(1)==ord('q'):
flag-=1#跳出while循环
break#跳出for循环
cv2.destroyAllWindows()
渐变图:
3、画圆函数是cv2.circle
cv2.circle的语法:
cv2.circle(img,center,R,color,thickness=0)
cv2.circle函数的参数解释
img:要画的图像
center:圆心坐标,必须是一个元组类型
R:圆的半径
color:颜色,必须是一个元组类型
thickness:线宽
示例代码:
cv2.circle(img,(100,100),100,(0,255,2),-1)
#画圆的时候,-1表示向内填充颜色
实际操作:
import cv2
import numpy as np
img = cv2.imread('1.jpg')
img=cv2.circle(img,(100,100),100,(0,255,0),-1)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果演示:
4、画椭圆的函数是cv2.elipes
cv2.elipes函数的语法:
cv2.ellipes(img,center,(a,b),direction,angle_start,angle_end,color,thickness)
cv2.elipes函数的参数解释:
img:要画的图像
center:椭圆的中心位置
(a,b):长轴和短轴
direction:顺时针方向的旋转角度
angle_start:画椭圆开始的角度
angle_end:画椭圆结束的角度
color;线的颜色
thickness:线的宽度
示例代码:
cv2.ellipese(img,(256,256),(100,50),0,0,360,(0,255,0),-1)
实际操作:
import cv2
import numpy as np
img = cv2.imread('1.jpg')
img=cv2.ellipse(img,(100,100),(100,80),0,0,360,(0,255,0),-1)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
换个角度:(0,270)
import cv2
import numpy as np
img = cv2.imread('1.jpg')
img=cv2.ellipse(img,(100,100),(100,80),0,0,270,(0,255,0),-1)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在顺时针旋转30:
(direction = 30)
import cv2
import numpy as np
img = cv2.imread('1.jpg')
img=cv2.ellipse(img,(100,100),(100,80),30,0,270,(0,255,0),-1)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
5、画多边形的函数是cv2.polylines
cv2.polylines语法:
cv2.polylines(img,pts,isClosed,color,thickness=0)
cv2.polylines函数参数解释:
img:要画的图像
pts:点的集合,以列表的形式填入
isClosed:多边形是否闭合,如果为False则不闭合,如果为True则闭合。
color:线的颜色
thickness:线的宽度
代码示例:
import cv2
import numpy as np
img =np.zeros((256,256,3),np.uint8)
pts=np.array([[10,3],[48,19],[60,3],[98,19]],np.int32)#注意格式必须是int32
pts=pts.reshape((-1,1,2))
#reshape的第一个参数为-1,表明这一维度的长度是根据后面的维度计算出来的
cv2.polylines(img,[pts],True,(0,255,255),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果显示:
6、添加文字的函数是cv2.putText
cv2.putText函数语法:
cv2.putText(img,text,org,fontFace,fontScale,color,thickness,lineType)
cv2.putText函数参数解释
img:要添加文字的背景图
text:添加的文字
org:添加文字的位置
fontFace:字体
fontScale:字号大小
color:字的颜色
thickness:线条的宽度
lineType:线条的种类
示例代码:
cv2.putText(img,'Python+OpenCV',(10,40),font,1,(255,255,255),2,cv2.LINE_AA)
实际操作:
import cv2
import numpy as np
img =np.zeros((256,256,3),np.uint8)
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,"OpneCV",(10,40),font,1,(255,255,255),2,cv2.LINE_AA)
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.resizeWindow('image',750,750)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
来源:https://blog.csdn.net/qq_51701007/article/details/122381220


猜你喜欢
- Python可以使用open函数来实现文件的打开,关闭,读写操作;Python3中的open函数定义为:open(file, mode=
- 本文主要给大家介绍了关于Python中getpass模块的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍:getpass
- 引言在开发过程中,遇到过json数据组的字符串,需要解析json组,得到组内所有的信息。如下格式:[{"itemId":
- 最近需要用Python写一个简易通讯录,但是对于数据存储很发愁。大家都知道,使用 Python 中的列表和字典进行存储数据是很不靠谱的,所以
- 这篇论坛文章(赛迪网技术社区)主要介绍了MySQL数据库主从复制的相关概念及设置方法,详细内容请大家参考下文:MySQL支持单向、异步复制,
- 目录一、基本用法二、计数循环三、字符串遍历循环四、列表遍历循环五、文件遍历循环六、遍历循环的扩展模式一、基本用法for <循环变量&g
- 一、什么是索引 减少磁盘I/O和逻辑读次数的最佳方法之一就是使用【索引】 索引允许SQL Server在表中查找数据而不需要扫描整个表。 1
- 本文实例为大家分享了python实现简单五子棋游戏的具体代码,供大家参考,具体内容如下from graphics import *from
- 1.MS SCRIPT ENCODE基本上没什么用了,一段JS就可以破解2.封装成DLL比较可行的方法,有通过VB封装成DLL的例子,而且无
- 比较简单的一个页面,类似csdn论坛在ns下的左边列表 描述: 1. 数据名:tree.mdb 表名:tree 表结构:id(自编)&nbs
- 1、定义具名元组需要2个参数,第1个参数是类名,第2个参数是字段名,既可以是可迭代对象(如列表和元组),也可以是空格间隔的字符串:Card
- 1、安装scikit-learn1.1Scikit-learn 依赖Python (>= 2.6 or >= 3.3),NumP
- 1. Map 使用时需要注意哪些问题?Map 的键必须是可比较的类型,如整数、字符串和指针等,但是切片、函数和结构体等类型是不可比较的,因此
- 首先,我们需要着重介绍一些概念,以给你提供一些使这个“奇迹”得以发生的组成部分。太轻易地泄露伏笔对于讲故事来说不是个好的形式,所以那些不愿意
- 本篇文章主要涉及mysql5.7.14用以往的安装方法安装存在的密码登录不上,密码失效等问题的解决办法,希望可以帮到有同样困扰的朋友。具体过
- 1 概述1.1 无监督学习 在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区
- 1.安装登陆确认mysql已经开启2.建库3.建表Create 数据库表右击选择Create Table,填写Table Name,Comm
- 这篇文章主要介绍了Python实现结构体代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以
- 讲这个方法之前,我们应该先了解下插入节点时浏览器会做什么。在浏览器中,我们一旦把节点添加到document.body(或者其他节点)中,页面
- 常用闭包的同学肯定很清楚下面一段代码://通常的闭包写法(function () { ...}())那么我们的问题来了,为什么要在 func