python代码实现HSV的阈值查找

代码来自网络

 

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2
import numpy as np


def nothing(x):
	pass


# use track bar to perfectly define (1/2)
# the lower and upper values for HSV color space(2/2)
cv2.namedWindow("Tracking")
# 参数:1 Lower/Upper HSV 3 startValue 4 endValue
cv2.createTrackbar("LH", "Tracking", 35, 255, nothing)
cv2.createTrackbar("LS", "Tracking", 43, 255, nothing)
cv2.createTrackbar("LV", "Tracking", 46, 255, nothing)
cv2.createTrackbar("UH", "Tracking", 77, 255, nothing)
cv2.createTrackbar("US", "Tracking", 255, 255, nothing)
cv2.createTrackbar("UV", "Tracking", 255, 255, nothing)

while True:
	frame = cv2.imread("/home/porter/QTProject/fangkuaijiance/build-fangkuaijiance-unknown-Debug/image/20200919_194123_color.jpg")
	hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

	l_h = cv2.getTrackbarPos("LH", "Tracking")
	l_s = cv2.getTrackbarPos("LS", "Tracking")
	l_v = cv2.getTrackbarPos("LV", "Tracking")

	u_h = cv2.getTrackbarPos("UH", "Tracking")
	u_s = cv2.getTrackbarPos("US", "Tracking")
	u_v = cv2.getTrackbarPos("UV", "Tracking")

	l_g = np.array([l_h, l_s, l_v])  # lower green value
	u_g = np.array([u_h, u_s, u_v])

	mask = cv2.inRange(hsv, l_g, u_g)

	res = cv2.bitwise_and(frame, frame, mask=mask)  # src1,src2

	cv2.imshow("frame", frame)
	cv2.imshow("mask", mask)
	cv2.imshow("res", res)
	key = cv2.waitKey(1)
	if key == 27:  # Esc
		break

cv2.destroyAllWindows()

代码转载自:https://blog.csdn.net/weixin_43124455/article/details/105082408

https://www.cnblogs.com/wangxinyu0628/p/5928824.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用OpenCV库实现的检测蓝色图像并标记边缘的Python代码: ```python import cv2 # 设置摄像头参数 focal_length = 3 # 焦距为3mm sensor_width = 3.6 # 传感器宽度为3.6mm image_width = 1080 # 图像宽度为1080像素 pixels_per_mm = image_width / sensor_width # 读取摄像头 cap = cv2.VideoCapture(0) while True: # 读取摄像头图像 ret, frame = cap.read() # 将图像转换为HSV颜色空间 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 设置蓝色的阈值范围 lower_blue = (100, 50, 50) upper_blue = (130, 255, 255) # 根据阈值范围获取蓝色区域的掩模 mask = cv2.inRange(hsv, lower_blue, upper_blue) # 对掩模进行形态学操作,消除噪点和空洞 kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) # 查找边缘 contours, hierarchy = cv2.findContours(mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) # 遍历边缘,标记矩形框 for contour in contours: area = cv2.contourArea(contour) if area > 1000: x, y, w, h = cv2.boundingRect(contour) size = max(w, h) / pixels_per_mm # 计算物体大小 if size < 150: # 如果物体大小小于手机大小,则认为是噪点 continue cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.putText(frame, 'Size: {:.2f}mm'.format(size), (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) # 显示图像 cv2.imshow('Frame', frame) # 按下q键退出 if cv2.waitKey(1) == ord('q'): break # 释放摄像头,关闭窗口 cap.release() cv2.destroyAllWindows() ``` 这段代码首先设置了摄像头的参数,包括焦距、传感器宽度和图像宽度,然后循环读取摄像头图像,将图像转换为HSV颜色空间,并根据蓝色的阈值范围获取蓝色区域的掩模。接着对掩模进行形态学操作,消除噪点和空洞,然后查找边缘,并遍历边缘,标记矩形框。最后显示图像,并按下q键退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值