当前位置: 首页 > news >正文

基于opencv的hsv色块检测

        HSV 颜色阈值调参在计算机视觉和图像处理中有广泛的应用,以下是一些典型场景:
自动驾驶中识别交通标志或车道线,机器人追踪特定颜色的物体、医学影像中分割病变组
织,卫星图像中提取植被或水体、检测产品颜色是否符合标准,或识别缺陷区域等等。

import cv2
import numpy as np
import cv2

# 创建相机对象
cap = cv2.videoCapture(0)

# 创建窗口
cv2.namedWindow('HSV Thresholding')
cv2.namedWindow('Camera Feed')


# 创建滑动条
def nothing():
    pass

# HSV 的 H(色调)范围是 0-180,S(饱和度)和 V(亮度)范围是 0-255
cv2.createTrackbar('Hue Min', 'HSV Thresholding', 0, 180, nothing)
cv2.createTrackbar('Hue Max', 'HSV Thresholding', 180, 180, nothing)
cv2.createTrackbar('Sat Min', 'HSV Thresholding', 0, 255, nothing)
cv2.createTrackbar('Sat Max', 'HSV Thresholding', 255, 255, nothing)
cv2.createTrackbar('Val Min', 'HSV Thresholding', 0, 255, nothing)
cv2.createTrackbar('Val Max', 'HSV Thresholding', 255, 255, nothing)

while True:
    ret, frame = cap.read()
    if ret = 0:
        print("无法读取帧")
        break
    # 将 BGR 图像转换为 HSV 图像
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    # 获取滑动条的值
    h_min = cv2.getTrackbarPos('Hue Min', 'HSV Thresholding')
    h_max = cv2.getTrackbarPos('Hue Max', 'HSV Thresholding')
    s_min = cv2.getTrackbarPos('Sat Min', 'HSV Thresholding')
    s_max = cv2.getTrackbarPos('Sat Max', 'HSV Thresholding')
    v_min = cv2.getTrackbarPos('Val Min', 'HSV Thresholding')
    v_max = cv2.getTrackbarPos('Val Max', 'HSV Thresholding')

    # 设置 HSV 阈值
    lower_hsv = np.array([h_min, s_min, v_min])
    upper_hsv = np.array([h_max, s_max, v_max])
    # 根据 HSV 阈值创建掩码
    mask = cv2.inRange(hsv, lower_hsv, upper_hsv)

    # 将掩码应用于原始图像
    result = cv2.bitwise_and(frame, frame, mask=mask)

    # 显示结果
    cv2.imshow('Camera Feed', frame)
    cv2.imshow('HSV Thresholding', mask)
    cv2.imshow('Result', result)

    # 按 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break


# 释放摄像头资源
cap.release()

# 关闭所有 OpenCV 窗口
cv2.destroyAllWindows()

        这段代码主要用来调试hsv至指定范围,对特定色块进行检测,是图像检测中非常简单的方法。

相关文章:

  • vue和easyui渲染问题
  • 代码随想录二刷|图论2
  • Java高频面试之集合-06
  • 深度链接技术解析:openinstall如何通过场景还原优化用户体验?
  • 如何利用Postman对比出新旧接口之间的差异(Diff)
  • dfs:五子棋对弈15蓝桥杯a组1题
  • 数据结构第八节:红黑树(初阶)
  • 【图灵商城项目-登录失败:密码不正确,问题已解决】
  • Python使用MyQR生成动态二维码
  • 【LangChain】理论及应用实战(2)
  • Git基础之基本操作
  • 【GPT入门】第2课 跑通第一openAI程序
  • 【C++】:STL详解 —— 红黑树封装map和set
  • 《C#上位机开发从门外到门内》1-2:上位机开发语言与工具、开发环境部署
  • 初识Bert
  • Javascript 原型和原型链
  • [项目]基于FreeRTOS的STM32四轴飞行器: 七.遥控器按键
  • 【Recon】Git源代码泄露题目解题方法
  • java项目之基于ssm的智能训练管理平台(源码+文档)
  • 每日一题-----面试
  • 坚持吃素,是不是就不会得高血脂了?
  • 江西贵溪:铜板上雕出的国潮美学
  • 市场监管总局等五部门约谈外卖平台企业
  • 多家中小银行存款利率迈入“1时代”
  • 郑州通报涉“健康证”办理有关问题查处进展情况
  • 2025年度十大IP!IP SH荣膺文化综合类TOP10