3733手游网站在哪里做的,百度热词搜索指数,深圳坪山很偏僻吗,外贸自己做网站引言
在这篇博客中#xff0c;我们将探讨如何使用计算机视觉技术自动检测图像中曲别针的数量。 如图#xff1a;
[1]使用灰度转换
由于彩色信息对于曲别针计数并不重要#xff0c;我们将图像转换为灰度图#xff0c;这样可以减少处理数据的复杂度#xff0c;加速后续的…引言
在这篇博客中我们将探讨如何使用计算机视觉技术自动检测图像中曲别针的数量。 如图
[1]使用灰度转换
由于彩色信息对于曲别针计数并不重要我们将图像转换为灰度图这样可以减少处理数据的复杂度加速后续的图像处理步骤。
gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)[2]二值化处理
通过应用二值化处理我们将灰度图转换为黑白图像。在这个步骤中图像中的所有像素点要么是黑色要么是白色这简化了轮廓的检测。
_, binary cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)二值化后的图片
[3]轮廓检测
使用OpenCV的findContours函数我们从二值图像中提取轮廓。这些轮廓代表潜在的曲别针。
# 查找轮廓
contours, _ cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓并计算面积
for contour in contours:cv2.drawContours(image, [contour], -1, (0, 255, 0), 2)但是这边我们可以看到很多不必要的内容都被放进来了所以我们接着进行进一步操作。
[4]面积过滤和计数
为了区分真正的曲别针和其他噪声我们计算每个轮廓的面积并只统计那些面积超过预设阈值的轮廓。这一步骤帮助我们准确地识别和计数曲别针。
# 查找轮廓
contours, _ cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.imshow(Binary, binary)# 初始化计数器
large_contour_count 0
min_area 10000 # 设置面积阈值根据实际情况调整# 遍历轮廓并计算面积
for contour in contours:area cv2.contourArea(contour)if area min_area:large_contour_count 1cv2.drawContours(image, [contour], -1, (0, 255, 0), 2) # 绘制满足条件的轮廓效果 可以看出确实正确的识别出曲别针的数量
完整代码
import cv2# 加载图像
image cv2.imread(./images/nums.jpg)
cv2.imshow(Original, image)# 转换为灰度图
gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 应用二值化阈值
_, binary cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
cv2.imshow(Binary, binary)# 查找轮廓
contours, _ cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.imshow(Binary, binary)# 初始化计数器
large_contour_count 0
min_area 10000 # 设置面积阈值根据实际情况调整# 遍历轮廓并计算面积
for contour in contours:area cv2.contourArea(contour)if area min_area:large_contour_count 1cv2.drawContours(image, [contour], -1, (0, 255, 0), 2) # 绘制满足条件的轮廓# 显示图像
cv2.imshow(Contoured Image, image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 输出符合条件的曲别针数量
print(f曲别针数量为: {large_contour_count})