python opencv(一) 色彩转换

前提条件

使用工具python3.x
使用库numpy;opencv,

api简介

1.cv.imread(“图片路径”)
用来读取本地图片,函数会返回一个对象

2.cv.imshow(“窗口名字”,b)
建立窗口来显示图片,b为cv.imread函数返回的对象

3.cv.split(src)
分割图像的彩色通道,一般分割为三通道,src为cv.imread函数返回的对象

4.cv.cvtColor(image, cv.COLOR_BGR2GRAY)
图片色彩转换,image为cv.imread函数返回的对象,cv.COLOR_BGR2GRAY是宏定义,表示将图片转换为灰度图像

5.cv.VideoCapture(“MP4文件路径”)
读取本地mp4文件,可以通过循环读取视频的每一帧图像

6.captrue =cv.VideoCapture(“MP4文件路径”)
6.(1)captrue .read()

返回读取每一帧结果

7.cv.inRange(img, lowerb = arr1, upperb = arr2)
实现二值化功能,参数img是cv.imread函数返回的对象,arr1,arr2是一个图像三通道的数组,表示要进行二值化的范围,具体可见代码示例

代码示例

import cv2 as cv
import numpy as np

def colorSpaceDemo(image): #将图片转换成各类型的颜色
	gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
	cv.imshow("gray",gray)
	hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
	cv.imshow("hsv",hsv)
	yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
	cv.imshow("yuv",yuv)
	YCrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
	cv.imshow("Ycrcb",YCrcb )
#读取视频
def extraceObjectDemo():
	captrue = cv.VideoCapture("test2.mp4")
	while(True):
		ret, frame = captrue.read()
		if ret == False:
			break;
		hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
		lowerHsv = np.array([37, 43, 46])
		upperHsv = np.array([77, 255, 255])
		mask = cv.inRange(hsv, lowerb = lowerHsv , upperb = upperHsv )
		cv.imshow('video',frame)
		#mask 通过对某一个范围的像素值进行检测,可以用来追踪
		cv.imshow('mask', mask)
		c = cv.waitKey(40)
		if c==27: #按ESC键退出
			break
src=cv.imread("D:/openCV_image/image/1.png")
# print(src)
#cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #新建一个window窗口,名字是input image,窗口大小为cv.WINDOW_AUTOSIZE,表示自动缩放
# colorSpaceDemo(src)
# extraceObjectDemo()

b, g, r = cv.split(src) #彩色通道分割
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)

# src[:,:,2] = 0 #将src的最后一个通道置0,效果可查看
# src[:,:,0] = 0 
# src = cv.merge([b, g, r]) #可以将拆开的通道再合并
cv.imshow("input image",src)

cv.waitKey(0) #等待按键,参数是等待时间
cv.destroyAllWindows() #摧毁所有windows窗口


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章