有人知道如何在公开简历中使用四种渠道吗。我有一个rgb红外相机从e con系统(见3cam_CU40)和我试图写代码如下,以通常的方式。它只是一个完整的黑色视频。我想这是因为opencv最初要求的是gbr。但我不知道该怎么办视频饲料有4个频道。在
import cv2
def main():
windowName1 =" LIve video Feed"
cv2.namedWindow(windowName1)
cap=cv2.VideoCapture(1)
# cap.set(cv2.CAP_PROP_EXPOSURE,-1)
cap.set(cv2.CAP_FFMPEG,True)
cap.set(cv2.CAP_PROP_FPS,30)
if cap.isOpened():
ret,frame = cap.read()
else:
ret=False
while ret:
ret,frame =cap.read()
# r,g,b =cv2.split(frame)
# output = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.imshow(windowName1,frame)
if cv2.waitKey(1) ==27:
break
#cv2.destroyWindow(windowName)
cv2.destroyAllWindows()
cap.release()
if __name__ == '__main__':
main()
您需要添加下面的转换来分离RGB和IR。你还需要设置视频捕捉_对象.set(CV_CAP_PROP_CONVERT_RGB,false);打开视频节点后 获取原始的Y16图像opencv3.3及以上版本。在下面的opencv3.3verion Y16默认不支持。在
/*******************************************************************/
//转换为8位:
//将10位(1024)像素缩放为8位(255)(255/1024)=0.249023
convertScaleAbs(InputImage,bayer frame8,0.249023);
//填充缺失的G通道拜耳数据
convertergir2rggb(bayer frame8,bayer frame8,IRImage);
//实际的Bayer格式是BG,而Opencv使用的是BGR,而不是RGB,所以采用RG-Bayer格式
CVT颜色(BayerFrame8、BGRImage、COLOR_BayerRG2BGR);
namedWindow(“相机背景框”,窗口自动调整大小);
imshow(“摄像头背景框”,BGRImage);
namedWindow(“相机红外帧”,窗口自动调整大小);
imshow(“相机红外帧”,IRImage);
/**********************************************************************/
//转换后的实际数据格式BGIRR BGGR-IR替换为G
//红外数据作为单独的图像收集
布尔转换器RGB(Mat BAYERGIR,Mat&BayerRGGB,Mat&IRimage)
{
//用G数据替换IR像素后的结果图像
拜耳RGGB=拜尔吉尔克隆();
//红外数据将是拜耳图像大小的一半
IRimage=垫子(拜尔吉公司()高度/2,拜尔吉公司().宽度/2,CV_8UC1);
//复制IR数据并将IR数据替换为G
for(int Row=0;行<;拜尔吉罗;行+=2)
{
对于(int Col=0;Col<;拜尔吉尔科尔斯;Col+=2)
{
//将红外数据设置为绿色
拜耳RGGB.at(行+1,列)=拜尔吉尔(行,列+1);
//设置红外数据
红外图像(第/2行,第2列)=拜尔吉尔(行+1,列);
}
}
返回true;
}
/********************************************************************************/
相关问题 更多 >
编程相关推荐