基于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至指定范围,对特定色块进行检测,是图像检测中非常简单的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值