精华内容
下载资源
问答
  • android 通过usb调用UVC摄像头

    热门讨论 2017-12-25 15:18:24
    android USB调用摄像头,经过半月时间终于搞定了, 在网上找了好多,还有日文注释的 希望段友多多包涵,首先手机支持uvc 测试机 荣耀8. 我也是在网上找啊找,如何谁在学习接触这方面,共同学习,
  • 通过 USB 调用 UVC 摄像头,详细市面上都有非常多的博客介绍,在这里我就不去做过多的描述和介绍了。基本上都是使用 Github 上的开源库-https://github.com/saki4510t/UVCCamera。这个是目前为止较为全面的解释和...

      通过 USB 调用 UVC 摄像头,详细市面上都有非常多的博客介绍,在这里我就不去做过多的描述和介绍了。基本上都是使用 Github 上的开源库-https://github.com/saki4510t/UVCCamera。这个是目前为止较为全面的解释和说法,这是一个日本人写的,里面有很多日文注释,如果阅读费解的小伙伴,可以看看这篇博客 Android中多USB摄像头解决方案——UVCCamera源码分析(一)。不过不推荐大家直接使用依赖开源库,因为会有限制条件,NDK 的版本需要配置 r14b。当然如果有兴趣的小伙伴可以尝试一下。

      在这里推荐大家使用另外一个开源库 AndroidUVCCamera ,该开源库里面基于 saki4510t/UVCCamera 上进行打包封装,有较为全面的 API 方法,可以便于快速使用。相关的 API 方法使用就不介绍了 ,直接看该链接的  README.md 基本上都介绍的非常清楚了,可直接使用,亲测有效!

    另附上 NDK -r14b 版本下载链接:https://dl.google.com/android/repository/android-ndk-r14b-windows-x86_64.zip?hl=zh_cn

    展开全文
  • 有没有哪位大神实现过安卓调用uvc摄像头啊? 我最近查了网上资料都是讲得很不清楚而且不全的。!! 跪求大神赐教啊!!!
  • zxing 提供的sample都是原生camera采集摄像头数据,而android上使用UVCCamera采集摄像头的情况比较多,那么怎么在uvccamera采集到摄像头数据,并调用zxing扫码呢。直接上代码。 DecodeHandle.java package ...

    zxing 提供的sample都是原生camera采集摄像头数据,而android上使用UVCCamera采集摄像头的情况比较多,那么怎么在uvccamera采集到摄像头数据,并调用zxing扫码呢。直接上代码。

    DecodeHandle.java

    package com.baidu.idl.face.main.decode;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.HandlerThread;
    import android.os.Looper;
    import android.os.Message;
    import android.text.TextUtils;
    import android.util.Log;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.BinaryBitmap;
    import com.google.zxing.DecodeHintType;
    import com.google.zxing.MultiFormatReader;
    import com.google.zxing.PlanarYUVLuminanceSource;
    import com.google.zxing.ReaderException;
    import com.google.zxing.Result;
    import com.google.zxing.common.HybridBinarizer;
    
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Map;
    import java.util.EnumMap;
    import java.util.EnumSet;
    
    public class DecodeHandler {
    
        private final DecodeListener mListener;
        private boolean isAvailable = true;
        private static final int DECODE_BITMAP = 0;
        private static final int DECODE_YUV = 1;
        //private QrDecoder mDecoder;
        private DecodeThread mDecodThread;
        private int mTimeout;
        Context mContext;
        private int mWidth;
        private int mHeight;
    
        private final Map<DecodeHintType, Object> hints;
        private Collection<BarcodeFormat> decodeFormats;
        private final MultiFormatReader multiFormatReader;
    
        public DecodeHandler(Context context, DecodeListener listener,final int width, final int height) {
            mWidth = width;
            mHeight = height;
            mListener = listener;
            mContext = context;
            //mDecoder = new QrDecoder(context);
            HandlerThread thread = new HandlerThread("qr_decode_thread");
            thread.start();
            mDecodThread = new DecodeThread(thread.getLooper());
    
            //扫码初始化
            multiFormatReader = new MultiFormatReader();
    
            decodeFormats = EnumSet.of(BarcodeFormat.QR_CODE, BarcodeFormat.CODE_128);
            hints = new EnumMap<>(DecodeHintType.class);
            hints.put(DecodeHintType.POSSIBLE_FORMATS, decodeFormats);
            String characterSet = "utf-8";
            if (characterSet != null) {
                hints.put(DecodeHintType.CHARACTER_SET, characterSet);
            }
            hints.put(DecodeHintType.TRY_HARDER, true);
    
            multiFormatReader.setHints(hints);
        }
    
        public void release() {
            setAvailable(false);
            mDecodThread.getLooper().quit();
        }
    
        public void pushYuv(byte[] yuv) {
            Log.d("MainActivity","pushYuv()");
            if (isAvailable()) {
                setAvailable(false);
                mDecodThread.obtainMessage(DECODE_YUV, yuv).sendToTarget();
            }
        }
    
        private boolean isAvailable() {
            return isAvailable;
        }
    
        private void setAvailable(boolean b) {
            isAvailable = b;
        }
    
        private class DecodeThread extends Handler {
            DecodeThread(Looper looper) {
                super(looper);
            }
    
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                switch (msg.what) {
                    case DECODE_YUV:
                    {
                        decode((byte[])msg.obj,mWidth,mHeight);
                        setAvailable(true);
    
                    }
                    break;
                }
            }
        }
    
        /**
         * @param data   A preview frame.
         * @param width  The width of the image.
         * @param height The height of the image.
         * @return A PlanarYUVLuminanceSource instance.
         */
        public PlanarYUVLuminanceSource buildLuminanceSource(byte[] data, int width, int height) {
            return new PlanarYUVLuminanceSource(data, width, height, 0, 0,
                    width, height, false);
        }
    
        /**
         * @param data   The YUV preview frame.
         * @param width  The width of the preview frame.
         * @param height The height of the preview frame.
         */
        private void decode(byte[] data, int width, int height) {
    
            long start = System.currentTimeMillis();
            Result rawResult = null;
            PlanarYUVLuminanceSource source = buildLuminanceSource(data, width, height);
            if (source != null) {
                BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
                try {
                    rawResult = multiFormatReader.decodeWithState(bitmap);
    
      
                    BarcodeFormat format = rawResult.getBarcodeFormat();
                    //类型
                    String type = format.toString();
                    String strScan = rawResult.getText();
    
                    String content = new String(strScan.trim());
    
                    if (!TextUtils.isEmpty(content)) {
                        mListener.onDecodeSuccess(content);
                    }
                } catch (ReaderException re) {
                    // continue
                    mListener.onDecodeFailed(-1);
                } finally {
                    multiFormatReader.reset();
                }
            }
    
        }
    
    }
    

     

    DecodeListener.java

    package com.baidu.idl.face.main.decode;
    
    
    public interface DecodeListener {
    
        public void onDecodeSuccess(final String content);
    
        public void onDecodeFailed(final int error);
    }
    

     

    展开全文
  • 哪位大神可以帮忙写下代码 小程序调用外接UVC摄像头

    哪位大神可以帮忙写下代码 小程序调用外接UVC摄像头

    展开全文
  • uvc摄像头程序

    2017-11-02 12:59:26
    uvc摄像头程序,适用于android平台,可由android直接调用,支持uvc_video -d /dev/video%d -c %d -t %d -s %dx%d -f MJPG -o %s", port, count, framerate, width, height, spath),默认MJPEG格式,YUV格式
  • SharpCamera是专业的UVC摄像头深控类库。允许您在C#代码内修改摄像头的高级参数,比如亮度、对比度、清晰度、色调、饱和度、伽玛值、白平衡、逆光对比、增益、缩放、焦点、曝光、光圈、全景、倾斜、滚动等参数,且...
  • c#操作摄像头(带着usb摄像头、mjpeg-streamer的uvc摄像头、网络h264摄像头) win原生的、codeProject的一个框架、AForge的摄像头;mjpeg的linux-uvc摄像头(智能小车那种)、网络摄像头
  • ROS:使用usb_cam调用UVC摄像头遇到的坑

    千次阅读 2020-09-17 11:55:22
    坑一:直接装包,启用后图像是花屏 如果直接使用如下命令安装usb_cam功能包: sudo apt-get install ros-melodic-usb-cam 然后插上自己的UVC摄像头,运行如下指令:

    目录

     

    坑一:装包后直接启用,图像是花屏

    坑二:deprecated pixel format used, make sure you did set range correctly


    坑一:装包后直接启用,图像是花屏

    直接使用如下命令安装usb_cam功能包:

    sudo apt-get install ros-melodic-usb-cam

    然后插上自己的UVC摄像头,运行如下指令:

    roslaunch usb_cam usb_cam-test.launch

    此时可以检测到摄像头,但出来的图像是花的,如下:

     在查看了摄像头的数据手册之后,发现摄像头的默认像素格式是mjpeg格式的:

     于是乎查看了usb_cam-test.launch,发现原始的launch文件中定义的像素格式是yuyv格式的(第六行):

    <launch>
      <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
        <param name="video_device" value="/dev/video0" />
        <param name="image_width" value="640" />
        <param name="image_height" value="480" />
        <param name="pixel_format" value="yuyv" />
        <param name="camera_frame_id" value="usb_cam" />
        <param name="io_method" value="mmap"/>
      </node>
      <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
        <remap from="image" to="/usb_cam/image_raw"/>
        <param name="autosize" value="true" />
      </node>
    </launch>

    所以,将上述"yuyv"改成"mjpeg" ,在运行相应的launch文件,就可以的到正常的图片了:

    坑二:deprecated pixel format used, make sure you did set range correctly

    但是此时终端中会出现如下图所示的提示 :

    虽然看着并没有什么影响,但是对于我等强迫症患者来说简直等同于error(T_T) ,在网上找了下以下解决方法:

    usb_cam源码从GitHub上下载到工作空间中,然后在usb_cam源码src文件中找到usb_cam.cpp文件,大约在第430+行找到如下代码段:

      if (pic_size != avframe_camera_size_)
      {
        ROS_ERROR("outbuf size mismatch.  pic_size: %d bufsize: %d", pic_size, avframe_camera_size_);
        return;
      }
      video_sws_ = sws_getContext(xsize, ysize, avcodec_context_->pix_fmt, xsize, ysize, AV_PIX_FMT_RGB24, SWS_BILINEAR, NULL,
    			      NULL,  NULL);
      sws_scale(video_sws_, avframe_camera_->data, avframe_camera_->linesize, 0, ysize, avframe_rgb_->data,
                avframe_rgb_->linesize);
      sws_freeContext(video_sws_);

    在代码段:video_sws_ = sws_get...  位置上面一行插入以下代码:

      {
        AVPixelFormat pixFormat;
        switch (avcodec_context_->pix_fmt) {
        case AV_PIX_FMT_YUVJ420P :
            pixFormat = AV_PIX_FMT_YUV420P;
            break;
        case AV_PIX_FMT_YUVJ422P  :
            pixFormat = AV_PIX_FMT_YUV422P;
            break;
        case AV_PIX_FMT_YUVJ444P   :
            pixFormat = AV_PIX_FMT_YUV444P;
            break;
        case AV_PIX_FMT_YUVJ440P :
            pixFormat = AV_PIX_FMT_YUV440P;
            break;
        default:
            pixFormat = avcodec_context_->pix_fmt;
            break;
        }
        avcodec_context_->pix_fmt = pixFormat;
      }

    然后保存、重新编译、source devel/setup.bash、运行launch文件、完美解决问题。

    展开全文
  • UVC 摄像头在 RK3399 上的应用

    千次阅读 2019-11-18 10:13:08
    UVC 全称 USB Video Class 、是 USB-IF 定制的一套标准,所有遵循这一标准的 USB 接口摄像头在 Windows Linux 等系统下,几乎能直接使用,达到类似免驱的效果。 当然了,并不是说真正的不需要驱动,而是只要某个 USB...
  • 基于labview的USB摄像头调用 ,同时可以打开笔记本内置摄像头,主要使用labview的vision模块
  • 在项目中,我们会需要控制uvc摄像头,采集其实时画面,或者对其进行旋转。目前市面上大多数USB摄像头都支持UVC协议。那么如何采集呢?当然是采用SharpCamera!因为SharpCamera支持对采集的画面进行旋转,也可以对采集...
  • RK3399的Android系统驱动UVC摄像头

    千次阅读 2019-11-29 23:22:42
    2.如果程序可以运行,但是无法显示摄像头画面,将UVCCamera-master\UVCCamera\libuvccamera\src\main\jni\Application.mk 中的#NDK_TOOLCHAIN_VERSION := 4.9 注释打开; 3.AndroidManifest.xml文件里android:...
  • 目前android是支持uvc协议的,也就是只要我们采用的usb摄像头是支持uvc协议的,那就可以在android上跑起来的。一、我们先来了解下啥是uvc?UVCUVC全称为USB Video Class,即:USB视频类,是一种为USB视频捕获设备定义...
  • 附件结合第三方Filter组件驱动摄像头源码,注意非H265,可结合博文https://blog.csdn.net/tanjiaqi2554/article/details/100589588自行实现驱动H265格式摄像头,免责声明:仅供研究讨论,未经确认,内容与提供之源码...
  • linux 使用 uvc 摄像头

    2021-01-27 05:25:53
    第一种方法:检测是否找到设备:lsusb检查端口:ls /dev/video*安装适合的工具guvcviewsudo add-apt-repository ppa:pj-assis/ppasudo apt-get updatesudo apt-get install guvcview测试摄像头guvcview -d /dev/...
  • import cv2import numpy as npbins = np.arange(256).reshape(256,1)def hist_curve(im):h = np.zeros((300,256,3))if len(im.shape) == 2:color = [(255,255,255)]elif im.shape[2] == 3:color = [ (255,0,0),(0,25...
  • C#控制UVC摄像头源码 源码描述: 一、源码特点 分享C#控制UVC摄像头并且支持调整亮度对比度饱和度曝光伽玛等数十种高级参数。 二、菜单功能 SharpCamera是专业的UVC摄像头深控类库。允许您在C#代码内修改摄像头的...
  • 使用c#自带的DirectShow类对基于uvc协议的摄像头进行亮度参数的更改时,需要打开其自带的一个页面,如果想要实现在代码中更改需要使用DirectShow的扩展类。首先,需要在VideoCaptureDevice.cs 类里添加几个方法 /// ...
  • c#调用usb摄像头 录制视频和保存图片
  • 2.UVC摄像头驱动加载时在kernel\drivers\media\usb\uvc\uvc_driver.c uvc_probe->函数中完成的 整个流程如下 uvc_register_chains-> uvc_register_terms-> uvc_register_video-> vdev->v4l2_d
  • 摄像头为罗技c930e。使用下面代码安装guvcview,在/dev下输入guvcview命令就可以了!是不是很简单, 比cheese好使哦~ $ sudo add-apt-repository ppa:pj-assis/ppa $ sudo apt-get update $ sudo apt-get ...
  • 这个工程是vb.net调用高清摄像头的包括外置的usb 2.0camera。是自己根据c#的一个程序转换的。目前该工程被我缩减成打开摄像头,并且可以拍照保存到指定目录,还有其他的停止摄像头,录像等,可以自己根据其中的内部...
  • USB video class又称为USB video device class or UVC就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头,数字摄影机,模拟视频转换器,电视卡及静态视频相机,V4L2就是用来管理UVC设备的...
  • RK3288 uvc摄像头调试

    2020-12-23 04:27:11
    [ 移植Linux3.4.2版本内核到mini2440(二)--添加网卡、UVC摄像头、LCD驱动]曾经在全志平台上调试过UVC摄像头,当时调试过程比较流畅,丝毫没有碰上异常情况,这一次在RK上碰到较大的困难,下面介绍一下我的调试过程。...
  • Linux添加uvc摄像头上的按键拍照

    千次阅读 2019-06-29 18:17:41
    有的uvc镜头上带有按键按钮来实现拍照功能,本篇将讲述如何在Linux系统中获取uvc镜头的按键消息,实现拍照。 一、配置menuconfig 1、打开menuconfig, 在 -> Device Drivers -> Input device support -> ...
  • java swing界面调用本地摄像头,demo可以直接导入eclipse运行,直接运行CameraFrame.java即可。
  • android camera UVC camera 外接 USB 摄像头

    千次阅读 2019-01-28 16:26:40
    注意 Android O , 平台 qualcomm 外接 USB 摄像头 Android 平台支持使用即插即用的 ...网络摄像头通常支持 USB 视频类 (UVC) 驱动程序,并且在 Linux 上,系统采用标准的 Video4Linux (V4L) 驱动程序控制 U...
  • if(lstCameraNameInstalled.Count ) { throw new Exception("您的计算机上已安装的UVC摄像头少于2个,本程序无法正常运行!"); } #region 初始化摄像头1 //选定该摄像头,摄像头索引为0,您也可以用摄像头名称的方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,326
精华内容 530
关键字:

调用uvc摄像头

友情链接: FlexLMsearch.rar