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)