【opencv学习】给图像加图形注释

今天学习在图像上如何画出一些常见的图形,这将用于图像任务的标注和展示

import cv2


def cv_show_image(name, img):
    cv2.imshow(name, img)
    cv2.waitKey(0)  # 等待时间,单位是毫秒,0代表任意键终止
    cv2.destroyAllWindows()


img = cv2.imread('images/build.jpeg')

# ======================================================
# 给图像加一条直线
# cv2.line函数:需要指定直线的俩端点,其他的就是颜色和粗细
imageLine = img.copy()
pointA = (200, 80)
pointB = (550, 180)
cv2.line(img=imageLine, pt1=pointA, pt2=pointB, color=(0, 0, 255), thickness=3, lineType=cv2.LINE_AA)
cv_show_image('imageLine', imageLine)
del imageLine

# ======================================================
# 给图像加一个空心圆圈
# cv2.circle函数:需要指定圆心和半径
imageCircle = img.copy()
circle_center = (315, 190)  # 定义圆心
radius = 100  # 定义圆的半径
# 这里画一个空心的圆
cv2.circle(imageCircle, circle_center, radius, (0, 0, 255), thickness=3, lineType=cv2.LINE_AA)
cv_show_image('imageCircle_empty', imageCircle)
del imageCircle

# ======================================================
# 给图像加一个实心圆圈
# cv2.circle函数:需要指定圆心和半径
imageCircle = img.copy()
circle_center = (300, 300)  # 定义圆心
radius = 100  # 定义圆的半径
# 这里画一个实心的填充了的圆,唯一的区别就是给 thickness 赋值成 -1
cv2.circle(imageCircle, circle_center, radius, (0, 0, 255), thickness=-1, lineType=cv2.LINE_AA)
cv_show_image('imageCircle_filled', imageCircle)
del imageCircle

# ======================================================
# 给图像加一个矩形
# cv2.rectangle函数:需要指定定义矩形的起点和终点,也就是左上角的点坐标和右下角的坐标
imageRectangle = img.copy()
# 定义左上角的点坐标和右下角的坐标
start_point = (300, 180)
end_point = (500, 230)
# 画矩形
cv2.rectangle(imageRectangle, start_point, end_point, (0, 0, 255), thickness=3, lineType=cv2.LINE_8)
cv_show_image('imageRectangle', imageRectangle)
del imageRectangle

# ======================================================
# 给图像加一个椭圆
# cv2.ellipse函数:需要指定圆心,(长轴和短轴),椭圆偏的角度,角度的开始和结束,
# 参数中 center是椭圆的圆心,angle是倾斜角度,startAngle和endAngle是起始/结束的角度,axes是定义了长轴和短轴长度
imageEllipse = img.copy()
# 定义椭圆的中心点
ellipse_center = (300, 200)
ellipse_center2 = (500, 200)
# 定义椭圆的长轴和短轴
axis1 = (130, 38)
axis2 = (156, 50)
# 绘制椭圆,全部的
# 水平的椭圆
cv2.ellipse(img=imageEllipse, center=ellipse_center,
            axes=axis1, angle=0, startAngle=0, endAngle=360,
            color=(255, 0, 0), thickness=3)
cv_show_image('imageEllipse', imageEllipse)
# 垂直的椭圆
cv2.ellipse(imageEllipse, ellipse_center, axis2, 90, 0, 360, (0, 0, 255), thickness=3)
cv_show_image('imageEllipse', imageEllipse)

# 绘制椭圆,部分的,只有部分角度才有
# 倾斜45度的,没有[270, 360]度的椭圆
cv2.ellipse(imageEllipse, ellipse_center2, axis1, 45, 0, 270, (255, 0, 0), thickness=3)
cv_show_image('imageEllipse', imageEllipse)
# 倾斜135度的,没有[0, 90]度的椭圆
cv2.ellipse(imageEllipse, ellipse_center2, axis2, 135, 90, 360, (0, 0, 255), thickness=3)
cv_show_image('imageEllipse', imageEllipse)
# 倾斜90度的(垂直),没有[180, 360]度的椭圆
cv2.ellipse(imageEllipse, ellipse_center2, axis2, 90, 0, 180, (0, 255, 0), thickness=3)
cv_show_image('imageEllipse', imageEllipse)
# 倾斜0度的(水平),没有[0, 180]度的椭圆
cv2.ellipse(imageEllipse, ellipse_center2, axis2, 0, 180, 360, (0, 255, 0), thickness=3)
cv_show_image('imageEllipse', imageEllipse)
del imageEllipse

# ======================================================
# 给图像加一段文字
# cv2.putText函数:需要指定文本,文本位置。fontscale是字体比例用于向上或向下缩放字体的基本大小,是个浮点值
imageText = img.copy()
# 让我们写下你想要放在图像上的文本
text = 'This is my house?'
# 你想放文本的地方,这就是文本放置的位置信息
org = (150, 250)
# 将文本写在输入图像上
cv2.putText(img=imageText, text=text, org=org,
            fontFace=cv2.FONT_HERSHEY_COMPLEX, fontScale=1.5, color=(0, 255, 0), thickness=3)
cv_show_image('imageText', imageText)
del imageText


效果如下:
画出直线:
请添加图片描述
画出空心圆和实心圆
请添加图片描述
请添加图片描述
画出一个矩形
请添加图片描述
画出各种椭圆
请添加图片描述
画出文本
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值