Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image Matlab将网络摄像头分辨率更改为不可用分辨率_Image_Matlab_Webcam_Resolution - Fatal编程技术网

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

Image Matlab将网络摄像头分辨率更改为不可用分辨率,image,matlab,webcam,resolution,Image,Matlab,Webcam,Resolution,我目前正在从事的项目要求我在处理之前先拍摄图像。我使用的是网络摄像头,有很多分辨率供我选择。但是,没有一个可用的分辨率与我的情况相匹配,因为我只想拍摄正方形的图像,但我的网络摄像头支持的分辨率都不是正方形,都是矩形 例如,我想捕获640x640图像(正方形),但我的网络摄像头只能捕获矩形图像(分辨率为矩形) 既然我无法更改支持的网络摄像头分辨率,那么在预览网络摄像头时,我是否可以设置网络摄像头的区域?假设我在matlab中将默认的网络摄像头分辨率设置为960x720,但是当我向用户预览网络摄像头

我目前正在从事的项目要求我在处理之前先拍摄图像。我使用的是网络摄像头,有很多分辨率供我选择。但是,没有一个可用的分辨率与我的情况相匹配,因为我只想拍摄正方形的图像,但我的网络摄像头支持的分辨率都不是正方形,都是矩形

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

既然我无法更改支持的网络摄像头分辨率,那么在预览网络摄像头时,我是否可以设置网络摄像头的区域?假设我在matlab中将默认的网络摄像头分辨率设置为960x720,但是当我向用户预览网络摄像头时,我会从侧面裁剪出额外的像素,并且只显示640x640


我知道我可以在拍摄完图像(在本例中,是一个人的脸)后,稍后裁剪图像,但是,稍后裁剪图像可能会导致脸超出正方形区域,或大于正方形区域。我只想让这个人通过网络摄像头将自己定位在正方形区域。有没有办法在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);