背景:
由于历史原因,opencv总是默认按照BGR格式处理视频,通过opencv打开一款格式为YUY2的camera,opencv会默认转换成BGR格式,如果想拿到YUY2的camera的原始数据,那么需要进行设置,本文以python为例进行演示
python调用opencv库打开camera,默认BGR格式
import cv2 as cv
def setCamera ( self) :
self. cap = cv. VideoCapture( 0 )
self. cap. set ( cv. CAP_PROP_FRAME_WIDTH, FRAME_WIDTH)
self. cap. set ( cv. CAP_PROP_FRAME_HEIGHT, FRAME_HEIGHT)
self. cap. set ( cv. CAP_PROP_FPS, FRAME_RATE_FPS)
def run ( self) :
while 1 :
try :
ret, frame = self. cap. read( )
except :
ret = False
if ret:
print ( frame. shape)
cv. imshow( "capture" , test)
key = cv. waitKey( 1 )
else :
print ( "open fail" )
break
self. cap. release( )
cv. destroyAllWindows( )
print (frame.shape)输出为(height, width,3),即默认的BGR24
获取YUY2原始数据的方法
self. cap. set ( cv. CAP_PROP_CONVERT_RGB, 0 )
self. cap. set ( cv. CAP_PROP_MODE, cv. CAP_MODE_YUYV)
此时print (frame.shape)输出为(height, width,2),即YUY2格式的原始相机数据 由于opencv不能显示YUY2格式的图片,因此如果需要预览必须先转换格式后,再调用显示函数
test = cv. cvtColor( frame, cv. COLOR_YUV2BGR_YUY2) `
cv. imshow( "capture" , test)