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

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


http://www.kler.cn/a/579011.html

相关文章:

  • Qt 进度条与多线程应用、基于 Qt 的文件复制工具开发
  • NO.32十六届蓝桥杯备战|函数|库函数|自定义函数|实参|形参|传参(C++)
  • 系统架构评估方法-ATAM方法
  • SQL根据分隔符折分不同的内容放到临时表
  • 【SpringBoot】深入剖析 Spring Boot 自动装配原理(附源码与实战)
  • vue3 vite项目安装eslint
  • python将目录下的所欲md文件转化为html和pdf
  • JVM常用概念之移动GC和局部性
  • k8s下部署ansible进行node-export二安装
  • electron builder打包时,出现errorOut=ERROR: Cannot create symbolic link
  • 【AVRCP】协议深入解析(1):从框架到数据单元
  • 负载均衡集群和高可用集群
  • 【神经网络】0.深度学习基础:解锁深度学习,重塑未来的智能新引擎
  • chatgpt完成python提取PDF简历指定内容的案例
  • 【2025深夜随笔】简单认识一下Android Studio
  • kafka单机部署实战
  • 10分钟看明白爆火的本地知识库! 掌握本地知识库基本概念与RAG的完整架构
  • C++学习之格斗小游戏综合案例
  • 6-5,web3浏览器链接区块链(react+区块链实战)
  • 【已解决】AttributeError: module ‘numpy‘ has no attribute ‘object‘.