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

基于颜色进行轮廓分割,基于opencv和python

1. 阈值调整,交互式的阈值调整,确定上限和下限:

import cv2 as cv
import numpy as npdef Tcallback(event):H = cv.getTrackbarPos('H', 'show_pic')S = cv.getTrackbarPos('S', 'show_pic')V = cv.getTrackbarPos('V', 'show_pic')H0 = cv.getTrackbarPos('H0', 'show_pic')S0 = cv.getTrackbarPos('S0', 'show_pic')V0 = cv.getTrackbarPos('V0', 'show_pic')lower_red = np.array([H0, S0, V0])upper_red = np.array([H, S, V])mask = cv.inRange(hsv, lower_red, upper_red)res = cv.bitwise_and(img, img, mask=mask)cv.imshow('show_pic', res)img = cv.imread('sam2.png')#, 1)
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV_FULL)cv.namedWindow('show_pic')
cv.resizeWindow('show_pic', 640, 480)cv.createTrackbar('H', 'show_pic', 255, 255, Tcallback)
cv.createTrackbar('S', 'show_pic', 255, 255, Tcallback)
cv.createTrackbar('V', 'show_pic', 255, 255, Tcallback)  cv.createTrackbar('H0', 'show_pic', 0, 255, Tcallback)
cv.createTrackbar('S0', 'show_pic', 43, 255, Tcallback)
cv.createTrackbar('V0', 'show_pic', 46, 255, Tcallback)if cv.waitKey(0) == ord('q'):cv.destroyAllWindows()

2. 阈值分割,并找到最大轮廓

现根据mask找到所有轮廓

对所有轮廓排序,找到最大的

再对最大轮廓去凸多边形,用来对噪声做过滤。

img=cv2.resize(img,(640,480))
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV_FULL)
mask_green=cv2.inRange(hsv, self.lower_green, self.upper_green)
img_c,contours, hierarchy = cv2.findContours(mask_green,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
list_c=sorted(contours,key=cv2.contourArea,reverse=True)
c_max=list_c[0]
approx = cv2.approxPolyDP(c_max, 0.01 * cv2.arcLength(c_max, True), True)
hull = cv2.convexHull(c_max)

http://www.lryc.cn/news/123670.html

相关文章:

  • TCP重连 - 笔记
  • Qt画波浪球(小费力)
  • 监控Kubernetes Node组件的关键指标
  • Mysql之优化-主从复制
  • 编程之道:构建优雅可维护代码的基石
  • 十大经典排序算法
  • Linux6.37 Kubernetes 集群调度
  • 记录一次前端input中的值为什么在后端取不到值
  • Apipost接口自动化控制器使用详解
  • Leaflet入门,Leaflet如何自定义版权信息,以vue2-leaflet修改自定义版权为例
  • 【AI】p54-p58导航网络、蓝图和AI树实现AI随机移动和跟随移动、靠近玩家挥拳、AI跟随样条线移动思路
  • mysql事务隔离级别详细讲解
  • 如何利用 EMC 模型解决能源服务提供商的瓶颈
  • C#--StringComparison枚举值解析
  • adb对安卓app进行抓包(ip连接设备)
  • 【EI复现】考虑区域多能源系统集群协同优化的联合需求侧响应模型(Matlab代码实现)
  • 日常BUG —— Java判空注解
  • 【基础类】—前端算法类
  • 中国信通院腾讯安全发布《2023数据安全治理与实践白皮书》
  • linux下用脚本将目录内的文件分类到各自的创建年份(如2023)或年月份(如2023/202308)目录内
  • 新手如何快速学习单片机?
  • 【容器化】Oceanbase镜像构建及使用
  • 软考第二章 信息技术发展
  • 【Unity每日一记】向量操作摄像机的移动(向量加减)
  • C++初阶之一篇文章教会你queue和priority_queue(理解使用和模拟实现)
  • 性能场景和性能需求指标
  • Python学习 -- 常用函数与实例详解
  • MySQL 账号权限
  • [Mongodb 5.0]单机启动
  • [HDLBits] Exams/m2014 q4b