opencv-python绘制图形

参考: Drawing Functions in OpenCV

  • cv2.line() 绘制直线
# -*- coding: utf-8 -*-
# numpy 是非常有名的python科学计算工具包
import numpy as np
import cv2
# 创建一张黑色图像
img = np.zeros((512,512,3),np.uint8)
# 以5px绘制一条蓝色直线
# 参数
# img   图像
# pt1   起始坐标
# pt2   终止坐标
# 线条颜色 这里使用蓝色(BRG:255,0,0)
# 笔画宽度
cv2.line(img,(0,0),(512,512),(255,0,0),5)
cv2.imshow('img',img)
cv2.waitKey(0)

line.jpg

  • cv2.rectangle() 绘制矩形
# 以3px绘制一个绿色矩形
# 参数
# img   图像
# pt1   矩形左上角坐标
# pt2   矩形右下角坐标
# 线条颜色 这里使用绿色(BGR:0,255,0)
# 笔画宽度
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
cv2.imshow('img',img)
cv2.waitKey(0)

draw.jpg

# 绘制一个实心红色圆形
# 参数
# img   图像
# center    圆心坐标
# radius    圆直径
# 线条颜色 这里使用红色(BGR:0,0,255)
# 笔画宽度 指定-1时,若为闭合图形,则填充整个图像
cv2.circle(img,(447,63), 63, (0,0,255), -1)

result.jpg

  • cv2.ellipse() 绘制椭圆
# 绘制蓝色半椭圆
# 参数
# img   图像
# center    椭圆中心坐标
# axes  长轴和短轴长度
# angle 椭圆沿逆时针方向旋转的角度
# startAngle    椭圆弧顺时针方向起始的角度
# endAngle  椭圆弧顺时针方向结束的角度
# 颜色
# 笔画宽度 指定-1时,若为闭合图形,则填充整个图像
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

result.jpg

  • cv2.polylines() 绘制多边形
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,255))

result.jpg

  • cv2.putText() 加入文字
# 参数
# img   图像
# text    文字内容
# org   文字左下角起始坐标
# fontFace 字体
# fontScale 文字大小
# color 颜色, 这里是白色
# thickness 粗细
# lineType 线类型
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

result.jpg

代码路径:https://github.com/lissdy/opencv-python/blob/master/draw.py

缺口检测是计算机视觉中的一种重要应用。OpenCV-Python库提供了许多图像处理和计算机视觉的功能,可以用来实现缺口检测。 以下是一些实现缺口检测的步骤: 1. 读取图像:使用OpenCV-Python库中的cv2.imread()函数读取图像。 2. 灰度化处理:将读取的彩色图像转换为灰度图像,可以使用cv2.cvtColor()函数。 3. 图像二值化:将灰度图像转换为二值图像,可以使用cv2.threshold()函数。 4. 边缘检测:使用Canny算子进行边缘检测,可以使用cv2.Canny()函数。 5. 轮廓检测:使用cv2.findContours()函数找到图像中的所有轮廓。 6. 过滤轮廓:根据轮廓的大小、形状等特征,过滤掉不符合条件的轮廓。 7. 绘制轮廓:使用cv2.drawContours()函数将符合条件的轮廓绘制在原图上。 8. 显示结果:使用cv2.imshow()函数显示处理后的图像。 下面是一个简单的代码示例: ```python import cv2 # 读取图像 img = cv2.imread('image.jpg') # 灰度化处理 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 图像二值化 ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 边缘检测 edges = cv2.Canny(binary, 50, 150) # 轮廓检测 contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 过滤轮廓 for contour in contours: if cv2.contourArea(contour) < 100: continue if len(contour) < 5: continue # 绘制轮廓 cv2.drawContours(img, [contour], -1, (0, 0, 255), 2) # 显示结果 cv2.imshow('result', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,我们读取一张图像,然后进行灰度化处理、图像二值化、边缘检测和轮廓检测。然后我们通过过滤轮廓,只保留符合条件的轮廓,并使用cv2.drawContours()函数将其绘制在原图上。最后,使用cv2.imshow()函数显示处理后的图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值