如何在用API函数capCreateCaptureWindow修改分辨率

如何在用API函数capCreateCaptureWindow修改分辨率,第1张

WM_CAP_SET_AUDIOFORMAT =(WM_CAP_START+ 35); //设置音频格式

WM_CAP_GET_AUDIOFORMAT =(WM_CAP_START+ 36); //捕获音频格式

WM_CAP_DLG_VIDEOFORMAT =(WM_CAP_START+ 41); //1065 打开视频格式设置对话框

WM_CAP_DLG_VIDEOSOURCE =(WM_CAP_START+ 42); //1066 打开属性设置对话框,设置对比度、亮度等。

WM_CAP_DLG_VIDEODISPLAY =(WM_CAP_START+ 43); //1067 打开视频显示

WM_CAP_GET_VIDEOFORMAT =(WM_CAP_START+ 44); //1068 获得视频格式

WM_CAP_SET_VIDEOFORMAT =(WM_CAP_START+ 45); //1069 设置视频格式

WM_CAP_DLG_VIDEOCOMPRESSION =(WM_CAP_START+ 46); //1070 打开压缩设置对话框

WM_CAP_SET_PREVIEW =(WM_CAP_START+ 50); //设置预览

WM_CAP_SET_OVERLAY =(WM_CAP_START+ 51); //设置覆盖

WM_CAP_SET_PREVIEWRATE =(WM_CAP_START+ 52); //设置预览比例

WM_CAP_SET_SCALE =(WM_CAP_START+ 53); //设置刻度

WM_CAP_GET_STATUS =(WM_CAP_START+ 54); //获得状态

WM_CAP_SET_SCROLL =(WM_CAP_START+ 55); //设置卷

网上找些API帮助说明,可以设置

Android开发中经常需要获取摄像头所支持的分辨率列表,然而获取的参数列表是List形式,而且每个分辨率并不是按大小进行排列,不方便查看和返回,所以写了一个重新排列并且格式化输出的方法

CameraParameters有三个方法获取分辨率:

理论上需要获取预览分辨率和支持分辨率两个值,用来保证设置摄像头的分辨率后不会出现一些玄学概率问题(通常是摄像头推荐的分辨率和最高分辨率的冲突),在实际开发中我用getSupportedVideoSizes()和getSupportedPreviewSizes()死活获取不到值,只能通过getSupportedPictureSizes()拉取列表,获取到的分辨率也是一致的。

需要注意的是,CPU型号也会影响分辨率的获取,同一个摄像头在不同CPU上拉取到的支持分辨率是不一样的,所以还需要对不同CPU机型的摄像头分辨率进行适配。

数据定义

获取摄像头信息,然后循环取最大的width和height,(最大值一般是List的第一个元素,可以直接get(0)),但是有些摄像头拉去到的list是乱序的,所以对他们进行重新按大小排序,方便取值。widthheight就是摄像头的像素,例如500百万像素。

重新排列分辨率列表

格式化输出成常见的宽x高格式

使用完相机之后一定要记得用 Camerarelease()来释放相机的实例,否则后续调用相机的请求(系统内其他app或本应用)都会失败,导致Cameraopen()方法报错“Failed to connect to camera service”。所以同理,出现这种问题的时候也可以排查系统中其他apps是否正在占用摄像头没有释放。

在Android 60版本的摄像头开发中,使用Cameraopen()方法时,需要在onCreate()方法中加入下面的权限申请,否则同样会报错"Failed to connect to camera service"

运行结果如下

NET为我们提供了一个方法可以很便捷的获取当前屏幕的分辨率。

首先,我们需要引用命名空间

using

SystemWindowsForms;

using

SystemDrawing;

然后通过下面简单的代码即可实现我们要的功能

public

static

Size GetScreenSize()

{

return

new

Size(ScreenPrimaryScreenBoundsWidth, ScreenPrimaryScreenBoundsHeight);

}

使用下面的步骤,可以得到屏幕的分辨率: 1、调用Toolkit类的static方法getDefaultToolkit得到一个Toolkit对象: Toolkit kit = ToolkitgetDefaultToolkit(); 2、调用Toolkit对象的getScreenSize方法把屏幕尺寸作为一个Dimension对象返回:

以上就是关于如何在用API函数capCreateCaptureWindow修改分辨率全部的内容,包括:如何在用API函数capCreateCaptureWindow修改分辨率、Android 6.0获取摄像头支持分辨率列表并格式化输出、c#中如何获取屏幕的分辨率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9672087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存