通常情况下OpenCV采集到的图像是IplImage格式,
但是不同摄像头支持的数据格式不一定相同。
中间过程中,OpenCV可能会对数据进行一定的格式转换,具体转换过程不详。
我手上有一个HYUNDAI 的摄像头,支持YUYV格式,用采集到的图像在QT4.7下显示。
看了下,QT4.7不支持YUYV格式的直接显示,故纠结如何处理,将YUYV格式数据转换为RGB888格式 。
用cvQueryFrame采集回的数据为IplImage,而且对于640*480大小数据,widthstep为1920,也就是每个像素占3个字节。
这跟了解到的YUYV数据格式不匹配,因为YUYV理论上每个像素只占据两个字节,在创建IplImage时也是三通道,
故推断可能在采集回来后已经转换为RGB格式,
将数据直接在QT的Qlabel上显示,但颜色偏蓝,原来有见过在OpenCV中数据格式是BGR,
可能是这个原因,故cvCvtColor(frame,frame,CV_BGR2RGB); 交换RG通道数据,即可正常显示。