我目前正在处理的项目要求我在处理之前捕获图像。我正在使用logitech c270网络摄像头,有许多可用的解决方案供我选择。但是,没有一个可用的分辨率符合我的情况,因为我想捕获仅方形图像,但我的网络摄像头支持的分辨率都不是正方形,而且所有分辨率都只是矩形。
例如,我想要捕获640x640图像(正方形),但我的网络摄像头只能捕获矩形图像(矩形分辨率)。
由于我无法更改支持的网络摄像头分辨率,有什么办法可以在预览时设置网络摄像头的区域吗?让我们说我在matlab中将我的默认网络摄像头分辨率设置为960x720,但是当我向用户预览网络摄像头时,我从侧面裁剪出额外的像素,并且只显示640x640?
我知道我可以在拍摄完图像后拍摄图像(在这种情况下,是人脸),然而,稍后裁剪图像会导致脸部出现图像的可能性。方形区域,或大于方形区域。我只希望这个人将自己定位在网络摄像头的方形区域。有没有办法在matlab中手动设置我的网络摄像头来执行这样的操作?
答案 0 :(得分:1)
在Matlab中打开视频对象后说vid
,例如
vid = videoinput('winvideo', 1, 'YUY2_960x720');
执行以下操作:
startx = 161; % horizontal starting index
starty = 41; % vertical starting index
width = 640;
height = 640;
uddobj = imaqgate('privateGetField', vid, 'uddobject');
set(uddobj, 'ROIPosition', [startx, starty, width, height]);
preview(vid);
根据Matlab索引表示法获得该地区的投资回报率(41:680,161:800)。
N.B。这是在Matlab R2011a中测试的。