湖南吉首建设官方网站,泉州网站制作哪个好微,能下载各种应用的软件,网站建设高端公司学习OpenCV的过程中#xff0c;画图是不可避免的#xff0c;本篇文章旨在介绍OpenCV中与画图相关的基础函数。 1、画线条——line()函数
介绍#xff1a;
cv2.line(image, start_point, end_point, color, thickness)参数#xff1a;
image: 图像start_point#xff1a… 学习OpenCV的过程中画图是不可避免的本篇文章旨在介绍OpenCV中与画图相关的基础函数。 1、画线条——line()函数
介绍
cv2.line(image, start_point, end_point, color, thickness)参数
image: 图像start_point它是线的起始坐标。坐标表示为两个值的元组即(X坐标值Y坐标值)。end_point: 它是线的起始坐标。坐标表示为两个值的元组即(X坐标值Y坐标值)。color: 它是要绘制的线条的颜色。对于BGR我们通过一个元组。例如(25500)为蓝色。thickness: 它是线的粗细像素。
举例说明
# 画线条
import cv2
import numpy as np
img np.zeros((480, 640, 3),np.uint8)
cv2.line(img,(0,20),(200,380),(0,255,0),5)
cv2.imshow(draw, img)
cv2.waitKey(0)
cv2.destroyAllWindows()效果
2、画圆——circle()函数
介绍
cv2.line(image, center, radius, color, thickness)参数
image图像center圆心坐标radius半径color颜色thickness线段粗细
举例说明
# 画圆
import cv2
import numpy as npcv2.circle(img,(240, 250),100,(0,255,0),5)
cv2.imshow(draw, img)
cv2.waitKey(0)
cv2.destroyAllWindows()效果如下 3、画矩形——rectangle()函数
介绍
cv2.rectangle(img, pt1, pt2, color, thickness, lineType, shift )参数
img指定一张图片在这张图片的基础上进行绘制img相当于一个画板pt1 由x_minx_min组成为绘制的边框的左上角pt2 由x_max, y_max坐标为绘制的边框的右下角示意如下color指定边框的颜色由B,G,R组成当为255,00时为绿色可以自由设定thinkness线条的粗细值为正值时代表线条的粗细以像素为单位为负值时边框实心;
举例说明
# 画矩形
import cv2
import numpy as npcv2.rectangle(img,(80, 100),(380, 380),(0,0,255),10,180)
cv2.imshow(draw, img)
cv2.waitKey(0)
cv2.destroyAllWindows()效果如下
4、画椭圆——ellipse()函数
介绍
cv2.ellipse(img, center, axes, rotateAngle, startAngle, endAngle, color, thickness, lineType, shift)参数
center椭圆的圆心坐标注意这是一个坐标值axes椭圆的长轴和短轴的长度这是一个元组信息rotateAngle椭圆旋转的角度startAngle椭圆弧起始角度endAngle椭圆弧终止角度
OpenCV中原点在左上角所以这里的角度是以顺时针方向计算的
举例说明
# 画椭圆
import cv2
import numpy as npcv2.ellipse(img,(320, 240),(100, 50),0,0,360, (255, 0, 0))
cv2.imshow(draw, img)
cv2.waitKey(0)
cv2.destroyAllWindows()效果如下
5、画多边形——polylines()函数的使用
介绍
cv2.polylines(img, pts, isClosed, color, thickness, lineType, shift)参数 pts多边形各边的坐标点组成的一个列表是一个numpy的数组类型。这里需要是三维的。 isClosed值为True或False若为True则表示一个闭合的多边形若为False则不闭合
举例说明
# 画多边形三边形
import cv2
import numpy as np
pts np.array([[[300, 10], [150, 100], [450, 100]]], np.int32)
# pts np.array([[10, 5], [20, 30], [70, 20], [50, 10]], np.uint8)
cv2.polylines(img,ptspts, isClosedTrue, color(255, 0, 0), thickness5)
# cv2.polylines(img,ptspts,isClosedTrue, color(255, 255, 255), thickness3)
cv2.imshow(draw, img)
cv2.waitKey(0)
cv2.destroyAllWindows()效果如下
6、绘制文本putText()函数
opencv中除了提供绘制各种图形的函数外还提供了一个特殊的绘制函数——在图像上绘制文字。这个函数即是cv2.putText()。 介绍
cv2.putText(img, text, pos, fontFace,fontScale,color[, thickness[, lineType[, bottomLeftOrigin]]])参数
img: 表示输入图像允许单通道灰度图像或多通道彩色图像。text表示添加的文本字符串。pos表示文本字符串左下角坐标x, y格式的元组。fontFace表示字体类型。fontScale表示字体缩放比例因子。color表示绘制直线的颜色b, g, r格式的元组或者表示灰度值的标量。thickness表示绘制直线的粗细默认值1px -1表示内部填充lineType表示绘制直线的线性默认值为LINE_8。bottomLeftOrigin表示为可选参数默认值True表示数据原点位于左下角False表示位于左上角。
fontFace值说明
值描述cv.FONT_HERSHEY_SIMPLEX表示正常大小无衬线字体。cv.FONT_HERSHEY_PLAIN表示小号无衬线字体。cv.FONT_HERSHEY_DUPLEX表示正常大小无衬线字体比FONT_HERSHEY_SIMPLEX更复杂。cv.FONT_HERSHEY_COMPLEX表示正常大小有衬线字体。cv.FONT_HERSHEY_TRIPLEX表示正常大小有衬线字体比FONT_HERSHEY_COMPLEX更复杂。cv.FONT_HERSHEY_COMPLEX_SMALL表示FONT_HERSHEY_COMPLEX的小译本。cv.FONT_HERSHEY_SCRIPT_SIMPLEX表示手写风格字体。cv.FONT_HERSHEY_SCRIPT_COMPLEX表示手写风格字体比FONT_HERSHEY_SCRIPT_SIMPLEX更复杂。cv.FONT_ITALIC表示相应字体的斜体字。
lineType值说明
值描述cv.LINE_4表示 4 邻接线型。cv.LINE_8表示 8 邻接线型。cv.LINE_AA表示抗锯齿线型图像更平滑。
注意OpenCV 不支持显示中文字符使用 cv.putText() 时添加的文本字符串不能包含中文字符包括中文标点符号
举例说明
# 绘制文本cv2.putText(img, HELLO, (80, 200), cv2.FONT_HERSHEY_COMPLEX, 3, (0, 0, 255))
cv2.imshow(draw, img)
cv2.waitKey(0)
cv2.destroyAllWindows()效果如下 这里的一条绿色的线是之前使用line函数画的一条线。
7、绘制中文
绘制中文的话需要使用我们电脑上自带的字体。一般字体都在C:\Windows\Fonts目录下我们可以挑选一个自己想要展示的字体然后使用ImageFont模块里面的truetype函数进行加载使用。
介绍ImageFont模块中的truetype函数
ImageFont.truetype(filename , wordsize)参数说明 这个函数创建字体对象给ImageDraw中的text函数使用。
filename是字体文件的名称通常为ttf文件还有少数ttc文件可以在C:\Windows\Fonts中找到。Wordsize参数指定字的大小。
介绍ImageDraw模块中的Draw函数
ImageDraw.Drawimage说明 创建一个可用来对image进行操作的对象。对所有即将使用ImageDraw中操作的图片都要先进行这个对象的创建。
介绍Image模块中的fromarray函数
Image.fromarray(np.uint8(img))说明 将array转换成image。 详细查看numpy与image互转numpy和tensor互转 np.arrayImage.fromarray a.numpy torch.from_numpy
举例说明
# 绘制中文
import cv2
import numpy as np
from PIL import ImageFont, ImageDraw, Image
img np.full((500, 200, 3), fill_value 255, dtype np.uint8)
font ImageFont.truetype(rC:\Windows\Fonts\微软雅黑\msyh.ttc, 15)
img_pil Image.fromarray(img)
draw ImageDraw.Draw(img_pil)
draw.text((100, 150), 你好, fontfont, fill(0, 255, 0, 0))
img np.array(img_pil)
cv2.imshow(draw, img)
cv2.waitKey(0)
cv2.destroyAllWindows()效果如下
女神节了博主在此祝各路程序媛女神节快乐~ ✨原创不易还希望各位大佬支持一下\textcolor{blue}{原创不易还希望各位大佬支持一下}原创不易还希望各位大佬支持一下 点赞你的认可是我创作的动力\textcolor{green}{点赞你的认可是我创作的动力}点赞你的认可是我创作的动力 ⭐️ 收藏你的青睐是我努力的方向\textcolor{green}{收藏你的青睐是我努力的方向}收藏你的青睐是我努力的方向 ✏️ 评论你的意见是我进步的财富\textcolor{green}{评论你的意见是我进步的财富}评论你的意见是我进步的财富