繁体   English   中英

Matlab将网络摄像头分辨率更改为不可用的分辨率

[英]Matlab change webcam resolution to unavailable resolution

我目前正在从事的项目要求我在处理图像之前先进行捕获。 我使用的是Logitech c270网络摄像头,有许多可用的分辨率供我选择。 但是,没有可用的分辨率与我的情况匹配,因为我只想捕获正方形图像,但是网络摄像头支持的分辨率都不是正方形,而所有分辨率都是矩形。

例如,我想捕获640x640的图像(正方形),但是我的网络摄像头只能捕获矩形的图像(矩形的分辨率)。

由于无法通过任何方式更改网络摄像头的支持分辨率,因此在预览时是否可以通过任何方式设置网络摄像头的区域? 假设我在matlab中将默认的网络摄像头分辨率设置为960x720,但是当我向用户预览网络摄像头时,我从侧面裁剪了其他像素,仅显示640x640?

我了解到,我可以在捕捉到图像(在这种情况下,是人的脸部)之后再裁剪图像,但是,稍后再裁剪图像可能会导致脸部超出方形区域,或大于正方形区域。 我只希望该人将自己放置在网络摄像头的方形区域中。 有什么办法可以在Matlab中手动设置我的网络摄像头来执行类似的操作吗?

打开视频对象后,在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)的ROI。

注意:这已在Matlab R2011a中进行了测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM