opencv-python教程学习系列4-opencv绘图函数
前言
opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍opencv绘图函数,坚持学习,共同进步。
系列教程参照OpenCV-Python中文教程;
系统环境
系统:win_x64;
python版本:python3.5.2;
opencv版本:opencv3.3.1;
内容安排
1.知识点介绍;
2.测试代码;
具体内容
1.知识点介绍;
主要介绍一下opencv的绘图函数,设计的函数有cv2.line() , cv2.cicle() , cv2.rectangle() , cv2.ellipse() , cv2.putText()等。
需要设置的参数有img-要绘制图形的图像;color-形状的颜色,以RGB为例,需要传入的元组(255,0,0)代表蓝色,对于灰度图只需传入灰度值;
thickness-线条的粗细,如果给一个闭合图形设置为-1,那么这个图形就会被填充,默认值为1;
linetype-线条的类型,8连接,抗锯齿等。默认是8连接。cv2.LINE_AA为抗锯齿;
1.1 画线:需要输入函数的参数是线段的起点和终点;
1 | cv2.line(img,( 0 , 0 ),( 260 , 260 ),( 255 , 0 , 0 ), 5 ) #起点/终点/颜色/粗细 |
1.2 画矩形:需要输入函数的参数是矩形左上角和右下角顶点的横、纵坐标;
1 | cv2.rectangle(img,( 350 , 0 ),( 500 , 128 ),( 0 , 255 , 0 ), 3 ) #矩形左上角点的横纵坐标/右下角点/颜色/粗细 |
1.3 画圆:需要指定圆心坐标和半径大小;
1 | cv2.circle(img,( 425 , 63 ), 63 ,( 0 , 0 , 255 ), - 1 ) #圆,-1为向内填充/圆心/半径 |
1.4 画椭圆:
1 2 | cv2.ellipse(img,( 256 , 256 ),( 100 , 50 ), 0 , 0 , 360 , 255 , - 1 ) #中心点/长轴/短轴/与短轴的顺时针旋转的始末角度/蓝色的饱和度/填充 |
1.5 画多边形:需要指定每个顶点的坐标,构建一个大小相等于行数的数组,行数就是点的数目,这个数组必须为int32。
pts = np.array([[ 10 , 5 ],[ 20 , 30 ],[ 50 , 10 ],[ 70 , 20 ]],np.int32) pts = pts.reshape(( - 1 , 1 , 2 )) #这里reshape的第一个参数为-1,表明这一维度的长度是根据后面的维度计算出来的 cv2.polylines(img,[pts], True ,( 0 , 255 , 255 )) #按照点的顺序连接线段 #注意第三个参数若是False,我们得到的是不闭合的线 |
1.6 在图像上添加文字:
需要设置文字内容,绘制的位置,字体类型、大小、颜色、粗细、线类型等,这里推荐linetype=cv2.LINE_AA;
1 2 3 | font = cv2.FONT_HERSHEY_SIMPLEX #位置是左上角的起始点横纵坐标 cv2.putText(img, 'OpenCV' ,( 20 , 300 ), font, 4 ,( 255 , 255 , 255 ), 2 ,cv2.LINE_AA) |
1.7 显示结果;
1 2 3 4 5 | winname = 'example' cv2.namedWindow(winname) cv2.imshow(winname,img) cv2.waitKey( 0 ) cv2.destroyAllWindow(winname) |
2.测试代码;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import numpy as np import cv2 #Create a black image img = np.zeros(( 512 , 512 , 3 ),np.uint8) cv2.rectangle(img,( 350 , 0 ),( 500 , 128 ),( 0 , 255 , 0 ), 3 ) #矩形 cv2.circle(img,( 425 , 63 ), 63 ,( 0 , 0 , 255 ), - 1 ) #圆,-1为向内填充/圆心/半径 cv2.namedWindow( 'image' ,cv2.WINDOW_NORMAL) cv2.resizeWindow( 'image' , 1000 , 1000 ) #定义frame的大小 cv2.imshow( 'image' ,img) cv2.waitKey( 0 ) cv2.destroyAllWindows() |
注意,示例代码给出了如何画圆,其他绘图操作类似。
参考
1.opencv绘图函数;
完
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】