用matlab来采集图像,遇到一些问题,首先我用的摄像头的格式是YUY2格式,并不支持RGB格式,在网上也找了很多资料,发现都是炒来炒去的,都没有用,最后找到解决的办法了,要加这条语句
set(vidobj,'ReturnedColorSpace','rgb');
当加了这句话后,发现正常了,但是很快又有现问题了,我发现我当把分辨率调高后图像仍会变色,在低分辨率时图像正常,经过几次实验终于发现,由于我的摄像头在高分辨率状态下,比如1600x1200下,有一个延迟的过程来让画面变为最佳,如果当视频的画面一出来就截图,保存的图像肯定会变色,唯一的办法只有等视频窗口调整完毕,变为最佳状态时,再截图,这次图像颜色就不会失真了
vidobj = videoinput('winvideo',1,'YUY2_1600x1200');
set(vidobj,'ReturnedColorSpace','rgb');
preview(vidobj);
pause(3);
start(vidobj)
snapshot = getsnapshot(vidobj);
然后保存一下就好了