常用的绘图函数有:

cv2.line()       cv2.circle()        cv2.rectangle()      cv2.ellipse()       cv2.putText()

上面所有的这些绘图函数需要设置下面这些参数:
• img:你想要绘制图形的那幅图像。
• color:形状的颜色。以 RGB 为例,需要传入一个元组,例如:(255,0,0)代表蓝色。对于灰度图只需要传入灰度值。
• thickness:线条的粗细。如果给一个闭合图形设置为 -1,那么这个图形就会被填充。默认值是 1.

• linetype:线条的类型, 8 连接,抗锯齿等。默认情况是 8 连接。 cv2.LINE_AA为抗锯齿,这样看起来会非常平滑。

一、画线

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)#创建一个黑色的图片
cv2.line(img,(0,0),(511,511),(0,0,255),1)
cv2.imshow('opencv',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.line(img,start,end,color,thickness)函数,img是要操作的图片,start和end是画线的两端点,color是线的颜色,thickness是线的粗细程度。

二、画矩形

要画一个矩形,你需要告诉函数的左上角顶点和右下角顶点的坐标。这次我们会在图像的右上角话一个红色的矩形。

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
cv2.rectangle(img,(50,50),(400,400),(0,0,255),3)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img),
cv2.waitKey(0)
cv2.destroyAllWindows()

三、画圆

要画圆的话,只需要指定圆形的中心点坐标和半径大小。

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
cv2.circle(img,(200,200),160,(0,0,255),-1)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img),
cv2.waitKey(0)
cv2.destroyAllWindows()

由于圆为闭合曲线,故thickness设置为 -1,那么这个图形就会被填充。

四、画椭圆

画椭圆比较复杂,我们要多输入几个参数,下面会详细介绍。

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
cv2.ellipse(img,(256,256),(100,50),90,0,270,255,2)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img),
cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.ellipse(img,center,axes,angle,start_angle,end_angle,color,thickness,line_type,shift),img是操作的图片、center是椭圆的中心的,axes是椭圆的长轴和短轴、angle是偏转角度、start_angle和end_angle分别是圆弧的起始角度和终结角度、color是线条颜色、thickness是线条粗细程度、line_type是线条的类型、shift是圆心坐标点和数轴的精度。

五、画多边形

画多边形,需要指点每个顶点的坐标。用这些点的坐标构建一个大小等于行数 X1X2 的数组,行数就是点的数目。这个数组的数据类型必须为 int32。

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
pts=np.array([[20,20],[350,40],[420,400],[60,420]], np.int32)
pts=pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,0),2)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.polylines(img,[pts],iscolse,color,thickness)函数,其中第二个参数是多边形顶点的集合,第三个参数是首尾点是否连接。需要注意的是,多边形的连接是与集点的顺序保持一致的。如我修改下第五行集点的顺序,会得到不一样的图。
pts=np.array([[20,20],[350,40],[60,420],[420,400]], np.int32)

六、给图片添加文字

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,250), font, 4,(255,255,255),2)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img)cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.putText(img,word,position,font,size,color,thickness)函数中,第二个参数是输入的文字,第三个参数是文字的位置,第四个参数是字体类型,第五个参数是字体大小。

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

最新文章

  1. SQL Server 跨网段(跨机房)复制
  2. Mysql5.6主从热备配置
  3. jQuery学习易忘细节
  4. js获取图片的真实大小,字节大小
  5. objective-c系列-NSString
  6. iframe与主框架跨域相互访问方法【转】
  7. dropdownlist 二级联动
  8. 20141112 WinForm子窗口标签页
  9. android使用shape做selector按钮按下和弹起的动画
  10. 汇编实现HelloWorl!
  11. SQL SERVER 自动生成 MySQL 表结构及索引 的建表SQL
  12. Spring学习(7)--- @Required注解
  13. win10下vagrant+centos7 rails虚拟开发机配置流程
  14. java.lang.IllegalArgumentException: Document base D:\Project\workspace\space\.metadata\.plugins\org.eclipse.wst.server.core\tmp7\wtpwebapps\Blog
  15. SpringMVC处理请求和返回流程
  16. net core体系-web应用程序-4asp.net core2.0 项目实战(任务管理系统)-2项目搭建
  17. CentOS系统/tmp目录里面的文件默认保留多久
  18. SpringBoot配置ActiveMQ
  19. plink命令
  20. 堆(heap)、栈(stack)、方法区(method)

热门文章

  1. iOS 保存图片(视频)到相册
  2. 碎碎念(DP)
  3. UVALive 3977 BFS染色
  4. 关于SOA的架构设计案例分析
  5. 提升Python编程效率的几种方法
  6. python数据拼接: pd.concat
  7. VS2013的工程移植到VS2008
  8. VC++ DLL 3 动态链接库
  9. split和join合写
  10. css伪元素::before与::after使用基础示例