利用opencv2识别图像中的像素值大于100的边框并截取该图形另存为新图片
可以使用OpenCV来实现图像边框的识别和截取,以下是一个简单的示例代码:
import cv2
# 读取图像
image = cv2.imread('input.jpg')
# 灰度化处理
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 边缘检测
edges = cv2.Canny(gray, 100, 200)
# 轮廓检测
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历所有轮廓
for contour in contours:
# 计算轮廓的边界框
x, y, w, h = cv2.boundingRect(contour)
# 判断边界框内的像素值是否大于100
if cv2.mean(gray[y:y+h, x:x+w])[0] > 100:
# 绘制边界框
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 截取并保存图像
roi = image[y:y+h, x:x+w]
cv2.imwrite('output.jpg', roi)
# 显示结果
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述代码中,我们首先读取图像并将其转换为灰度图像。然后使用Canny边缘检测算法得到图像的边缘。接下来使用findContours函数找到图像中的轮廓,并遍历每个轮廓。对于每个轮廓,我们计算其边界框,并判断边界框内的像素值是否大于100。如果是,则在原图像上绘制边界框,并将该部分图像保存为新的图片。最后,我们显示结果图像。
需要注意的是,上述代码中的input.jpg和output.jpg分别表示输入图像和输出图像的文件名,请根据实际情况进行修改
原文地址: https://www.cveoy.top/t/topic/hWXB 著作权归作者所有。请勿转载和采集!