如果觉得本篇文章对您的学习起到帮助作用,请 点赞 + 关注 + 评论 ,留下您的足迹💪💪💪
本篇文章为我在学习Opencv时的理解与笔记,一是为了日后查找方便并加深对代码的理解,二是希望能帮助到正在学习Opencv时遇到困难的人。
本文相关推荐阅读:
(一)Opencv的GUI特性:1_图像入门
(一)Opencv的GUI特性:2_视频入门
(一)Opencv的GUI特性:3_OpenCV中的绘图函数
学习目标
- 学习用OpenCV绘制不同的几何图形
绘制几何图形常用函数
- cv2.line():绘制线段
- cv2.circle():绘制圆形
- cv2.rectangle():绘制矩形
- cv2.ellipse():绘制椭圆
- cv2.putText():添加文字
在上述所有函数中,您将看到一些常见参数,如下所示:
- img:要在其中绘制形状的图像
- color:绘制图形的颜色,对于RGB,传入元组,例如(255,0,0),为蓝色;如使用灰度图,直接输入标量值即可。
- thickness:线的宽度;默认值为1,如果对闭合图形传递 -1 则填充
- lineType:线的类型
绘制线段
要画一条线,您需要传递该线的起始坐标和结束坐标。我们将创建一个黑色图像,并在其上从左上角到右下角绘制一条蓝线。
函数:cv2.line(img, pt1,pt2,color,thickness,lineType,)
- img:需要绘制的图片
- pt1:线段起始点
- pt2:线段终止点
- color:线段颜色,元组形式
- thickness:线的宽度,负值为填充
- lineType:线的类型,使用默认值即可
import numpy as np
import cv2
# 创造一张(512,512,3)的黑色图片
img = np.zeros((512,512,3), np.uint8)
# 画一条宽度为 5 的蓝色斜线
cv2.line(img,(0,0),(400,400),(255,0,0),5)
# 显示图片
cv2.imshow('picture', img)
# 保存图片
cv2.imwrite('dataset//line.jpg', img)
# 按任意键销毁图像
cv2.waitKey(0)
cv2.destroyAllWindows()
绘制的图片如下:
绘制矩形
绘制矩形,需要确定矩形的左上角坐标和右下角坐标。
函数:cv2.rectangle(img, pt1,pt2,color,thickness,lineType,)
- img:需要绘制的图片
- pt1:矩形的顶点,即左上角
- pt2:矩阵终止点,即右下角
- color:线段颜色,元组形式
- thickness:线的宽度,负值为填充
- lineType:线的类型,使用默认值即可
import numpy as np
import cv2
# 创造一张(512,512,3)的黑色图片
img = np.zeros((512,512,3), np.uint8)
# 画一条宽度为 5 的蓝色斜线
cv2.line(img,(0,0),(400,400),(255,0,0),5)
# thickness 负值代表填充
cv2.rectangle(img,(384,0),(510,128),(0,255,0),-3)
# 显示图片
cv2.imshow('picture', img)
# 保存图片
cv2.imwrite('dataset//line.jpg', img)
# 按任意键销毁图像
cv2.waitKey(0)
cv2.destroyAllWindows()
绘制的图片如下:
绘制圆形
绘制圆形,需要中心点和半径即可。
函数:cv2.circle(img, center,radius,color,thickness,lineType,)
- img:需要绘制的图片
- center:圆的圆点
- radius:圆的半径
- color:线段颜色,格式为元组形式
- thickness:线的宽度,如果为负值则为填充
- lineType:线的类型,使用默认值即可
import numpy as np
import cv2
# 创造一张(512,512,3)的黑色图片
img = np.zeros((512,512,3), np.uint8)
# 画一条宽度为 5 的蓝色斜线
cv2.line(img,(0,0),(400,400),(255,0,0),5)
cv2.rectangle(img,(384,0),(510,128),(0,255,0),-3)
cv2.circle(img,(447,63), 63, (0,0,255), 3)
# 显示图片
cv2.imshow('picture', img)
# 保存图片
cv2.imwrite('dataset//line.jpg', img)
# 按任意键销毁图像
cv2.waitKey(0)
cv2.destroyAllWindows()
绘制的图片如下:
向图片添加文本
函数:cv2.putText(img,text,org,fontFace,fontScale,color,thickness,lineType)
- img:需要绘制的图片
- text:要写下的字符
- org:文本字符串左下角坐标
- fontFace: 字体,如 HersheyFonts
- fontScale:指定字体大小
- color:颜色
- thickness:绘制字符线的宽度
- lineType:为了美观,常选择 cv2.LINE_AA
import numpy as np
import cv2
# 创造一张(512,512,3)的黑色图片
img = np.zeros((512,512,3), np.uint8)
# 画一条宽度为 5 的蓝色斜线
cv2.line(img,(0,0),(400,400),(255,0,0),5)
cv2.rectangle(img,(384,0),(510,128),(0,255,0),-3)
cv2.circle(img,(447,63), 63, (0,0,255), 3)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)
# 显示图片
cv2.imshow('picture', img)
# 保存图片
cv2.imwrite('dataset//line.jpg', img)
# 按任意键销毁图像
cv2.waitKey(0)
cv2.destroyAllWindows()
绘制的图片如下:
看到这里,赶快开始敲代码练习一下吧!!💪