首页
  • 上位机
  • 嵌入式
  • AI
  • Web
教程
MarkDown语法
有趣的项目
其他
GitHub
首页
  • 上位机
  • 嵌入式
  • AI
  • Web
教程
MarkDown语法
有趣的项目
其他
GitHub
  • opencv

opencv

使用opencv视觉方案识别电线颜色

轮廓识别

通常做法:

  1. 读取图像
  2. 灰度化
  3. 高斯模糊减少噪声
  4. canny算子轮廓检测
  5. findContours 寻找轮廓
  6. 遍历轮廓并画出最小外接矩形
img = cv2.imread("test.jpg")
# 等比缩放
img = cv2.resize(img, None, fx=0.2, fy=0.2)
# 灰度图
imgc = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 将灰度图像进行高斯模糊
imgc = cv2.GaussianBlur(imgc, (5, 5), 0)  # 高斯模糊
# 进行轮廓的检测
canny = cv2.Canny(wirte_c1, 100, 200)
# 找到每个二值图像中的轮廓
contours = cv2.findContours(canny, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

颜色识别

通常做法:

  1. 读取图像
  2. 转化成HSV空间
  3. 定义颜色范围
  4. 使用cv2.inRange()函数 根据颜色范围进行二值化 获取mask
  5. findContours 寻找轮廓
  6. 遍历轮廓并画出最小外接矩形
img = cv2.imread("test.jpg")
# 等比缩放
img = cv2.resize(img, None, fx=0.2, fy=0.2)
# 转换为 HSV 色彩空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义黑色、白色和绿色的颜色范围
lower_green = np.array([0, 140, 0])
upper_green = np.array([130, 255, 255])
# 根据颜色范围,对图像进行二值化处理
mask_green = cv2.inRange(hsv, lower_green, upper_green)
# 找到每个二值图像中的轮廓
contours = cv2.findContours(mask_green, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

TODO

  • [x] 1.识别框调小
  • [x] 2.长宽防变换
  • [x] 3.摄像头持续刷新
  • [x] 4.flask增加:删除功能、重码检测、界面优化
  • [x] 5.扫码验证API接口是否重复
  • [x] 6.轮廓识别demo(不行,底色相似只能2根线)
  • [x] 7.电线色差调参
  • [x] 8.限位:防止三根线任意调换(位置限制)
  • [x] 9.改流程,扫码后按空格执行检测
  • [x] 10. fix:程序检测完成后,全选条码方便进行下一个产品验证
  • [x] 11. 绿线不在中间的逻辑会误判。(往上调整取景框)
  • [x] 12. 两种产品使用不同的颜色参数
  • [ ] n.待续...