日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

四、色彩空间

發(fā)布時(shí)間:2023/12/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四、色彩空间 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、色彩空間

1、什么是色彩空間?
色彩空間是定義的顏色范圍。

2、常見(jiàn)的色彩空間有哪些?
①RGB

②HSV

在OpenCV中,Hue的值為0~180°,之所以不是360°是因?yàn)?#xff0c;8位存不下,故進(jìn)行歸一化操作,使得Hue取值在0 ~180°,可以通過(guò)一個(gè)字節(jié)來(lái)存儲(chǔ)。
③HIS
Hue:色調(diào)
Intensity:強(qiáng)度
Saturation :飽和度
④YCrCb
主要在早期的人的皮膚檢測(cè)方面應(yīng)用
⑤YUV
Android開(kāi)發(fā)中常用,Linux的色彩空間

3、色彩空間之間的相互轉(zhuǎn)化

import cv2def color_space(image):gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)cv2.imshow("gray",gray)hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)cv2.imshow("hsv",hsv)yuv = cv2.cvtColor(image,cv2.COLOR_BGR2YUV)cv2.imshow("yuv",yuv)ycrcb = cv2.cvtColor(image,cv2.COLOR_BGR2YCrCb)cv2.imshow("ycrcb",ycrcb)src = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE) cv2.imshow("input image",src) t1 = cv2.getTickCount() color_space(src) t2 = cv2.getTickCount() time = (t2-t1)/cv2.getTickFrequency()#顯示當(dāng)前運(yùn)行時(shí)間 print("time:%s ms"%(time*1000))#輸出當(dāng)前運(yùn)行時(shí)間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

運(yùn)行效果圖如下:

二、對(duì)視頻中的目標(biāo)(青色水杯)進(jìn)行跟蹤


cv2.inRange(hsv,lowerb=lower,upperb=upper):對(duì)HSV顏色過(guò)濾,lowerb和upperb需要查上面的表進(jìn)行顏色轉(zhuǎn)換
方法一:目標(biāo)物體白色,其余黑色

import cv2 import numpy as npdef extrace_object():capture = cv2.VideoCapture("G:/Juptyer_workspace/study/data/yy.mp4")while(True):ret,frame = capture.read()if ret==False:breakhsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)lower = np.array([78,43,46])#由于水杯是青色的故需要根據(jù)表格選出hsv對(duì)應(yīng)的min值upper = np.array([99,255,255])#由于水杯是青色的故需要根據(jù)表格選出hsv對(duì)應(yīng)的max值mask = cv2.inRange(hsv,lowerb=lower,upperb=upper)cv2.imshow("video",frame)cv2.imshow("mask",mask)c = cv2.waitKey(40)if c==27:breakt1 = cv2.getTickCount() extrace_object() t2 = cv2.getTickCount() time = (t2-t1)/cv2.getTickFrequency()#顯示當(dāng)前運(yùn)行時(shí)間 print("time:%s ms"%(time*1000))#輸出當(dāng)前運(yùn)行時(shí)間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

效果圖如下:

方法二:目標(biāo)物體顏色保留,其余黑色

import cv2 import numpy as npdef extrace_object():capture = cv2.VideoCapture("G:/Juptyer_workspace/study/data/yy.mp4")while(True):ret,frame = capture.read()if ret==False:breakhsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)lower = np.array([78,43,46])#由于水杯是青色的故需要根據(jù)表格選出hsv對(duì)應(yīng)的min值upper = np.array([99,255,255])#由于水杯是青色的故需要根據(jù)表格選出hsv對(duì)應(yīng)的max值mask = cv2.inRange(hsv,lowerb=lower,upperb=upper)dst = cv2.bitwise_and(frame,frame,mask=mask)cv2.imshow("video",frame)#cv2.imshow("mask",mask)cv2.imshow("dst",dst)c = cv2.waitKey(40)if c==27:breakt1 = cv2.getTickCount() extrace_object() t2 = cv2.getTickCount() time = (t2-t1)/cv2.getTickFrequency()#顯示當(dāng)前運(yùn)行時(shí)間 print("time:%s ms"%(time*1000))#輸出當(dāng)前運(yùn)行時(shí)間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

效果圖如下:

三、對(duì)彩色圖像三顏色通道進(jìn)行分割顯示并合并顯示

cv2.split(src):對(duì)src三顏色通道的彩色圖像進(jìn)行分割
cv2.merge([b,g,r]):將b,g,r三個(gè)單顏色通道圖像進(jìn)行合并

import cv2 import numpy as npsrc = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE) cv2.imshow("input image",src) t1 = cv2.getTickCount()b,g,r = cv2.split(src)#拆分彩色通道圖像 cv2.imshow("blue",b) cv2.imshow("green",g) cv2.imshow("red",r)src = cv2.merge([b,g,r])#將拆分的三個(gè)單顏色通道進(jìn)行合并還原 src[:,:,0]=0#將第0個(gè)顏色通道,即B顏色通道賦值為0 cv2.imshow("changed",src)t2 = cv2.getTickCount() time = (t2-t1)/cv2.getTickFrequency()#顯示當(dāng)前運(yùn)行時(shí)間 print("time:%s ms"%(time*1000))#輸出當(dāng)前運(yùn)行時(shí)間單位為ms cv2.waitKey(0)cv2.destroyAllWindows()

效果圖如下:

總結(jié)

以上是生活随笔為你收集整理的四、色彩空间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。