Image Matlab将网络摄像头分辨率更改为不可用分辨率
我目前正在从事的项目要求我在处理之前先拍摄图像。我使用的是网络摄像头,有很多分辨率供我选择。但是,没有一个可用的分辨率与我的情况相匹配,因为我只想拍摄正方形的图像,但我的网络摄像头支持的分辨率都不是正方形,都是矩形 例如,我想捕获640x640图像(正方形),但我的网络摄像头只能捕获矩形图像(分辨率为矩形) 既然我无法更改支持的网络摄像头分辨率,那么在预览网络摄像头时,我是否可以设置网络摄像头的区域?假设我在matlab中将默认的网络摄像头分辨率设置为960x720,但是当我向用户预览网络摄像头时,我会从侧面裁剪出额外的像素,并且只显示640x640Image Matlab将网络摄像头分辨率更改为不可用分辨率,image,matlab,webcam,resolution,Image,Matlab,Webcam,Resolution,我目前正在从事的项目要求我在处理之前先拍摄图像。我使用的是网络摄像头,有很多分辨率供我选择。但是,没有一个可用的分辨率与我的情况相匹配,因为我只想拍摄正方形的图像,但我的网络摄像头支持的分辨率都不是正方形,都是矩形 例如,我想捕获640x640图像(正方形),但我的网络摄像头只能捕获矩形图像(分辨率为矩形) 既然我无法更改支持的网络摄像头分辨率,那么在预览网络摄像头时,我是否可以设置网络摄像头的区域?假设我在matlab中将默认的网络摄像头分辨率设置为960x720,但是当我向用户预览网络摄像头
我知道我可以在拍摄完图像(在本例中,是一个人的脸)后,稍后裁剪图像,但是,稍后裁剪图像可能会导致脸超出正方形区域,或大于正方形区域。我只想让这个人通过网络摄像头将自己定位在正方形区域。有没有办法在matlab中手动设置我的网络摄像头,使其正常工作?打开视频对象后,在matlab中说
vid
,例如
请执行以下操作:
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索引表示法获得区域的ROI(41:680、161:800)
注意:这是在Matlab R2011a中测试的。对我来说非常适合!非常感谢!一个简单的问题,为什么你的startx和starty从161和41开始?只是随机数吗?还是有什么具体的原因让我错过了?谢谢,对不起,我已经拿到了。你在试图平衡左右两边。谢谢:)
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);