当前位置: 首页 > 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至指定范围,对特定色块进行检测,是图像检测中非常简单的方法。

http://www.dtcms.com/a/59924.html

相关文章:

  • 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的智能训练管理平台(源码+文档)
  • 每日一题-----面试
  • 【Transformer优化】Transformer的局限在哪?
  • docker启动jenkins,jenkins中调用docker
  • KubeKey 与 KubeSphere:快速构建 Kubernetes 集群
  • 用Deepseek写一个 HTML 和 JavaScript 实现一个简单的飞机游戏
  • 通过定制initramfs实现从单系统分区到双系统的无缝升级
  • python自动工具起号迅速,批量自动发布各类短视频
  • C语言数据结构之顺序表
  • 剑指 Offer II 063. 替换单词
  • 计算机视觉算法实战——老虎个体识别(主页有源码)
  • Python中的装饰器(Decorator) 详解