导入库
import cv2 as cv
读取位于路径下的图像,并将其存储在变量img
中。
img = cv.imread(r"C:\Users\RANDALL\Desktop\wenzi\english.webp"
将img
从BGR颜色空间转换为灰度颜色空间,结果存储在变量gray
中。
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
对gray
图像进行阈值处理。如果像素值大于150,则赋值为255,否则赋值为0。结果存储在变量thresh
中,而ret
是一个标志,通常在此种情况下可以忽略。
ret,thresh = cv.threshold(gray,150,255,cv.THRESH_BINARY_INV)
查找thresh
图像中的轮廓。这里只查找最外层的轮廓,并简单地压缩轮廓的近似链。结果存储在变量contours
和hierarchy
中。
contours,herarchy = cv.findContours(thresh,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)
遍历找到的所有轮廓。
for contour in contours:
计算当前轮廓的边界矩形,其左上角坐标为(x,y),宽度和高度分别为w和h。
x,y,w,h = cv.boundingRect(contour)
在原始图像img
上绘制当前轮廓的边界矩形,颜色为红色(BGR:(0,0,255)),线宽为2。
cv.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
显示框选后图像。
cv.imshow('demo',img)
cv.waitKey(0)
下面是运行结果:
原图
框选后图片
另外一张图像
完整代码示例:
import cv2 as cv
img = cv.imread(r"C:\Users\RANDALL\Desktop\wenzi\wen3.png")
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
ret,thresh = cv.threshold(gray,150,255,cv.THRESH_BINARY_INV)
contours,herarchy = cv.findContours(thresh,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)
for contour in contours:
x,y,w,h = cv.boundingRect(contour)
cv.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
cv.imshow('demo',img)
cv.waitKey(0)
如果文章对你有所帮助,麻烦动动小手点点关注!!!