精华内容
下载资源
问答
  • 用过USB摄像头的都知道,你需要使用鼠标来操作它,比如截个图,录个像什么的,要点N次鼠标,对于我们那些不喜欢多次点击鼠标的人来说,这是一件很boring的事情,所以,本文将教你如何使用Python来操作摄像头。...

    用过USB摄像头的都知道,你需要使用鼠标来操作它,比如截个图,录个像什么的,要点N次鼠标,对于我们那些不喜欢多次点击鼠标的人来说,这是一件很boring的事情,所以,本文将教你如何使用Python来操作摄像头。

    这里,我们需要三个Python库: VideoCapture, PIL  和 pygame。使用这三个库你可以非常容易的编写一个摄像头程序。之所以使用pygame,其目的就是因为这个库可以处理视频帧(fps)。下面是代码:

    from VideoCapture import Device

    import ImageDraw, sys, pygame, time

    from pygame.locals import *

    from PIL import ImageEnhance

    res = (640,480)

    pygame.init()

    cam = Device()

    cam.setResolution(res[0],res[1])

    screen = pygame.display.set_mode((640,480))

    pygame.display.set_caption('Webcam')

    pygame.font.init()

    font = pygame.font.SysFont("Courier",11)

    def disp(phrase,loc):

    s = font.render(phrase, True, (200,200,200))

    sh = font.render(phrase, True, (50,50,50))

    screen.blit(sh, (loc[0]+1,loc[1]+1))

    screen.blit(s, loc)

    brightness = 1.0

    contrast = 1.0

    shots = 0

    while 1:

    camshot = ImageEnhance.Brightness(cam.getImage()).enhance(brightness)

    camshot = ImageEnhance.Contrast(camshot).enhance(contrast)

    for event in pygame.event.get():

    if event.type == pygame.QUIT: sys.exit()

    keyinput = pygame.key.get_pressed()

    if keyinput[K_1]: brightness -= .1

    if keyinput[K_2]: brightness += .1

    if keyinput[K_3]: contrast -= .1

    if keyinput[K_4]: contrast += .1

    if keyinput[K_q]: cam.displayCapturePinProperties()

    if keyinput[K_w]: cam.displayCaptureFilterProperties()

    if keyinput[K_s]:

    filename = str(time.time()) + ".jpg"

    cam.saveSnapshot(filename, quality=80, timestamp=0)

    shots += 1

    camshot = pygame.image.frombuffer(camshot.tostring(), res, "RGB")

    screen.blit(camshot, (0,0))

    disp("S:" + str(shots), (10,4))

    disp("B:" + str(brightness), (10,16))

    disp("C:" + str(contrast), (10,28))

    pygame.display.flip()

    这段代码中的一些要点的解释如下:

    第15行的那个函数是在视频上显示些信息。这个例子中,显示的是抓图的数量以及当前的亮度和对比度。这个函数先显示深灰色的文本,然后偏移几个像素,再显示浅灰色的,这样可以有阴影的效果。

    第26行是在调整亮度和对比度。30-33行是在设置数字键1-4用于调整亮度和对比度。

    34 和35行是在设置 ‘q’ 和 ‘w’ 来显示摄像头的对话框。在那里你可以调整分辨率和暴光度等等。

    36行及以下的代码,是在存一个抓图文件。文件名中使用了当前时间。.

    希望这个小程序能给你开启一个如何写摄像头的程序。

    展开全文
  • 在树莓派上使用多个USB摄像头时,如何确定各个摄像头所对应的id? 比如,当有两个摄像头时,我尝试一个为cv2.VideoCapture(0),一个为cv2.VideoCapture(1),通过看捕获的图像,可以确定各摄像头的id,但这个顺序不是...

    问题描述:

    在树莓派上使用多个USB摄像头时,如何确定各个摄像头所对应的id?
    比如,当有两个摄像头时,我尝试一个为cv2.VideoCapture(0),一个为cv2.VideoCapture(1),通过看捕获的图像,可以确定各摄像头的id,但这个顺序不是固定的,树莓派在通电的时候,哪一个摄像头先通电的,哪一个就是0,下一个就是1,2,3,4,5…
    但这样毕竟很被动,在我们的代码上就很麻烦了,没办法确定摄像头是那一个!


    现在我们就来解决这个问题(全网首份保姆级教程):

    1.查看USB摄像头的ID

    在终端上输入lsusb

    lsusb
    

    在这里插入图片描述
    我这里使用了2个USB摄像头,通过插拔,确定摄像头的ID是哪个!


    2.将端口重映射到新的固定的名字:

    将端口重映射到新的固定的名字,并且设置其权限为可读。使用对应的id端口映射到固定的名字上(看不懂无所谓,按教程来,往下走)
    终端输入:

    sudo vi /etc/udev/rules.d/rplidar.rules
    

    1.按i,进入编辑模式
    2.复制以下代码,修改ID,自定义设备的名字

    KERNEL=="video*", ATTRS{idVendor}=="038f", ATTRS{idProduct}=="6001", MODE:="0777", SYMLINK+="people_video"
    

    在这里插入图片描述
    3.按Esc,输入 :wq (保存退出)
    创建生效后重新插拔一下USB摄像头


    3.查看USB摄像头是否重映射:

    ls -l /dev |grep video
    

    在这里插入图片描述
    我这里两个摄像头都映射成功了!


    4.在树莓派python上的应用:

    平时我们是这样子使用的:
    cap = cv2.VideoCapture(0) # 打开USB摄像头对象

    现在精准打开某个摄像头

    cap = cv2.VideoCapture("/dev/people_video")  # 打开人体识别摄像头
    
    cap = cv2.VideoCapture("/dev/goods_video")  # 打开物体识别摄像头
    

    总结:理论上不管USB摄像头插在那个usb端口上,什么时候上电,都能通过 /dev/people_video (自己定义的名字)打开相对应的摄像头

    遇到的问题:

    在这里插入图片描述

    展开全文
  • 如何在浏览器中控制使用USB摄像头

    万次阅读 2017-09-29 16:02:12
    在支持HTML5的浏览器中要启用连接到电脑的USB摄像头非常方便,只需要使用getUserMedia()。不过这个接口提供的功能比较有限,且不兼容老的浏览器。这里分享一下Dynamsoft Camera SDK的解决方案。

    在支持HTML5的浏览器中要启用连接到电脑的USB摄像头非常方便,只需要使用getUserMedia()。不过这个接口提供的功能比较有限(比如,无法调节摄像头参数),且不兼容老的浏览器。要兼顾易用性和兼容性,可以创建一个桌面的摄像头应用(C/C++, Java,Python)来获取数据,然后通过server发送给浏览器的img元素来显示。这样既可以做到对摄像头的完全控制,又可以把应用运行在所有的浏览器上。Dynamsoft Camera SDK就是这种方案(后台camera service + 前端JavaScript库)。在这篇文章中,我会分享一下如何使用JavaScript和PHP从视频流中采集图像并上传到Web服务器。

    准备工作:

    • 编程语言:HTML,JavaScript,PHP
    • 浏览器: IE v6或更高版本,Chrome,Firefox,Edge,Safari等
    • Dynamsoft Camera SDK 6.0

    快速搭建用于Web浏览器的摄像头应用

    拷贝资源目录Dynamsoft\Dynamsoft Camera SDK 6.0 Trial\DCSResources到工程根目录。

    创建HTML页面ImageUpload.html。按顺序添加两个JS文件:

    <head>
     <script type="text/javascript" src="DWSResources/dynamsoft.webcam.config.js"> </script>
    <script type="text/javascript" src="DWSResources/dynamsoft.webcam.initiate.js"> </script>
    </head>

    创建两个容器,分别用于显示视频和图像:

    <div id="video-container" style="width: 500px; height: 400px; display: inline-block; border: solid 1px gray"> </div>
    <div id="image-container" style="width: 500px; height: 400px; display: inline-block; border: solid 1px gray"> </div>

    初始化网络摄像头对象,然后播放视频:

    <script type="text/javascript">
    dynamsoft.dwsEnv.init('video-container', 'image-container', onInitSuccess, onInitFailure);
    function onInitSuccess(videoViewerId, imageViewerId) {
    dwsObject = dynamsoft.dwsEnv.getObject(videoViewerId);
    dwsObject.camera.playVideo(); 
    }
    </script>

    创建按钮事件用于抓取图像:

    <input type="button" value="Grab" onclick="acquireImage();" />
    
    <script type="text/javascript">
    //capture an image
    function acquireImage() {
     if (dwsObject) {
     dwsObject.camera.captureImage('image-container');
     }
     }
    </script>

    保存文件,然后在浏览器中访问页面:

    webcam capture in javascript

    现在通过HTTP上传文件到Web服务器。使用setHTTPFormFields可以设置额外字段。在ImageUpload.html中,我们添加一个上传按钮。

    <a id="btn-upload" class="btn-upload" onclick="onBtnUploadClick(this);">Upload</a>
    
    <script type="text/javascript">
      function onBtnUploadClick() {   
    var imageViewer = dwsObject.getImageViewer('image-container');
        var counter,
            url = getCurPagePath() + 'ActionPage.php',
            fileName = “test.jpg”,
            imageType = imageViewer.io.EnumImageType.JPEG;
            imageIndexArray = [0];
    
        imageViewer.io.setHTTPFormFields({ "fileName": fileName });
        imageViewer.io.httpUploadAsync(url, imageIndexArray, imageType, onUploadSuccess, onUploadFailure);
    
    } 
    </script>

    创建一个ActionPage.php来接收图像数据:

    <?php 
    $strJson = "{\"success\":false}";
    
    try{
        $file = $_FILES["RemoteFile"];
    
        $fileName = $_POST["fileName"];
    
        if ($fileName == "" || $fileName == null) 
        $fileName = $file["name"];
    
        $filePath = dirname(__FILE__) . "\\UploadedImages\\" . $fileName;
    
        if(trim($file["type"]) == "application/octet-stream"){
            move_uploaded_file($file["tmp_name"] , $filePath);
        }
    
        else{
            $file_contents = base64_decode(str_replace(' ', '+', file_get_contents($file['tmp_name'])));
    
            file_put_contents($filePath, $file_contents);
    
        }
        $strJson = "{\"success\":true, \"fileName\":\"" . $fileName . "\"}";
    }
    catch(Exception $ex){
        $strJson = "{\"success\":false, \"error\": \"" . ex.Message.Replace("\\", "\\\\") . "\"}";
    }
    // Response.Clear();
    
    header("Content-Type: application/json; charset=utf-8");
    
    echo $strJson;
    
    ?>

    就这么简单。

    源码

    https://www.dynamsoft.com/downloads/dynamsoft-webcam-sdk-sample-download.aspx?SampleID=167

    展开全文
  • 终于轮到摄像头了,IMX6ULL支持USB摄像头,直接插在USB口上就可以了,不过,下面介绍的方案要在Python中调用USB摄像头的数据,所以在IMX6ULL中需要移植MJPG_Streamer,这个不太难,百度一下就OK,迅为的方案就可以,...

    终于轮到摄像头了,IMX6ULL支持USB摄像头,直接插在USB口上就可以了,不过,下面介绍的方案要在Python中调用USB摄像头的数据,所以在IMX6ULL中需要移植MJPG_Streamer,这个不太难,百度一下就OK,迅为的方案就可以,实在不行,某宝上搜讯为的板子IMX6ULL,下面有他家板子的开放文档材料,下一个,照着做,就可以了,一般这种技术都是通用的。这里说一句题外话,讯为的例程的全面性要好于正点原子的,他家例程底层和应用基本都有,跨度很好。我没买过他家的板子,板子本身与正点原子相比如何,不太清楚,如果时间容许,后面我会在迅为,野火,韦东山这几家各买一块,再做一期评测。
    好了,演出正式开始了。。。。三步搞定。。。。

    1.查看摄像头挂载点,/dev/video0 /dev/video1 /dev/video2,一般video2为USB摄像头

    命令:ls /dev/video*
    (不小心做截图时挂载点画错位置了,看箭头所指的那个,是/dev/video2)
    在这里插入图片描述

    2.启动MJPG_streamer服务,最好在根目录下执行

    命令:mjpg_streamer -i “input_uvc.so -d /dev/video2 -r 320x240 -f 30 -yuv” -o “output_http.so -w /opt/www”
    输完后结果截图:(注意上面的命令最好不要直接复制粘贴,引号由于文本的原因,会产生错误,如果直接复制粘贴,就需要把引号修改为英文状态下的引号)
    在这里插入图片描述
    这就OK了,调用一下吧。。。。

    3.在浏览器中显示摄像头的内容,检验结果

    在浏览器中输入http://192.168.0.102:8080,其中192.168.0.102为IP地址,随便说一句,这个只是在局域网内调用,保证你打开浏览器的电脑和IMX6ULL在同一个局域网内,如果想外网的话,那就内网穿透吧。。。。结果来了。。。为了截图,把界面弄小了,不太好看。。。。
    在这里插入图片描述
    下一期要在Python中调用了,没有安OpenCV的童鞋们要安了,人脸识别要用。。。。。

    展开全文
  • 摄像头是DIY常用的设备,在你的DIY创意上很多时候使用摄像头可以起到画龙点睛的作用,瞬间让你的DIY变得高大上,这期给大家推出一系列如何玩转Dragonbaord 410c开发板的USB摄像头的blog,跟大家一起来玩转手中的...
  • 如何使用MATLAB进行USB2.0摄像头的编程
  • 插上一个USB摄像头,cd dev/目录下看一下信息,是video0还是video1,lsusb可以看到自己摄像头的配置  第一步:新建文件夹 mkdir -p ~/abc/src cd ~/abc/src 第二步:下载源代码 git clone ...
  • 展开全部在linux下所e5...USB摄像头的设备文件就是在/dev目录下的video0(假如只有一个摄像头)。在linux下操作摄像头就是使用v4l2对摄像头进行视频的操作,操作步骤如下1. 打开设备文件。int fd=open(”/dev/video0...
  • 非IE下的USB摄像头非IE下调用USB摄像头,目前主要使用HTML5的getUserMedia(),使用之前先判断浏览器是否支持该方法,注:使用getUSerMedia()调用USB摄像头必须有后台的支持,我用的是nodejs,源码见文章底部...
  • 某宝上不到20块钱的500w树莓派csi摄像头着实有点让人心动,我们就来说说如何使用。我们可以先按照下面的文章来配置树莓派zero wh的无线网和usb网络。然后我们连接到树莓派,使用raspi-config开启摄像头sudo raspi-...
  • 源码里的教程: Using Custom Bag Files (or Real Robots) Bag files (or real robots) must provide at least images for RatSLAM on topics /<topic_root>/camera/image [sensor_msgs::Image] or /...
  • 很多童鞋希望能将树莓派作为网络监控设备,今天我就教教大家如何usb摄像头在树莓派上工作!!!! S*A ERm   说明最好是linux下能支持的uvc摄像头,我用的uvc301的摄像头,linux下一般免驱 A kOO )0  我这个...
  • jetson nano 人工智能开发板-板载以及USB摄像头使用 注意:(目前jetson nano只支持IMX219传感器的板载摄像头,不能任何板载摄像都网上怼) 如何测试摄像头,打开 Jetson nano 的终端 写入命令: nvgstcapture-1.0 ...
  • 教程讲解如何配置usb摄像头到openwrt上面使用,配置OpenWrt支持网络摄像头
  • 英伟达 Jetson Nano 新手必备:使用CSI或USB摄像头拍摄第一张照片1. 引言1.1 支持的摄像头1.2 nvgstcapture2. 在屏幕上开始捕获和预览...本指南将向您展示如何快速启动和运行CSI和USB摄像头。通过遵循本指南,您将能
  • 树莓派接入USB摄像头

    万次阅读 多人点赞 2018-04-30 10:39:29
    前面的文章有提到过树莓派,作为卡片电脑,树莓派可以连接许多外设,今天就来看看如何使用树莓派连接USB摄像头。现在市面上的USB摄像头基本上都是免驱的,不过要注意,我们要确认摄像头在Linux下也是免驱的。说明...
  • 所需系统1、Windows系统2、安卓模拟器(PC版本)3、虚拟摄像头软件(PC版本)步骤首先在Windows系统中安装安卓模拟器,并在安卓模拟器上安装抖音或快手app;然后,在Windows系统中安装虚拟摄像头软件,并把Windows...
  • MapBox 查看原文档...使用外部摄像头可以提高移动应用程序的可用性,因为它不需要用户将手机安装到汽车挡风玻璃上。要使用外部源,您将需要实现一个custom VideoSource。本教程将展示如何VideoSource为连接的
  • 讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头首先要在内核里面确定有添加USB摄像头的驱动,这个在讯为官方文档里面有所以就不展开讲了。 主要问题是如何让opencv能够调用摄像头。 首先将摄像头插入4412...
  • 上一篇介绍了如何使用数据集跑lsd-slam,这篇介绍如何用一个普通的usb摄像头跑lsd-slam,默认ubuntu12.04,fuerte已经安装好,workspace也已设置,如果没有,请参考上一篇数据集下跑lsd-slam的博文。 我使用的摄像头是...
  • 1.我希望用使用YOLO同时开启三个摄像头,进行实时监测。但我不知道YOLO开启摄像头的指令或者代码咋就本地文件的哪里。
  • USB摄像头以其良好的性能和低廉的价格得到广泛应用。同时因其灵活、方便的特性,易于集成到嵌入式系统中。...本文首先介绍在Linux系统下USB摄像头驱动编制的一般方法,然后说明在此基础上如何提高帧速。

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 258
精华内容 103
关键字:

usb摄像头如何使用