给大家整理了相关的编程文章,网友国木兰根据主题投稿了本篇教程内容,涉及到python、opencv、颜色、转换、python opencv将特定颜色转换代码详解相关内容,已被111网友关注,下面的电子资料对本篇知识点有更加详尽的解释。
python opencv将特定颜色转换代码详解
色彩空间转换
# Color_conversion img2 = cv.cvtColor(img,cv.COLOR_BGR2HSV) img3 = cv.cvtColor(img,cv.COLOR_BGR2YUV) img4 = cv.cvtColor(img,cv.COLOR_BGR2GRAY) img5 = cv.cvtColor(img,cv.COLOR_BGR2YCrCb)
色彩空间转换使用同一个函数cv.cvtColor。分别转换成HSV、YUV、GRAY、YCrCb空间。
for i in range(1): plt.subplot(221), plt.imshow(img2) plt.title('HSV Image'), plt.xticks([]),plt.yticks([]) plt.subplot(222), plt.imshow(img3) plt.title('YUV Image'),plt.xticks([]),plt.yticks([]) plt.subplot(223), plt.imshow(img4) plt.title('GRAY Image'), plt.xticks([]),plt.yticks([]) plt.subplot(224), plt.imshow(img5) plt.title('YCrCb Image'),plt.xticks([]),plt.yticks([]) plt.show()
画出四幅图片手动居中
找到特定颜色
lower_hsv = np.array([26,43,46]) upper_hsv = np.array([34,255,255]) mask = cv.inRange(img2, lower_hsv, upper_hsv)
使用cv.inRange函数找到特定的颜色,输入参数分别为(图片,要找的颜色下边界,要找的颜色上边界)
使用色彩空间是HSV的图片,因为这个空间对颜色比较敏感。
找到黄色的区域有哪些,就要知道黄色对应的区间的上下边界。如下图所示:我们只需要看图找颜色就可以了。
下面是原图和找到黄色的对比图:
有一点need考虑的是:经过inRange的图像应该是二值的,为什么我的黄色还是黄色呢?留给你自己想把
代码
https://github.com/Clayygou/python-opencv/tree/master/Color_space_conversion
python opencv 检测特定颜色
import cv2 import numpy as np cap = cv2.VideoCapture(0) # set blue thresh 设置HSV中蓝色、天蓝色范围 lower_blue = np.array([78,43,46]) upper_blue = np.array([110,255,255]) while(1): # get a frame and show 获取视频帧并转成HSV格式, 利用cvtColor()将BGR格式转成HSV格式,参数为cv2.COLOR_BGR2HSV。 ret, frame = cap.read() cv2.imshow('Capture', frame) # change to hsv model hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # get mask 利用inRange()函数和HSV模型中蓝色范围的上下界获取mask,mask中原视频中的蓝色部分会被弄成白色,其他部分黑色。 mask = cv2.inRange(hsv, lower_blue, upper_blue) cv2.imshow('Mask', mask) # detect blue 将mask于原视频帧进行按位与操作,则会把mask中的白色用真实的图像替换: res = cv2.bitwise_and(frame, frame, mask=mask) cv2.imshow('Result', res) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()