|
大家是不是苦于做颜色识别项目时对目标颜色的具体数值范围难以把控?
每次还要查表…有时候查表的颜色也与自己目标颜色对不上?
我,做了个机器视觉颜色阈值编辑器,与大家分享,先看看效果吧:
先输入目标图像位置

然后按下Enter

这就是效果图了,上面有HSV色域的取值范围,你可以随便拖直到屏幕只出现你想要的颜色区域。这样就可以把图片里的某一种颜色HSV取值范围记录下来,应用到你的视频颜色识别项目中啦!
当然,如果你想通过LAB色域、GRAY色域、RGB色域等等来选取目标颜色,程序也十分好改,无非就是一个函数,几个变量的问题。
源码如下:
- import cv2
- import numpy as np
- def callback(object):
- pass
- #def click(event, x, y, flags, para):
- # if events == cv2.EVENT_LBUTTONDOWN:
- # return 1
- # else:
- # return 0
-
- def Choose_Color():
- filename = input("Please Input Your Image Or Video : \n")
- image0 = cv2.imread(filename,1)
- img = cv2.cvtColor(image0, cv2.COLOR_BGR2HSV)
- #img = image0
- '''
- 目标:创建滑动条,把滑动条绑定到opencv窗口
- cv2.createTrackbar()函数,函数的第一个参数时滑动条的名字,第二个参数时滑动条被放置的窗口的名字,第三个参数是滑动条默认值,第四个参数时滑动条的最大值,第五个参数时回调函数,每次滑动都会调用回调函数。
- cv2.getTrackbarPos(),共有2个参数,第一个参数是滑动条名字,第二个时所在窗口偶,返回值是滑动条位置。
- '''
- img = cv2.resize(img,(int(img.shape[1] / 2),int(img.shape[0] / 2)))
-
- cv2.imshow("image",img)
-
- cv2.createTrackbar("H_min","image",50,255,callback)
- cv2.createTrackbar("H_max","image",150,255,callback)
-
- cv2.createTrackbar("S_min","image",0,255,callback)
- cv2.createTrackbar("S_max","image",255,255,callback)
-
- cv2.createTrackbar("V_min","image",0,255,callback)
- cv2.createTrackbar("V_max","image",255,255,callback)
-
- while(True):
- H_min = cv2.getTrackbarPos("H_min","image",)
- S_min = cv2.getTrackbarPos("S_min","image",)
- V_min = cv2.getTrackbarPos("V_min","image",)
- H_max = cv2.getTrackbarPos("H_max","image",)
- S_max = cv2.getTrackbarPos("S_max","image",)
- V_max = cv2.getTrackbarPos("V_max","image",)
-
- lower_hsv = np.array([H_min, S_min, V_min])
- upper_hsv = np.array([H_max, S_max, V_max])
-
- mask = cv2.inRange(img,lower_hsv,upper_hsv)
- #print("H_min = %d,H_max = %d,S_min = %d,S_max = %d,V_min = %d,V_max = %d"%(H_min,H_max,S_min,S_max,V_min,V_max))
-
- cv2.imshow("mask", mask)
- if cv2.waitKey(1) & 0XFF == 27:
- break
- Choose_Color()
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|