import cv2 as cv import numpy as np
图像取反:
def inverse(image): dst =cv.bitwise_not(image) cv.imshow("inverse image",dst)
比较运行时间:
t1 =cv.getTickCount() inverse(src) t2 =cv.getTickCount() time =(t2-t1)/cv.getTickFrequency()*1000 print("time : %s ms"%time)
色彩空间:
三维的BGR色彩空间
比较常用的是HSV与RGB YUV与RGB色彩空间转换
色彩空间的转换:
def color_space_demo(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)
对特定颜色的捕捉:
这里是打开一个视频对视频中的某种颜色进行捕捉颜色
使用inRange()函数
def extrace_object(): capture =cv.VideoCapture("C:\\Users\\william\\Pictures\\shang.mp4") while(True): ret,frame =capture.read() if ret == False: break hsv =cv.cvtColor(frame,cv.COLOR_BGR2HSV) lower_hsv =np.array([37,43,46]) upper_hsv=np.array([77,255,255]) mask=cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv) cv.imshow("video",frame) cv.imshow("mask",mask) c =cv.waitKey(40) if c ==27: break
也适用图像:
lower_hsv =np.array([37,43,46]) upper_hsv=np.array([77,255,255]) mask1=cv.inRange(src,lowerb=lower_hsv,upperb=upper_hsv) cv.imshow("mask1",mask1)
演示:
通道的分离:
src =cv.imread("C:\\Users\\william\\Pictures\\go.jpg") cv.imshow("input image",src) #通道的分离 b,g,r =cv.split(src) cv.imshow("blue",b) cv.imshow("green",g) cv.imshow("red",r)
对某一通道进行赋值:
src[:,:, 2] = 0 cv.imshow("change0",src)
通道的合并:
src=cv.merge([b,g,r]) cv.imshow("change",src)