涉及到的函数有cv2.cvtColor(),imread(),imshow(),最常使用的颜色空间有BGR/GRAY/HSV,在OpenCV中有超过150种进行颜色空间转换的方法,而我们经常用到的就是BGR->Gray,BGR->HSV,经常使用的将色彩空间进行转换的函数就是cv2.cvtColor(input_image, flag),其中flag就是转换类型。
- 从BGR->Gray的转换,需要使用到flag就是cv2.COLOR_BGR2GRAY
- 对于BGR->HSV的转换,使用到的是flag cv2.COLOR_BGR2HSV
并且需要注意的是,在OpenCV中HSV格式中,H(色彩/色度)的范围是[0,180],S是饱和度,取值范围是[0,255],V(亮度)的取值范围是[0, 255]。但是不通的软甲使用的值可能不同,所以需要将OpenCV中的HSV值与其它软件中的HSV值进行对比。
import cv2 as cv
image = cv.imread("图片的路径,可以采用相对路径的方式")
cv.imshow("image demo01", image)
cv.waitKey(0)
cv.destroyAllWindows()
- cv2.waitKey()是一个键盘绑定函数,时间尺度是毫秒级别,函数等待的特定的几毫秒,是否有键盘输入。特定的几毫秒之内,如果按下任意键,这个函数就会返回其ASCII码值,程序将会继续运行。如果没有键盘输入,返回值为-1,在以上函数中我们将其值设置为0,它就会无限制的等待键盘输入,返回值为-1。
- 它也可以检测特定键是否被按下。
- cv2.destoryAllWindows()可以轻易的删除任何我们建立的窗口。如果你想要删除特定的窗口可以使用cv2.destroyWindow(),在函数传递窗口名就可以了。
需要注意的是,也可以先创建一个窗口,之后再加载图像,用到的函数为cv2.namedWindow(), 初始设定的标签为cv2.WINDOW_AUTOSIZE。但是如果你把标签改为cv2.WINDOW_NORMAL,就可以调整窗口的大小了。而默认情况下的cv2.WINDOW_AUTOSIZE是不能够调整窗口大小的。
import cv2 as cv
src = cv.imread("图片路径")
cv.namedWindow('image', cv.WINDOW_NORMAL)
cv.imshow('image', src)
cv.waitKey(0)
cv.destoryAllWindows()
cv2.cvtColor()函数色彩空间的转换示例
import cv2 as cv
def color_space_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
cv.imshow("gray image", gray)
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
cv.imshow("hsv image", hsv)
yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
cv.imshow("yuv image", yuv)
Ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
cv.imshow("ycrcb image", Ycrcb)
image = cv.imread("./images/photo01.jpg")
color_space_demo(image)
cv.waitKey(0)
cv.destroyAllWindows()
运行之后就可以显示各种色彩空间下的该图片了。