Linux平台UOS系统摄像头变焦功能

Android Camera V4L2框架的驱动层分析_video_device 可以看到这个函数会为video_device分配一个cdev,然后设置fops,向内核注册字符设备,再者生成设备节点,然后设置video_device全局数组,video_device一个全局数组。这个是video_device中的字符设备对应的fops,应用层发生系统调用会率先调用到这里,我们来好好看一看这些调用。如果你熟悉v4l2应用编程的话,你应该知道v4l2有许多ioctl操作,上面的模板就实现了很多ioctl操作。并没有做什么事,只是初始化链表,自旋锁,还有设置数据,这函数并不是我们的重点。 阅读详情

变焦功能也是摄像头常用的功能,摄像头有产品使用文档,因其过于繁琐,没有Demo,没有研究明白,故了解到一个在Linux平台通用的方式 v4l-utils 使用该工具可实现对摄像头的变焦、聚焦等多个功能实现,如下图:

其中zoom_absolute为焦距数值,可以看到支持的最大值、最小值、步长值及当前值。

但是在项目中,要求按下按钮放大/缩小,松开停止因此需要连续发送,见以下代码:

 public void cameraZoom(boolean isZoomIn,boolean start) {
        zoomStr= RuntimeUtil.execForStr("v4l2-ctl -d /dev/video0 --get-ctrl=zoom_absolute").replace("\n", "");
        this.start=start;
        this.isZoomIn=isZoomIn;
        if (start){
            startZoom();
        }
    }

    private void startZoom(){
        try {
            Thread.ofVirtual().start(()->{
                int zoomValue=Integer.parseInt(zoomStr.replace("zoom_absolute:", "").trim());
                if ((zoomValue<=0&&!isZoomIn)||(zoomValue>=3500&&isZoomIn)){
                    return;
                }
                while (true){
                    if (!start){
                        System.out.println("ControlPresent.cameraZoomIn 结束:"+start);
                        break;
                    }
                    if ((zoomValue<=0&&!isZoomIn)||zoomValue>3500){
                        start=false;
                        continue;
                    }
                    RuntimeUtil.exec("v4l2-ctl -d /dev/video0 --set-ctrl=zoom_absolute="+(isZoomIn?++zoomValue:--zoomValue));
                    System.out.println("ControlPresent.cameraZoomIn:"+zoomValue+(start?"开始":"结束"));
                    try {
                        Thread.sleep(1);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            });

        }catch (Exception e){
            e.printStackTrace();
        }
    }

首先获取当前焦距值,在这个基础上实现焦距的增加和减少,相关命令见代码

基于OpenCV 、VS2008 MFC对话框的USB摄像头的控制和视频播放、跟踪(logitech sphere AF网络摄像头) 基于OpenCV 、VS2008 MFC对话框的USB摄像头的控制和视频播放、跟踪(logitech sphere AF网络摄像头) 1.opencv2.vs2008 mfc3.logitech sphere AF网络摄像头的pan tilt zoom控制4.SIR粒子滤波 我已经做完了,总结完后上传。    草稿 PTZ (Pan, T 阅读详情

相关推荐

DC-DC BUCK电路 PCB 布局布线 5 要点:以 XL4015 12V转5V 为例解析噪声控制

本文以XL4015 12V转5V降压电路为例,详细解析DC-DC BUCK电路PCB布局布线的5个关键要点,重点探讨噪声控制策略。通过功率回路最小化、热管理与接地优化、电感电容布局、反馈网络防干扰设计以及实测验证技巧,帮助工程师实现高效稳定的电源设计,显著降低输出纹波和电磁干扰。

weixin_29165725的博客 369

V4l2-ctl

它托管在[ v4l-utils.git ]中,并打包在大多数发行版中。l-utils还包含其他一些实用程序和库,用于处理视频4 Linux(V4L)设备驱动程序和相关功能。这些工具可以单独使用,也可以与其他V4L2相关的库和应用程序一起使用,以实现更复杂的功能和操作。exposure_auto是v4l2-ctl命令中的一个参数,用于设置相机的曝光模式。查询相机的详细信息 v4l2-ctl -d /dev/video11。不是所有相机以下参数设置都支持,修改前先查询,在已知参数属性的基础上修改.

TyearLin的专栏 6570

论文分享|ECCV2022,PATnet,Cross-Domain Few-Shot Semantic Segmentation,CDFSS新基准,文末有复现教程

这篇论文提出的跨域小样本语义分割(CD-FSS)任务,旨在将源域学习的分割能力迁移到目标域,仅需少量标注样本。针对传统小样本分割方法在跨域场景性能下降的问题,作者提出了基于金字塔锚点变换的网络(PATNet),通过将域相关特征转换为域无关特征,并引入任务自适应微调推理(TFI)提升目标域适应能力。实验表明,PATNet在1-shot和5-shot设置下分别比现有方法提升8.49%和10.61%的准确率。同时,作者构建了CD-FSS基准并设计了任务难度评估指标。代码和数据集已开源,复现难度中等。

m0_74277350的博客 1096

uvc摄像头代码解析5

8.初始化uvc控制 8.1 重要结构体 [cpp] view plaincopy struct uvc_control {    //uvc控制       struct uvc_entity *entity;  //uvc实体       struct uvc_control_info info;   //uvc控制信息  

htjx99的专栏 1557

PyInstaller打包后在Win7无法运行,提示缺少`api-ms-win-core-path-l1-1-0.dll`问题解决

这个问题的关键在于Python 3.12和Windows 7之间的兼容性问题。解决方法是使用Python 3.8.8版本进行打包,确保程序能够在Windows 7系统上运行。如果你也遇到类似的问题,不妨尝试降级Python版本,看看是否能够解决。希望我的经验能够帮到你!如果你在使用PyInstaller打包时遇到其他问题,欢迎留言讨论。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 995

使用Simulink进行基于IIR滤波器的设计与稳定性分析仿真

IIR滤波器的稳定性与其系统函数的极点位置密切相关。如果所有极点都位于Z平面的单位圆内,则该滤波器是稳定的;否则,滤波器将是不稳定的。在设计IIR滤波器时,确保其稳定性对于避免输出信号发散至关重要。明确你的系统需求,比如输入信号类型(如正弦波)、采样率、IIR滤波器的设计参数(如滤波器类型、阶数、截止频率等)。假设我们需要设计一个低通IIR滤波器,用来去除高于500Hz的所有频率成分,保留低于500Hz的信号成分。采样率为8kHz。

xiaoheshang_123的博客 150

关于UVC PTZ功能

PTZ功能即缩放(Z),左右移动(P)和上下移动(T)功能,定义在相机终端描述符里面(Camera Terminal Descriptor ),如下图为终端描述符。 从描述符中可以知道,相机控制的功能都通过bmControls来控制,PTZ对应的是D9-D12,这里我们选择绝对控制,这里我觉得绝对控制好处理一点,不用记录上一次状态。所有我们只要在描述符中把D9和D11置为1即可。 描述符打开之后就可以接收到上层应用请求了。Z对应CT_ZOOM_ABSOLUTE_CONTROL,PT对应CT_

老吕丶的博客 2308

Android 64位支持的坑:诡异的文件名问题

最近在尝试发布我的Android应用程序的更新时,遇到了一个令人困惑的64位错误。本文将详细讲解这个问题的产生原因及解决方法,供大家参考。

m0_74337424的博客 123

Linux V4L2子系统分析(一)

1.概述 Linux系统上的Video设备多种多样,如通过Camera Host控制器接口连接的摄像头,通过USB总线连接的摄像头等。为了兼容更多的硬件,Linux内核抽象了V4L2(Video for Linux Two)子系统。V4L2子系统是Linux内核中关于Video(视频)设备的API接口,是V4L(Video for Linux)子系统的升级版本。V4L2子系统向上为虚拟文件系统提供了统一的接口,应用程序可通过虚拟文件系统访问Video设备。V4L2子系统向下给Video设备提供接口,同时管理

非专业业余程序员 6461

【CanMV K210】AI 视觉 MNIST 手写数字识别与分类推理

本文介绍了基于CanMV K210开发板的MNIST手写数字识别实验。实验通过摄像头采集图像,经过开窗、灰度化、缩放、反色等预处理后,使用KPU神经网络加速器运行MNIST分类模型,最终在LCD上显示识别结果。重点讲解了分类模型与检测模型的区别、图像预处理流程以及KPU推理结果的解析方法。实验帮助理解从图像采集到分类输出的完整AI视觉处理链路,并提供了调试思路和硬件连接说明。

Mr数据杨 366

33、嵌入式系统中的内存操作与实时操作系统

本博客详细探讨了嵌入式系统中的内存操作和实时操作系统(RTOS)的基本原理及应用。内容涵盖C、C++和MicroPython三种语言下的SDRAM读写示例,并结合机器人真空吸尘器的实际应用说明内存的使用场景。此外,还介绍了RTOS的核心概念、组件及其工作机制,包括任务、事件、互斥锁、信号量、队列等,并以FreeRTOS和Mbed OS为例展示了RTOS的配置与使用方法。最后,通过常见问题和实践项目加深对嵌入式系统开发的理解。

zz67890的博客 145

Linux设备驱动之Camera驱动

Linux Camera驱动框架

chengwei_peng 9912

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

v4l2-ctl 控制命令

# v4l2-ctl Usage: Common options: --all display all information available -C, --get-ctrl=[,...] get the value of the controls [VIDIOC_G_EXT_CTRLS] -c, --s

Android系统攻城狮 2万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Linux下V4L2一个调试问题方法可以改参数

http://blog.youkuaiyun.com/tankai19880619/article/details/9997505 一、源码 1.test.c [cpp] view plain copy #include    #include    #include    #include    #include     #include

u012149181的博客 1477

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

linux手动焦距,摄影师必学!如何精准的手动对焦

对一些老摄影师来说,在他们刚刚接触胶片摄影的时候,自动对焦就好像是科幻小说里的东西。毕竟九十年代自动对焦技术才开始成熟起来,在那以前的老相机,基本上都是要手动对焦的。虽然现在的数码相机都有着强大的对焦功能,但是这并不表示手动对焦就不需要了,自动对焦的优点在于迅速快捷,但是往往却并不是最准确的,在某些环境下还会容易出现偏差,相对的,手动对焦会更加精准。那么在什么情况下需要用到手动对焦呢?使用胶片相机...

weixin_39948442的博客 332

Linux配置USB免驱摄像头以及利用V4L2驱动调整参数

Linux配置USB免驱相机以及利用V4L2驱动调整相机参数

胡乱学点东西 7490

树莓派插USB摄像头使用记录

树莓派插USB摄像头使用记录一、选择摄像头二、查看插入的USB设备命令三、查看相机命令四、使用 一、选择摄像头 买摄像头时要关注的: 1、是不是在Linux下免驱的。 2、焦距,拍摄目标越远,焦距选越大的,拍10米远的人可以选6mm焦距。 3、一般焦距长的视角小。 4、分辨率,选择1080p的(分辨率由像素与图像画幅大小共同决定)。 5、选无畸变的图像看起来舒服。 二、查看插入的USB设备命令 lsusb 三、查看相机命令 ls /dev/video* 四、使用 多出来两个设备,测试/dev/vid

lbjbs的博客 609

linux_驱动_V4l2层_camera_应用层调用流程_MIPI协议包格式简介

  一、 摄像头基础介绍                 1、摄像头结构和工作原理.    拍摄景物通过镜头,将...

weixin_40452895的博客 3381

V4L2下摄像头的详细参数调整

V4L2下摄像头的详细参数调整一.摄像头(相机)常见参数VIDIOC_QUERYCAPVIDIOC_ENUM_FMTVIDIOC_QUERYCAPVIDIOC_G_FMTVIDIOC_G_PARMVIDIOC_G_PARMVIDIOC_G_CTRL博客来源 一.摄像头(相机)常见参数 Linux下V4L2相关头文件所在路径为/内核源码目录/include/linux/videodev2.h,V4L2相关API文档。 白平衡(自动白平衡AWB)及色温、曝光(自动曝光AE、曝光补偿EV)、亮度、对比度、饱和度、

嵌入式与人工智能 4736

嵌入式监控【v4l2采集->vpu编码->live555推流】

嵌入式监控【v4l2采集->vpu编码->live555推流】 文章目录 嵌入式监控【v4l2采集->vpu编码->live555推流】 介绍 数据流图 一、v4l2 1.1 确定cam的输出格式 1.2 YUYV 转 YUV420 1.3 播放采集到的yuv420数据 二、vpu硬编码 2.1 使用mxc_vpu_test.out 硬件编码h264 三、使用live555MediaServer推流 总结 在上一博客中介绍了视频监控的采用库..

希望每个程序员都能得到自己想要的 2408

linux拍照保存图片延时问题,Linux下V4L2一个调试问题方法(拍照偏绿)

一、源码1.test.c#include #include #include #include #include #include #include #include "test.h"int fd = 0;int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl){int err =0;queryctrl->id =...

weixin_39965161的博客 436

UVC系列2-探索Android UVC协议

文章选取android下linux-3.10作为分析对象,具体的UVC初始化过程可以参考csdn大神写的博客,地址是:http://blog.youkuaiyun.com/orz415678659。 uvc加载摄像头的过程无非是初始化设备,加载设备,获取设备相关参数并加载相关参数到buffer,此时就已经将视频和控制参数加载到buffer了,这篇文章主要关注的是控制相关的参数。 需要关注的两个核心文件是:...

Chuck Chan的专栏 3241

Linux下V4L2一个调试问题方法(拍照偏绿)

一、源码 1.test.c #include #include #include #include #include #include #include #include "test.h" int fd = 0; int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl) { int er

程序改变生活 1万+

在嵌入式Linux系统中使用摄像头

简介 本文主要基于ARM嵌入式模块系统展示在嵌入式Linux中使用摄像头示例,所采用的模块为Toradex VF61,是一款性价比极高但不包含硬件视频编解码加速的模块,核心处理器为NXP/Freescale Vybrid,Cortex-A5和M4异构双核架构。 1). 目前越来越多的嵌入式系统采用摄像头应用,其中主要有下面几种方式 远程监控:如闭路电视系统,操作人员通过摄像头远程监控某个

toradexsh的博客 2万+
上一篇: Linux平台UOS系统摄像头播放
下一篇: UOS 实现脚本启动无弹窗及开机运行
解牛之术
博客等级 码龄11年 49粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值