精华内容
下载资源
问答
  • 如题,我想在程序中同时读取多个摄像头的数据到不同的PictureControl中,每个摄像头的读取工作都分别放在一个新的线程中执行,需要怎么实现?? 求各路大神帮忙写个Demo供学习学习~~~或者不行的话提供个思路也行~~~
  • 我使用了pythonffmpeg-python库能将音频流拉取出来,然后想使用pyaudio库使用callback方式读取,结果发现回调模式下不能对数据流进行read操作,现在一头雾水,不知道咋办 顺带一提,处理音频数据是想用来语音...
  • 一个读取数据,一个释放资源,请知道朋友告诉我下,谢谢 <img alt="" height="839" src="https://img-ask.csdnimg.cn/upload/1619601630471.png" width="889" /></p>  代码附上:...
  • 本篇我们将研究如何获取以USB/rtsp等格式传输的摄像头的数据,与上一篇文章相互呼应。 USB摄像头: 首先,我们要有一个USB摄像头。确保了这一点后将摄像头插上去,输入命令: ls /dev/v* 如果看到"/dev/...

    上篇文章我们介绍了怎么用OpenCV打开图像并将图像数据发送出去, 这解决了一部分问题。但实际工程应用中,我们经常需要实时获取图像数据,因此仅仅读取本地的图片是不够的。本篇我们将研究如何获取以USB/rtsp等格式传输的摄像头的数据,与上一篇文章相互呼应。

    USB摄像头:

    首先,我们要有一个USB摄像头。确保了这一点后将摄像头插上去,输入命令:

    ls /dev/v*

    如果看到"/dev/video0",则表示摄像头被成功驱动了。 

    为了验证上面的说法,我们可以下载个程序看看摄像头拍到的画面:

    sudo apt-get install camorama

    装完输入

    camorama

    正常的话就可以看到画面了。

    到此,准备工作做完。ROS有很多的开源包提供读取USB数据的功能,比如usb_cam和gscam等,但本人尝试过后都存在这不程度的问题(可能是本人用的摄像头比较神奇),因此本人直接用OpenCV读取来处理,简单粗暴,效果迷人!只需要把上篇文章的rosOpenCV.cpp的代码改写下即可:

    #include <ros/ros.h>
    #include <image_transport/image_transport.h>
    #include <opencv2/highgui/highgui.hpp>
    #include <cv_bridge/cv_bridge.h>
    #include <stdio.h>
    
    int main(int argc, char** argv)
    {
      ros::init(argc, argv, "image_publisher");
      ros::NodeHandle nh;
    
      cv::Mat image;
      cv::VideoCapture cap(0);//0为要索引的摄像头
      if(!cap.isOpened()) 
      {
          ROS_INFO("can not opencv video device\n");
          return 1;
      }
      while (nh.ok()) 
      {
        cap >> image;//从摄像头抓取一帧图像
        cv::imshow("",image);
        cv::waitKey(3);
      }
    
      ros::spin();
    }
    

    由上面也可以看出,我们很多时候说的“ROS驱动程序”,不过就是读取数据的一个ROS节点,并不是我们通常所定义的那种连接软硬件的程序。当然ROS操作系统,也不是我们正常所定义的操作系统,两者当真如出一辙。

     

    其余格式摄像头以后会逐步补充上来。

     

     

    展开全文
  • @一、摄像头读取# 从摄像头获取图像数据cap = cv2.VideoCapture(0)while(True):# ret 读取成功True或失败False# frame读取图像内容# 读取一帧数据ret,frame = cap.read()# 变为灰度图gray = cv2.cvtColor...

    @

    一、摄像头读取

    # 从摄像头获取图像数据

    cap = cv2.VideoCapture(0)

    while(True):

    # ret 读取成功True或失败False

    # frame读取到的图像的内容

    # 读取一帧数据

    ret,frame = cap.read()

    # 变为灰度图

    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)

    # waitKey功能是不断刷新图像,单位ms,返回值是当前键盘按键值

    # ord返回对应的ASCII数值

    if cv2.waitKey(1) & 0xff == ord('q'):

    break

    # 释放摄像头资源

    cap.release()

    # 销毁显示窗口

    cv2.destroyAllWindows()

    cap.read() 返回一个布尔值(True/False)。如果帧读取的是正确的,就是 True。所以最后你可以通过检查他的返回值来查看视频文件是否已经到了结尾。

    有时 cap 可能不能成功的初始化摄像头设备。这种情况下上面的代码会报错。你可以使用 cap.isOpened(),来检查是否成功初始化了。如果返回值是True,那就没有问题。否则就要使用函数 cap.open()。

    while(True):

    # ret 读取成功True或失败False

    # frame读取到的图像的内容

    # 读取一帧数据

    ret,frame = cap.read()

    if ret!=True:

    break

    cv2.imshow('frame',frame)

    # waitKey功能是不断刷新图像,单位ms,返回值是当前键盘按键值

    # ord返回对应的ASCII数值

    if cv2.waitKey(25) & 0xff == ord('q'):

    break

    cap.release()

    cv2.destroyAllWindows()

    二、视频文件读取

    # 从文件读取视频内容

    cap = cv2.VideoCapture('videos/cats.mp4')

    三、获取视频参数

    使用函数 cap.get(propId) 来获得视频的一些参数信息。这里propId 可以是 0 到 18 之间的任何整数。每一个数代表视频的一个属性。

    watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MjEzMjYw,size_16,color_FFFFFF,t_70

    `# 视频每秒传输帧数

    fps = cap.get(cv2.CAP_PROP_FPS)

    # 视频图像的宽度

    frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))

    # 视频图像的长度

    frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))`

    四、修改视频参数

    上表中的一些值可以使用 cap.set(propId,value) 来修改, value 就是你想要设置成的新值。 例如,我可以使用 cap.get(3) 和 cap.get(4) 来查看每一帧的宽和高。默认情况下得到的值是 640X480。但是我们可以使用 ret=cap.set(3,320)和 ret=cap.set(4,240) 来把宽和高改成 320X240。

    五、视频写入

    在我们捕获视频,并对每一帧都进行加工之后我们想要保存这个视频。对于图片来时很简单只需要使用 cv2.imwrite()。但对于视频来说就要多做点工作。

    这次我们要创建一个 VideoWriter 的对象。我们应该确定:

    一个输出文件的名字。

    接下来指定 FourCC 编码(下面会介绍)。

    播放频率和帧的大小也都需要确定。

    最后一个是 isColor 标签。如果是 True,每一帧就是彩色图,否则就是灰度图。

    FourCC 就是一个 4 字节码,用来确定视频的编码格式。可用的编码列表可以从fourcc.org查到。

    In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID is more preferable. MJPG results in high size video. X264 gives very small size video)

    fourcc = cv2.VideoWriter_fourcc(*'XVID')

    out = cv2.VideoWriter('video/output.avi',fourcc,fps,(frame_width,frame_height))

    while(True):

    ret, frame = cap.read()

    if ret==True:

    # 水平翻转

    frame = cv2.flip(frame,1)

    out.write(frame)

    cv2.imshow('frame',frame)

    if cv2.waitKey(25) & 0xff == ord('q'):

    break

    else:

    break

    out.release()

    cap.release()

    cv2.destroyAllWindows()

    展开全文
  • 漫谈监控摄像头

    2015-09-04 22:25:00
    好嘛,给我一堆阿里巴巴的连接,我不是想买监控设想头,我只是想知道这玩意是怎么工作的,或者说,别人(单片机或者别的芯片)是通过什么手段去读取的数据。然而,并无结果。 无图无真相,先来一发,让我们看看...

    新来咋到,希望审批通过。

    谈起监控摄像头,给我的第一印象就是——哇塞,这玩意好高级!!!完全不知道这该死的东西到底是怎么工作的,它是另外一种神一样的存在。然后我就去度娘那输入——监控摄像头。好嘛,给我一堆阿里巴巴的连接,我不是想买监控设想头,我只是想知道这玩意是怎么工作的,或者说,别人(单片机或者别的芯片)是通过什么手段去读取它的数据。然而,并无结果。
    无图无真相,先来一发,让我们看看今天的主角!(盗来的图,希望不要被查水表)

    对,就是它了!!帅气吧,超级萌萌哒的脸,两只大眼睛还有一张大嘴巴,和小辫子~哦,不要这样子,真正的摄像头是那个嘴巴,然后,今天我们主要讨论的却是那两个小辫子!没错,就是那两个小辫子。那两个小辫子,有一个小辫子是通往它内心世界的窗口(说好的眼睛是心灵的窗户呢!!对不起,在这里,辫子才是心灵的窗户)。

    关于摄像头的工作原理——比如光通过镜头,然后在cmos阵列上进行成像,然后电荷积累,巴拉巴拉~这些就不说了(因为我也不懂!!!)

    电子的世界里,器件与器件之间的沟通比我们人类世界里的沟通要礼貌和规范得多,术语叫做协议,通信协议。你要和它说话,必须按照他们当地的语言来进行沟通,要不然,他们听不懂,你说再多,他不鸟你,你也是白搭!!!我们怎么和上面那个萌物聊天呢?它有两根辫子,就上图那个,两根辫子中,左边那根有能看见金属,右边那根就是塑料包着了。塑料包着那个小辫子其实是供电用的——12V和GND。那么剩下的,能够和这个萌物进行沟通的,只剩下一根小辫子了!!!震惊了吗?反正我知道这个真相的时候,是醉得连我自己是谁都分不清楚了(哈哈,不要笑话我,毕竟是太过于震惊了!)。其实也不用震惊,这个东西,我们早早地见过了,也许在我们还不知道单片机的时候。小时候的黑白电视机,就是插一根线就可以放电视了,据我现在的猜测:给摄像头上电,然后把那个有金属的小辫子插到电视机后面那个地方去,或许就能够放电视了!为什么敢这么猜测?后文会有些许的依据。因为现在没钱买摄像头啊,穷得厉害,等过一阵子有钱买摄像头了,我会加以测试,并再次发布这次的猜测结果的!!!

    这一根线,到底是何方神圣?鄙人到X宝输入“监控摄像头”,看到这个东西(尼玛,又是盗来的图,看来这个水表是跑不掉了):

    看看这参数,什么型号啊,传感器啊,水平清晰度啊(这个有点意思的,不过现在没必要看),镜头啊都可以认为他们是浮云,因为他们和今天这个小辫子主角没有半毛钱关系~真正有关系的是那个输出制式!!!重要事的事说三遍:输出制式,输出制式,输出~制式!首先,它是关于输出的参数,第二,他涉及到一个叫做制式的东西。输出,我们看见刚刚的两个小辫子,就两个,一个数电源,那么和输出有关的,就只剩下另外一个了,而且,那一个肯定是输出(要是哪天看见某个人,只输入不输出的时候,你赶紧为他办理后事吧)。输出制式里有两个参数:NTSC(60HZ) PAL(50HZ)。新名词,什么是NTSC,什么是PAL。PAL我是认识的,它是FPGA的老前辈了,但是很遗憾,在这里他不是FPGA的老前辈,他可大有来头!

    NTSC是National Television Standards Committee的缩写,意思是“(美国)国家电视标准委员会”。 NTSC负责开发一套美国标准电视广播传输和接收协议。so,使用他们家规定的标准的协议,就叫NTSC制式。这个制式是什么玩意啊!?都特么说啦,是一种协议,协议!!!就是大家都商量好了,我发信息的话,一定会按照这样子这样子发,然后,你接收的时候就那样子那样子收,就肯定不会有错的,这个就叫做协议,哈哈,后文或者后期的文章会介绍这个协议到底是怎么一回事,因为这个协议是比较逆天的!在这里!!!!今天的故事,只要知道,这个协议就是能够通过一根线传输视频信号这一点,就差不多了。

    PAL制又称为帕尔制。PAL是英文Phase Alteration Line的缩写,意思是逐行倒相,也属于同时制。PAL由德国人Walter Bruch在1967年提出,当时他是为德律风根(Telefunken)工作。“PAL”有时亦被用来指625 线,每秒25格,隔行扫描,PAL色彩编码的电视制式。关于这个制式,有两点要知道,第一,它也是一种电视制式,用来传输电视信号的,第二,他是德国人提出的——自然和上头那个美国人提出的有点点不同了。但是他们都是电视传输协议,那么他们都是通过一根线进行传输电视信号的协议。

    嗯,说道这里,上面两个东西就是我的猜测的来源——这两个都是电视制式,就是电视传输和接收的协议。既然电视机是按照这个协议来进行接收信号的,而且这个摄像头又是按照这个协议来进行发送数据的,他们都是讲一样的语言的,所以我是猜测,他们是能够进行沟通的!!!当然,我的这个猜测,还是有别的论据的支持,但是现在先买个关子,不说,等后面再说。

    他们叫做复合视频信号,就是在同一根线里传输了时序信号,像素点信号,是融合在一起的。他们到底是怎么融合的????又是怎么样通过这一根线就能够传输整个视频信号的????这两个制式具体又是怎么样的????

    别着急!!!这次只是把摄像头这个萌物的面纱给揭下来而已,想真正亲吻她,可还得慢慢来哦。

    敬请期待下一次更新:监控摄像头的制式——逆天的存在

    转载于:https://www.cnblogs.com/lvbufpga/p/4782484.html

    展开全文
  • 1.简述 ...现在博客上有很多从SD卡读取图片博客和文章,我来记录下怎么将图像数据写入SD卡。 2.开始前准备 基于zynq的摄像头采集系统工程(最好是vdma,我是用vdma,dma没试过) SD...

    1.简述

           由于zynq arm自带SD接口,而且有现成的API,不会像纯FPGA逻辑实现简单很多。我也是利用PS端SD卡接口实现摄像头图像写入SD卡,方便我后面导入matlab使用。现在博客上有很多从SD卡读取图片的博客和文章,我来记录下怎么将图像数据写入SD卡。

    2.开始前的准备

    • 基于zynq的摄像头采集系统的工程(最好是vdma的,我是用vdma的,dma的没试过)
    • SD卡 API网站信息 http://elm-chan.org/fsw/ff/00index_e.html。可以多研究,
    • 当然SD卡得有啊,格式化为FAT格式

    3.vivado 工程设置

        勾选SD卡接口,MIO口号最好自己查看一下自己板卡原理图,同时看看有没有勾线uart口,没有的也要勾上。

    4.sdk设置,添加ff.h头文件

          vivado综合生成比特流后到出,启动sdk。进入sdk后进入下图界面,点击红色框的选项

           勾选上xiffs,软件会自动编译

    5.BMP格式图片解析

           下图所示,这是24位的bmp格式,红框中的是54字节的头数据信息(这些数据的含义下面再说),剩下的就是图像数据了。

    6.SD卡驱动,API函数

           我现在使用这几个函数,上面提供的网站和sdk ff.h文件有具体的说明

    7.bmp图片头数据

            数据需要这两图片对应理解,第一张是定义两个结构体,第二张是对结构体的参数进行初始化,也就是我们要写入文件的头数据。写入先后要看结构体的里面的顺序。

           注意 biHeight 这个数据的正负决定了写入图像的方向,为负的时候我的写入的图片才是正向的。红色框是约束,该句意思是将数据位宽写入。默认都是4字节,不足的自动补零,这样就错了。

    8.将图像数据从内存写入SD卡

          1)我使用vdma 三帧图像,如下图红色框中三帧图像的基地址,选择其中一个就行

            2)在sd驱动函数文件定义这个地址

           3)我的摄像头是mt9v034,没有进行iic配置,默认分辨率就是752*480.3个通道。

    9.图片效果

          很完美效果,这一步完成继续下一步了。

    欢迎关注我的公众号:芯王国,有更多的FPGA&数字IC的技术分享,还可以获取开源FPGA项目!

    在这里插入图片描述

     

    展开全文
  • ret, frame = self.cap.read() # 读取摄像头,它能返回两个参数,第一个参数是bool型ret,其值为True或False,代表有没有读到图片;第二个参数是frame,是当前截取一帧图片 img = cv2.cvtColor(frame, cv2....
  • 上一篇文章写了怎么生成二维码,这儿就说说怎么读取吧,反正也很简单,iOS封装太强大了 步骤呢就是这样: 读取二维码需要导入AVFoundation框架#import 1:利用摄像头识别二维码中内容(模拟器不行)。 2:...
  • 最近在研究怎么把网络监控摄像头的数据读到嵌入式开发平台上进行视频处理。(注意这里是网络监控摄像机,不是基于UVC协议的平时用的那种USB小摄像头。 )然而我发现网上多数基于arm的视觉项目很少有对网络视频流数据...
  • 无人驾驶车辆的避障系统主要包括三个过程:障碍物的检测和跟踪,获取障碍物的运动信息;障碍物的运动轨迹预测,以及与无人车的碰撞预测;...动态障碍物与静态障碍物有所不同,只靠传感器在单个周期获得的数据...
  • 前天经理交给我一个任务,需求是在一个应用中获取摄像头的数据传递到另外一个应用中使用,生成图片。原理是运用android进程之间的通信AIDL技术,传递分辨率,图片的格式N21,摄像头传递的每一帧的图片大小都是固定的...
  • python中如何使用OpenCv读取视频某一帧并保存到数组NumPy中1:可以使用opencv读取。2:其代码如下:#includehighgui.h#includecv.h//从摄像头中读入数据int main(int argc,char** argv){cvNamedWindow(Example1,CV...
  • 火星无人小车项目

    2018-05-25 22:30:51
    第二步:对于一个摄像头的数据而言,它是一张第一人称视角的图片,对于俯视角中的一个图像在第一人称视角中为一个梯形。 ① 定义四个源点,为梯形点,按顺序。 ② 定义四个目标点,即将源点的图像转为怎么样的一...
  • 4.照相机功能,这个没有实现完成,可以将摄像头的数据取来并实时显示在TFT屏上,但不能保存照片,可以支持ov7670和ov7725两种摄像头,摄像头是通过AL422 FIFO与MCU接口的,图像数据先进FIFO中,然后MCU根据场中断...
  • 上次我们测试了搭建的开发环境,现在我们详细讲一下,怎么读取图片并显示出来以及图片的保存和摄像头的调用 1.什么是图像 计算机“看到”的图像其实是一个一个像素点构成的,每个像素点都有对应的数值。 所以图像时...
  • PCL 室内三维重建

    万次阅读 2015-10-06 00:00:10
    手头有三个prime sensor摄像头,分别固定在不同角度,打算根据RGBD信息,将三个摄像头的点云数据拼接起来。设备限制+能力不足,一直没有把point cloud library 1.8环境搭建起来,因此无法实时读取点云信息。此外,...
  • 【转】PCL室内三维重建

    千次阅读 2017-06-08 21:14:38
    手头有三个prime sensor摄像头,分别固定在不同角度,打算根据RGBD信息,将三个摄像头的点云数据拼接起来。设备限制+能力不足,一直没有把point cloud library 1.8环境搭建起来,因此无法实时读取点云信息。此外,...
  • 目前有一个设备里面有摄像头...怎么在android系统上通过wifi实现对树莓派里面记录视频资源进行读取?单单是通过socket去进行数据传输吗?是否会涉及到视频压缩解压传输?有没有可行思路或者代码框架学习下?
  • live555 直播

    千次阅读 2014-01-27 14:55:17
    摄像头采集,264编码,live555直播(1) ...重载FrameSource,写一个服务类,可以从FrameSource派生类读取数据,转发给live555.就可以了。 live555性能不给力,该怎么处理 可参考 基于LinuxSock
  • 以下是camer_def.h内容: #ifndef __CAMERDEF_H__ #define __CAMERDEF_H__ ...该函数已封装在 tcm_dll.dll 中了,但以上是VC代码,看不懂,也不知道怎么转换,请高手帮忙转成 vb.net 代码,谢谢了!!
  • 针对淘宝卖家不同传感器和传感器引脚不同,方便自由添加新传感器等,灵活应对,还有《随身探测器》另外一半还没想好怎么做,输出或控制,怎么与外部连接,还是装在玩具车上(气球无人机上),加上摄像头,远距离...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

怎么读取摄像头的数据