计算机视觉 | 基于图像处理和边缘检测算法的黄豆计数实验
创始人
2025-01-10 08:04:00
0

目录

  • 一、实验原理
  • 二、实验步骤
    • 1. 图像读取与预处理
    • 2. 边缘检测
    • 3. 轮廓检测
    • 4. 标记轮廓序号
  • 三、实验结果
  • 四、完整代码

Hi,大家好,我是半亩花海。 本实验旨在利用 Python 和 OpenCV 库,通过图像处理边缘检测算法实现黄豆图像的自动识别和计数,并在图像上标记每个黄豆的轮廓序号

一、实验原理

  • 灰度转换:将彩色图像转换为灰度图像,减少计算复杂度。
  • 高斯平滑:使用高斯模糊来减少图像噪声。
  • Canny边缘检测:检测图像中的边缘。
  • 轮廓查找:使用OpenCV的findContours函数检测图像中的轮廓。
  • 绘制轮廓和标记:在原始图像上绘制检测到的轮廓,并标记每个轮廓的序号。

二、实验步骤

1. 图像读取与预处理

import cv2 import matplotlib.pyplot as plt  # 读取图像 image = cv2.imread('soybean.jpg')  # 转换为灰度图像 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  # 平滑处理 blurred = cv2.GaussianBlur(gray, (11, 11), 0) 

soybean.jpg 图片如下所示,可自取:

2. 边缘检测

  • cv2.Canny(blurred, 30, 150):使用Canny算法进行边缘检测,参数30和150分别是低阈值和高阈值。
# 使用Canny边缘检测 edges = cv2.Canny(blurred, 30, 150) 

3. 轮廓检测

  • cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE):查找图像中的轮廓。RETR_EXTERNAL表示只检测外部轮廓,CHAIN_APPROX_SIMPLE表示使用简单的链式近似方法。
# 查找轮廓 contours, _ = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 

4. 标记轮廓序号

  • cv2.boundingRect(contour):计算轮廓的边界框,用于确定标注位置。
  • cv2.drawContours(image, [contour], -1, (0, 255, 0), 2):绘制轮廓,绿色线条,线宽为2像素。
  • cv2.putText(image, str(i + 1), (x + w // 2, y + h // 2), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2):在每个轮廓的中心位置标注序号,红色字体,字体大小为0.5,线宽为2像素。
# 绘制轮廓并标记序号 for i, contour in enumerate(contours):     # 计算轮廓的边界框,用于确定标注位置     x, y, w, h = cv2.boundingRect(contour)      # 绘制轮廓     cv2.drawContours(image, [contour], -1, (0, 255, 0), 2)      # 在轮廓内标注序号     cv2.putText(image, str(i + 1), (x + w // 2, y + h // 2), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) 

三、实验结果

  • plt.figure(figsize=(10, 10)):创建一个显示窗口,大小为10x10英寸。
  • plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)):将处理后的图像转换为RGB格式并显示。
  • plt.axis(‘off’):关闭坐标轴显示。
  • plt.show():显示图像。
  • print(f"黄豆数量: {len(contours)}"):输出检测到的黄豆数量。
# 显示结果图像 plt.figure(figsize=(10, 10)) plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) plt.axis('off') plt.show()  # 输出黄豆数量 print(f"黄豆数量: {len(contours)}") 

实验结果表明:图像中的所有18个黄豆都被成功识别和标记,每个黄豆的轮廓被绿色线条清晰绘制,序号标记在轮廓中心位置附近。

四、完整代码

import cv2 import matplotlib.pyplot as plt  # 读取图像 image = cv2.imread('soybean.jpg')  # 转换为灰度图像 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  # 平滑处理 blurred = cv2.GaussianBlur(gray, (11, 11), 0)  # 使用Canny边缘检测 edges = cv2.Canny(blurred, 30, 150)  # 查找轮廓 contours, _ = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)  # 绘制轮廓并标记序号 for i, contour in enumerate(contours):     # 计算轮廓的边界框,用于确定标注位置     x, y, w, h = cv2.boundingRect(contour)      # 绘制轮廓     cv2.drawContours(image, [contour], -1, (0, 255, 0), 2)      # 在轮廓内标注序号     cv2.putText(image, str(i + 1), (x + w // 2, y + h // 2), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)  # 显示结果图像 plt.figure(figsize=(10, 10)) plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) plt.axis('off') plt.show()  # 输出黄豆数量 print(f"黄豆数量: {len(contours)}") 

相关内容

热门资讯

玩家攻略新九游房卡充值/新道游... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...
终于发现!微信玩牛牛房卡链接,... 微信游戏中心:牛牛房卡,添加微信【56001354】,进入游戏中心或相关小程序,搜索“微信牛牛房卡”...
头条推荐!金花房卡怎么购买神盾... 神盾大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
一分钟发现,金花客服代理房卡获... 九酷大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
我来教你/金花微信链接市场价格... 我来教你/金花微信链接市场价格表精灵大厅/正规房卡平台有哪些Sa9Ix苹果iPhone 17手机即将...
1分秒分析财神获得房卡链接渠道... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...
正规平台有哪些,牛牛房卡游戏代... 今 日消息,海星大厅房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
终于发现!拼三张房卡哪里买,新... 微信游戏中心:拼三张房卡,添加微信【66336574】,进入游戏中心或相关小程序,搜索“微信拼三张房...
科技实测!牛牛房卡制作链接南瓜... 南瓜大厅/新道游房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 ...
一分钟介绍推荐,玩链接牛牛金花... 先锋大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
实测教程牛牛房卡购买/新老夫子... 实测教程牛牛房卡购买/新老夫子房卡在哪里购买! 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服...
头条推荐!牛牛房卡出售逍遥大厅... 头条推荐!牛牛房卡出售逍遥大厅/微信链接哪里购买房卡逍遥大厅是一款非常受欢迎的游戏,咨询房/卡添加微...
我来教你/牛牛房卡怎么购买皇豪... 微信游戏中心:皇豪互娱/新道游房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或...
正版授权!金花房卡代理零售新神... 新神兽/青龙大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
重大通报,游戏微信牛牛房卡新鸿... 重大通报,游戏微信牛牛房卡新鸿运大厅/科技房卡多少钱一张Sa9Ix苹果iPhone 17手机即将进入...
房卡全攻略,微信链接金花房卡怎... 卡卡大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
实测教程新蛮王哪里有详细房卡介... 实测教程新蛮王哪里有详细房卡介绍/牛牛房卡批发市场!微信房卡充值 添加房卡批售商:微【1138577...
终于发现!微信群开牛牛房卡,老... 微信游戏中心:斗牛房卡,添加微信【71319951】,进入游戏中心或相关小程序,搜索“微信斗牛房卡”...
IA解析/怎么买斗牛房卡新永和... 今 日消息,新永和/皇豪互娱房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更...
ia攻略/游戏推荐牛牛房卡出售... 江山大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...