ARM9+Linux下USB摄像头图像采集

ARM9+Linux下USB摄像头图像采集
ARM9+Linux下USB摄像头图像采集

ARM9+Linux下USB摄像头图像采集

分类:Arm2013-01-15 20:23 408人阅读评论(0) 收藏举报

终于实现了在Micro2440+Linux2.6.29环境下通过NFS文件系统实现USB摄像头图像采集。在此,做一个总结,以备后续参考。

实验条件:RedHat9.0(内核版本2.4.18),Micro2440开发板,Linux2.6.29(arm9),ANC (Vimicro Corp.)USB PC摄像头,GCC,SDL-1.2.14.tar,servfox-R1_1_3[1].tar,spcaview-20061208[1].tar。

一、升级Redhat9.0内核

由于Readhat9.0内核版本是2.4,很多内核驱动未包含其中,尤其是USB万能摄像头GSPCA 和UVC。

二、配置编译Micro2440上运行内核

重新编译Micro2440上运行的内核,配置V4L和USB驱动。选择linux-2.6.29中的

config-mini2440为参考,执行:cp config-mini2440 .config;然后make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-;出现相应的图形化配置窗口。

如果需要在Linux操作系统中使用USB摄像头进行视频数据采集,则必须在进行内核配置时,应检查Linux 内核中是否已经添加了对Video4Linux驱动和对USB摄像头驱动模块的支持。

利用Linux内核配置make menuconfig命令对Video4Linux支持驱动进行配置,选中多媒体设备选项―Multimedia device->‖(如图15-1所示)按回车,进入多媒体设备配置界面。在多媒体配置界面中,选中―Video For Linux‖,就可以使内核实现对Video4Linux驱动的支持,为视频采集设备提供编程接口。

配置好内核对Video4Linux驱动后,返回内核配置主界面,选中USB支持选项(如图15-3 所示)―USB support—>‖ 按回车,进入USB支持配置界面

配置完成后,执行make uImage ARCH=arm CROSS_COMPILE=arm-linux-。完成后,uImage就生成在arch/arm/boot/中。通过uboot下载uImage到内存中,启动内核,实现NFS起文件系统。

三、安装SDL-1.2.14

因为在redhat9.0中显示视频图像,调用spcaview(后面介绍)需要有SDL库的支持,否则会报错。所以,将SDL-1.2.14.tar下载传送到系统中,解压后执行.configure;make;make install。完成SDL库的安装。

四、servfox-R1_1_3工具

下载Servfox-R1_1_3解压进入其目录,将其中的Makefile.arm修改为Makefile,并修改Makefile里面的CC为arm -linux -gcc,因为默认的是加载的动态库,因此还需要修改Makefile中的SERVFLAGS为SERVFLAGS= -O2 –DLINUX $(WARNINGS) –static,其中-static 是我们添加的内容,make之后生成servfox。

五、spcaview,redhat9.0下的视频显示工具

下载spcaview源码包解压,进入解压后的目录,make后会报错,一般需要安装SDL库,去网上下载后安装SDL库,在PC 机上安装SDL库:

解压:tar xvf SDL-1.2.13.tar.tar

配置:./configure

编译:make

安装:make install

进入spcaview解压目录修改Makefile中的修改Makefile中的SDLLIBS =$(shell sdl-config --libs) 和SDLFLAGS = $(shell sdl-config --cflags),这两句主要是指定了SDL库的库路径和编译选项。Make之后生成spcaview,在客户端运行spcaview –w 服务器ip:服务器端口号。就可以采集图像了,

[root@jxboylj spcaview-20061208]# ./spcaview -g -w 10.103.4.211:7070

Spcaview version: 1.1.7 date: 06:11:2006 (C) mxhaard@magic.fr

using Server 10.103.4.211 Port 7070

六、测试

将新编译的内核加载到ARM上,通过NFS文件系统运行servfox :

# ./servfox -d /dev/video0 -g -s 640x480 -w 7070

servfox version: 1.1.3 date: 11:12:2005 (C) mxhaard@magic.fr

wrong spca5xx device

Waiting .... for connection. CTrl_c to stop !!!!

Got connection from 10.103.4.216

在redhat9.0中执行spcaview:

[root@jxboylj spcaview-20061208]# ./spcaview -g -w 10.103.4.211:7070

Spcaview version: 1.1.7 date: 06:11:2006 (C) mxhaard@magic.fr

using Server 10.103.4.211 Port 7070

此时,视频能在redhat9.0窗口中显示,如图所示。

七、总结

在实现图像采集的过程中,碰到很多问题,尝试过很多方法,走了很多弯路,虽然很多碰壁,但也有不少收获。

编译内核:尝试编译高版本的内核,或者编译新内核的时候,最好选择和现有的配置文件相近的系统的配置文件作为参考。在原有基础上增加一些模块,编译,然后试验。如果一次性增加模块过多,容易造成编译错误等问题。

编译工具:在编译某些插件的时候,如:servfox、spcaview等,经常会报一些文件未定义、库不存在等错误,一般是由于系统缺少相应的库文件,需要下载安装,如SDL,或者由于系统本身版本不匹配,库文件安装位置不符造成。熟练运用goole、百度进行搜索,找到问题解决方法。同时,很多工具、库、插件等在开源社区网站都有稳定版本下载,使用这些网站提供的版本可靠性更好。

重点难点:makefile、kconfig等文件的书写,kit工具使用等。

附录:视频采集源代码分析(看代码采用Lucida Console或者Consolas等宽字体较好,0和o区别明显,不易混淆)

/*

* V4L2 video capture example

*

* This program can be used and distributed without restrictions. */

#include

#include

#include

#include

#include /* getopt_long() */

#include /* low-level i/o */

#include

#include

#include

#include

#include

#include

#include

#include

#include /* for videodev2.h */

#include

#define CLEAR(x) memset (&(x), 0, sizeof (x))

typedef enum {

IO_METHOD_READ,

IO_METHOD_MMAP,

IO_METHOD_USERPTR,

} io_method; //一共有三种视频采集方式:使用read、write方式;内存映射方式和用户指针模式

struct buffer {

void * start;

size_t length;

}; // 定义缓冲区

static char * dev_name = NULL; // 设备名称,可根据设备名打开设备static io_method io = IO_METHOD_MMAP;// 视频采集方式,内存映射方式static int fd = -1;

struct buffer * buffers = NULL;

static unsigned int n_buffers = 0;

static void errno_exit (const char *s)// 错误退出,并打印错误信息{

fprintf (stderr, "%s error %d, %s\n",s, errno, strerror (errno));

exit (EXIT_FAILURE);

}

static intxioctl (int fd,int request,void *arg)// 根据参数对设备进行控制{

int r;

do r = ioctl (fd, request, arg);

while (-1 == r && EINTR == errno);

return r;

}

static void process_image (const void * p)// 图像处理

{

fputc ('.', stdout);

fflush (stdout);// 刷新输出缓冲

}

static int read_frame (void)// 对图像帧进行读取

{

struct v4l2_buffer buf;//这是视频接口V4L2中相关文件定义的,在videodev2.h中unsigned int i;

switch (io)

case IO_METHOD_READ:

if (-1 == read (fd, buffers[0].start, buffers[0].length)) {

switch (errno) {

case EAGAIN:

return 0;

case EIO:

/* Could ignore EIO, see spec. */

/* fall through */

default:

errno_exit ("read");

}

}

process_image (buffers[0].start);

break;

case IO_METHOD_MMAP://采用内存映射的方式

CLEAR (buf);//对缓冲区清零

buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

buf.memory = V4L2_MEMORY_MMAP;

if (-1 == ioctl (fd, VIDIOC_DQBUF, &buf)) {

//VIDIOC_DQBUF控制参数作用是申请视频缓冲区switch (errno) {

case EAGAIN:

return 0;

case EIO:

/* Could ignore EIO, see spec. */

/* fall through */

default:

errno_exit ("VIDIOC_DQBUF");

}

}

assert (buf.index < n_buffers);

process_image (buffers[buf.index].start);

if (-1 == ioctl (fd, VIDIOC_QBUF, &buf))

errno_exit ("VIDIOC_QBUF");

break;

case IO_METHOD_USERPTR:

CLEAR (buf);

buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

buf.memory = V4L2_MEMORY_USERPTR;

if (-1 == ioctl (fd, VIDIOC_DQBUF, &buf)) {

switch (errno) {

case EAGAIN:

return 0;

case EIO:

/* Could ignore EIO, see spec. */

/* fall through */

default:

errno_exit ("VIDIOC_DQBUF");

}

}

for (i = 0; i < n_buffers; ++i)

if (https://www.360docs.net/doc/9f11782974.html,erptr == (unsigned long) buffers[i].start && buf.length == buffers[i].length)

break;

assert (i < n_buffers);

process_image ((void *) https://www.360docs.net/doc/9f11782974.html,erptr);

if (-1 == ioctl (fd, VIDIOC_QBUF, &buf))

errno_exit ("VIDIOC_QBUF");

break;

}

return 1;

static void mainloop (void)//循环采集

{

unsigned int count;

count = 100;

while (count-- > 0) {

for (;;) {

fd_set fds;

struct timeval tv;//时间结构体

int r;

FD_ZERO (&fds);//清零

FD_SET (fd, &fds);

/* Timeout. */

https://www.360docs.net/doc/9f11782974.html,_sec = 2;

https://www.360docs.net/doc/9f11782974.html,_usec = 0;

r = select (fd + 1, &fds, NULL, NULL, &tv);//等待一帧图像采集完成,超时定为2秒

if (-1 == r) {

if (EINTR == errno)

continue;

errno_exit ("select");

}

if (0 == r) {

fprintf (stderr, "select timeout\n");

exit (EXIT_FAILURE);

}

if (read_frame ())//读取一帧图像

break;

/* EAGAIN - continue select loop. */

}

}

}

static void stop_capturing (void)//终止采集

{

enum v4l2_buf_type type;

switch (io) {

case IO_METHOD_READ:

/* Nothing to do. */

break;

case IO_METHOD_MMAP:

case IO_METHOD_USERPTR:

type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

if (-1 == ioctl (fd, VIDIOC_STREAMOFF, &type))

errno_exit ("VIDIOC_STREAMOFF");

break;

}

}

static void start_capturing (void)//开始采集

{

unsigned int i;

enum v4l2_buf_type type;

switch (io) {

case IO_METHOD_READ:

/* Nothing to do. */

break;

case IO_METHOD_MMAP:

for (i = 0; i < n_buffers; ++i) {

struct v4l2_buffer buf;

CLEAR (buf);

buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

buf.memory = V4L2_MEMORY_MMAP;

buf.index = i;

if (-1 == ioctl (fd, VIDIOC_QBUF, &buf))

errno_exit ("VIDIOC_QBUF");

}

type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

if (-1 == ioctl (fd, VIDIOC_STREAMON, &type))

errno_exit ("VIDIOC_STREAMON");

break;

case IO_METHOD_USERPTR:

for (i = 0; i < n_buffers; ++i) {

struct v4l2_buffer buf;

CLEAR (buf);

buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

buf.memory = V4L2_MEMORY_USERPTR;

buf.index = i;

https://www.360docs.net/doc/9f11782974.html,erptr = (unsigned long) buffers[i].start;

buf.length = buffers[i].length;

if (-1 == ioctl (fd, VIDIOC_QBUF, &buf))

errno_exit ("VIDIOC_QBUF");

}

type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

if (-1 == ioctl (fd, VIDIOC_STREAMON, &type))

errno_exit ("VIDIOC_STREAMON");

break;

}

}

static void uninit_device (void)//卸载设备

{

unsigned int i;

switch (io) {

case IO_METHOD_READ:

free (buffers[0].start);

break;

case IO_METHOD_MMAP:

for (i = 0; i < n_buffers; ++i)

if (-1 == munmap (buffers[i].start, buffers[i].length))

errno_exit ("munmap");

break;

case IO_METHOD_USERPTR:

for (i = 0; i < n_buffers; ++i)

free (buffers[i].start);

break;

}

free (buffers);

}

static void init_read (unsigned int buffer_size)//初始化读取{

buffers = calloc (1, sizeof (*buffers));

if (!buffers) {

fprintf (stderr, "Out of memory\n");

exit (EXIT_FAILURE);

}

buffers[0].length = buffer_size;

buffers[0].start = malloc (buffer_size);

if (!buffers[0].start) {

fprintf (stderr, "Out of memory\n");

exit (EXIT_FAILURE);

}

}

static void init_mmap (void)//初始化内存映射

{

struct v4l2_requestbuffers req;

CLEAR (req);

req.count = 4;

req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

req.memory = V4L2_MEMORY_MMAP;

if (-1 == ioctl (fd, VIDIOC_REQBUFS, &req)) {

if (EINVAL == errno) {

fprintf (stderr, "%s does not support "

"memory mapping\n", dev_name);

exit (EXIT_FAILURE);

} else {

errno_exit ("VIDIOC_REQBUFS");

}

}

if (req.count < 2) {

fprintf (stderr, "Insufficient buffer memory on %s\n",

dev_name);

exit (EXIT_FAILURE);

}

buffers = calloc (req.count, sizeof (*buffers));

if (!buffers) {

fprintf (stderr, "Out of memory\n");

exit (EXIT_FAILURE);

}

for (n_buffers = 0; n_buffers < req.count; ++n_buffers) { struct v4l2_buffer buf; //代表驱动中的一帧

CLEAR (buf);

buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

buf.memory = V4L2_MEMORY_MMAP;

buf.index = n_buffers;

if (-1 == ioctl (fd, VIDIOC_QUERYBUF, &buf))

errno_exit ("VIDIOC_QUERYBUF");

buffers[n_buffers].length = buf.length;

buffers[n_buffers].start =

mmap (NULL /* start anywhere */,

buf.length,

PROT_READ | PROT_WRITE /* required */,

MAP_SHARED /* recommended */,

fd, buf.m.offset);

if (MAP_FAILED == buffers[n_buffers].start)

errno_exit ("mmap");

}

}

static void init_userp (unsigned int buffer_size)

{

struct v4l2_requestbuffers req;

unsigned int page_size;

page_size = getpagesize ();

buffer_size = (buffer_size + page_size - 1) & ~(page_size - 1);

CLEAR (req);

打火机摄像机操作说明书

打火机摄像机操作 本文作者:深圳市鑫宇飞科技有限公司 首先对您使用本公司的产品表示感谢!在使用之前请先阅读此说明书,正确使用此产品。 为了更好的服务,本用户手册的内容可能变更。因为产品的性能和功能而发生的变更,将不做另行通知。 一、外型、按键 (图片仅供参考,请以实物为准)

1:复位\透光孔、 2:拍照、摄像、 3:开\关机键、 4:摄像头、 5:MIC、6:USB、7:TF卡 二、产品简介 本产品是首款具有单独录音高清数码摄像和拍照功能的MINI DV,TF卡存储器,可拍摄照片和高画质视屏,本产品操作简便,小巧精致,美观实用,便于携带,是家庭安防、教育、生活等领域必备的实用工具,深受各用户的青睐。 !本产品带震动功能 三、操作说明 1、各部件说明: 1.1、指示灯说明:状态指示灯(图示1)与复位键共用一个孔。 开机:红灯亮,同时机器开始震动,初始化完后红灯长亮,机器停止震动。 关机:机器长震两次,红灯熄灭 USB状态:插入USB机器震动一次,读、写U盘时,红灯快闪。 录像模式:开始录像:机器短震2次,红灯闪烁2次,灯灭。录像 暂停:红灯闪烁3次后长亮,机器短震3次。 拍照:每拍张照红灯闪烁一次;机器震动一次,拍照等待:红灯长亮 录音:机器震动6次,灯闪6次后灭灯,进入录音。 低电:红灯快闪 1.2、按钮说明:开、关机键(图示3):用于开机、关机、录音。 拍照、摄像键(图示2):用于拍照、摄像。 复位(图示1)机器无响应时,请按此键 1.3、插座说明: USB插座(图示6),用于连接电脑或者充电器,进行数据传输、充电。TF卡座(图示7),用于储存、摄像、拍照所产生的文件。 1.4、摄像头:(图示4),用来拾取摄像信号。 1.5、MIC:(图示5)用来拾取声音。 2、开关机: 长按开机键(图示3)开机,摄像机开始系统初始化(红灯亮,机器开始震动),初始完成后,红灯长亮,机器停止震动。进入默认的摄像、拍照、录音待机模式,在开机后任何状态,长按开机键保存文件并关机(红灯闪2次,同时机器长震2次)。 3、模式切换: 本机具备快速进入各模式状态功能:开机初始化完后,各模式可通过“开\关”机键和“拍照\摄像”两按键直接进入,无需再进行模式切换。 4、摄像模式: 当本机处于关机状态时,插入TF卡(图示7),长按“开\关机”键(图示3),红灯亮,机器开始震动,系统初始化完后,红灯长亮,此时摄像机处在默认的摄像模式、拍照模式、录音模式状态;长按“拍照\摄像”键,机器短震2次,同时红灯闪烁2次,红灯灭,此时摄像机已进入了摄像当中,在摄像当中,短按“拍照\摄像”键可查看当前的工作状态,机器震动2次,同时红灯闪烁2次熄灭;短按“开\关机”键,机器短震3次,同时红灯闪烁3次后长亮,此时保存文件并停止摄像,回到摄像模式、拍照模式、录音模式待机状态。为了更安全的的保存文件,摄像时每15分钟左右保存一个文件,保存文件后将继续下一段视频的录制。 注:在摄像时,本机具有循环录像功能。 5、拍照模式:

智能车模拟摄像头图像采集方法详解

本帖最后由 superyongzhe 于 2009-11-16 23:24 编辑 我想大家肯定还遇到一个问题,那就是如何知道自己采集的图像是否正确呢?可以使用串 口,大家把我那个程序里面的printp.c 复制到你的工程里,再把includes.h里面的声明添加到你的程序里,在串口初始化程序里 设置好波特率(如何设置可参考《单片 机嵌入式在线开发方法》一书中的相关内容,也可以看芯片资料)。上位机可以使用“串口 助手就可以了”,很简单的。如果大 家还有什么问题就赶快提出来把,我尽量给大家解决,因为这里面前车的东西比较繁杂,我 一下说不清楚。最好有个电视机,能 够看到摄像头摄在那里,这样会更容易校对 近几天看到论坛里有很多网友遇到CCD图像采集的麻烦,我在最开始的时候也为这个烦恼过,由于本人比较菜,在度过大概半个月的绝望日夜后,在刚准备放弃时突然发现我已经采集到正确的图像了。特再次分享,希望能解决大家当前遇到的麻烦。 在采集图像之前,我们首先要知道摄像头输出信号的特性。目前的模拟摄像头一般都是PAL制式的,输出的信号由复合同步信号,复合消隐信号和视频信号。其中的视频信号才是真正的图像信号,对于黑白摄像头,图像越黑,电压越低,图像越白,电压越高。而复合同步信号是控制电视机的电子枪对电子的偏转的,复合消隐信号是在图像换行和换场时电子枪回扫时不发射电子。由于人眼看到的图像大于等于24Hz时人才不会觉得图像闪烁,所以PAL 制式输出的图像是25Hz,即每秒钟有25幅画面,说的专业点就是每秒25帧,其中每一帧有625行。但由于在早期电子技术还不发达时,电源不稳定,容易对电视信号进行干扰,而交流电源是50Hz所以,为了和电网兼容,同时由于25Hz时图像不稳定,所以后来工程师们把一副图像分成两场显示,对于一幅画面,一共有625行,但是电子枪先扫描奇数场1,3,5.....,然后再扫描2,4,6.....,所以这样的话,一副图像就变成了隔行扫描,每秒钟就有50场了。其中具体的细节请参考这个网站 电视原理与系统 /zjx/zjx09/zjx090000.htm 只用看前面的黑白全电视信号和PAL制式就可以了(当然如果感兴趣可以全部看完)。 通过上面的内容如果你对PAL制式信号了然于心,那么就可以开始图像的采集了,PAL 输出的信号有复合同步信号,复合消隐信号和视频信号。那么我们首先就是要从这三种信号中分理出复合同步信号,复合消隐信号和视频信号,以便我们对AD采样到的值进行存储,

LabVIEW应用于实时图像采集及处理系统

LabVIEW应用于实时图像采集及处理系统 2008-7-29 9:35:00于子江娄洪伟于晓闫丰隋永新杨怀江供稿 摘要:本文在LabVIEW和NI-IMAQ Vision软件平台下,利用通用图像采集卡开发一种图像实时采集处理虚拟仪器系统。通过调用动态链接库驱动通用图像采集卡完成图像采集,采集图像的帧速率达到25帧每秒。利用NI-IMAQ Vision视频处理模块,进行图像处理,以完成光电探测器的标定。该系统具有灵活性强、可靠性高、性价比高等优点。 主题词:虚拟仪器;图像处理;LabVIEW;动态链接库 1.引言 美国国家仪器(NI)公司的虚拟仪器开发平台LabVIEW,使用图形化编程语言编程,界面友好,简单易学,配套的图像处理软件包能提供丰富的图像处理与分析算法函数,极大地方便了用户,使构建图像处理与分析系统容易、灵活、程序移植性好,大大缩短了系统开发周期。在推出应用软件的基础上,NI公司又推出了图像采集卡,对于NI公司的图像采集卡,可以直接使用采集卡自带的驱动以及LabVIEW中的DAQ库直接对端口进行操作。 但由于NI公司的图像采集卡成本很高,大多用户难以接受,因此硬件平台往往采用通用图像采集卡,软件方面的图像处理程序仍采用LabVIEW以及视频处理模块编写。本文正是基于这样的目的,提出了一种在LabVIEW环境下驱动通用图像采集卡的方案,在TDS642EVM高速DSP视频处理板卡的平台下,完成实时图像采集及处理。 在图象处理的工作中主要完成对CCD光电探测器的辐射标定。由于探测器在自然环境下获取图像时,会受到来自大气干扰,自身暗电流,热噪声等影响,使CCD像元所输出信号的数值量化值与实际探测目标辐射亮度之间存在差异,所以要得到目标的精确图像就必须对探测器进行辐射标定。 2.图像采集卡简介 闻亭公司TDS642EVM(简称642)多路实时视频处理板卡是基于DSP TMS320DM642芯片设计的评估开发板。计算能力可达到4Gips,板上的视频接口和视频编解码芯片Philips SAA7115H相连,实现实时多路视频图像采集功能,支持多种PAL,NTSC和SECAM视频标准。本系统通过642的PCI接口与主机进行数据交换。PCI支持“即插即用(PnP)”自动配置功能,使图像采集板的配置变得更加方便,其一切资源需求的设置工作在系统初启时交由BIOS处理,无需用户进行繁琐的开关与跳线操作。PCI接口的海量数据吞吐,为其完成实时图像采集和处理提供保证。 3.系统组成及工作原理

IP Camera User Manual(网络摄像头使用说明书-英文版)

Vilar IP Camera VS-IPC1002 User’s Manual

Index 1INTRODUCTION.............................................................................- 1 - 1.1W ELCOME TO THE V ILAR IP C AMERA (1) 1.2P ACKAGE C ONTENTS (1) 1.3I DENTIFY VS-IPC1002 (2) 1.3.1VS-IPC1002Views....................................................................- 2 - 1.3.2Indication and Operation..........................................................- 4 -2FUNCTIONS AND FEATURES........................................................- 10 - 2.1B ASIC F UNCTIONS (10) 2.2A DVANCED F EATURES (10) 3SYSTEM REQUIREMENT...............................................................- 11 -4SETUP PROCEDURE......................................................................- 12 - 4.1VS-IPC1002P OWER &N ETWORK C ONNECTION (12) 4.2R OUTER/S WITCH/H UB/X DSL M ODEM C ONNECTION (13) 4.3U SE IPC AM S EARCH T OOL TO SETUP VS-IPC1002 (14) 4.4V IEW V IDEO ON W EB B ROWSER (16) 4.5S ETUP VS-IPC1002 ON W EB (22) 4.6M OUNTING THE VS-IPC1002 (22) 5SYSTEM CONFIGURATION...........................................................- 24 - 5.1S YSTEM STATUS (24) 5.2U SER M ANAGEMENT (25) 5.3N ETWORK (26) 5.4D ATE AND T IME (27) 5.5V IDEO (27) 5.6JPEG E NCRYPTION (28) 5.7E-MAIL (29) 5.8FTP (30) 5.9S ENSORS AND M OTION D ETECTION (31) 5.10S CHEDULER T RIGGER (31) 5.11S YSTEM M AINTENANCE (32) 5.12S YSTEM L OG (32) 5.13G UEST Z ONE (33) 6VISIT VS-IPC1002 OVER INTERNET............................................- 34 - 6.1WAN IP A DDRESS (34) 6.2N ETWORK A DDRESS T RANSLATION (NAT) (35) 6.3P ORT F ORWARDING (35) 6.4D EFAULT G ATEWAY (36) 6.5A CCESSING M ULTIPLE C AMERAS ON THE I NTERNET (36) 6.6D YNAMIC D OMAIN N AME S ERVICE (DDNS) (37) 6.7C ONFIGURATION E XAMPLE (38)

STM32单片机ov760摄像头进行图像采集处理

#include #include #include #include #include #include #include #include #include "Image.h" #include "include.h" float kp,kd,ki; s16 steererr = 0; u8 Get_a_Y() { u8 t1,t2; //获得一个Y分量的过程 FIFO_RCK=0; FIFO_RCK=1; t1=(0x00ff&GPIOB->IDR); FIFO_RCK=0; FIFO_RCK=1; t2=(0x00ff&GPIOB->IDR); //跳过一个像素 FIFO_RCK=0; FIFO_RCK=1; t2=(0x00ff&GPIOB->IDR); FIFO_RCK=0; FIFO_RCK=1; t2=(0x00ff&GPIOB->IDR); return t1; }

void skip_a_row() { u16 i; u8 temp; for (i=0;i<320;i++) { //跳过一个像素 FIFO_RCK=0; FIFO_RCK=1; temp=(0x00ff&GPIOB->IDR); FIFO_RCK=0; FIFO_RCK=1; temp=(0x00ff&GPIOB->IDR); } } void Get_a_Image() { u16 i,j; for (i=0;i

基于Labview的图像采集与处理

目前工作成果: 一、USB图像获取 USB设备在正常工作以前,第一件要做的事就是枚举,所以在USB摄像头进行初始化之前,需要先枚举系统中的USB设备。 (1)基于USB的Snap采集图像 程序运行结果: 此程序只能采集一帧图像,不能连续采集。将采集图像函数放入循环中就可连续采集。

循环中的可以计算循环一次所用的时间,运行发现用Snap采集图像时它的采集速率比较低。运行程序时移动摄像头可以清楚的看到所采集的图像有时比较模糊。 (2)基于USB的Grab采集图像 运行程序之后发现摄像头采集图像的速率明显提高。

二、图像处理 1、图像灰度处理 (1)基本原理 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。 第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。 第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。 (2)labview中图像灰度处理程序框图 处理结果:

PCB图像采集系统研究背景意义及国内外现状

PCB图像采集系统研究背景意义及国内外现状 1 研究背景 2 AOI系统的研究和国内现状 3 研究意义 1 研究背景 印刷电路板(Printed Circuit Board,PCB)又称为印刷线路板或印制电路板。印刷电路板是各种电子产品的主要部件,有“电子产品之母”之称,它是任何电子设备及产品均需配备的,其性能的好坏在很大程度上影响到电子产品的质量。几乎每一种电子设备都离不开PCB,小到电子手表、计算器,大到航空航天、军用武器系统等,都包含各式各样,大小各异的PCB板。近年来,随着生产工艺的不断提高,PCB正在向超薄型、小元件、高密度、细间距方向快速发展。这种趋势必然给质量检测工作带来了很多挑战和困难。因此PCB故障的检测已经成为PCB制造过程中的一个核心问题,是电子产品制造厂商非常关注的问题。在生产线上,厂家为保证PCB板的质量,就得要求100%的合格率,对所有的部件、子过程和成品都是如此。在过去靠人工对其进行检测的过程中,存在以下几个不可避免的缺点: (1)容易漏检。由于是人眼检测,眼睛容易疲劳,会造成故障不能被发现的问题。并且人工检测主观性大,判断标准不统一,使检测质量变得不稳定。 (2)检测速度慢,检测时间长。比如对于图形复杂的印刷电路板,人工很难实现快速高效的检测,因此人工检测不能满足高速的生产效率。 (3)随着技术的发展,设备的成本降低,人工费用增加,仍然由人工进行产品质量控制,将难于实现优质高效,而且还会增加生产成本。 (4)在信息技术如此发达的今天人工检测有不可克服的劣势,例如:对检测结果实时地保存和远距离传输,对原始图像的保存和远距离传输等。 (5)有些在线检测系统是接触式检测,需要与产品进行接触测量,因此,有可能会损伤产品。 因此,人工检测的精确性和可靠性大打折扣,传统意义上的检测方法不再能适应现代电路板检测的要求。如果漏检的有错误的电路板进入下一道工序,随着每一项工艺步骤的增加,到最终经过贴装阶段后,仍然会被检测出来是有故障的,那时,制造厂商与其花费大量的人力和成本来检测、返修这块电路板,还不如选

基于摄像头的图像采集与处理应用

基于摄像头得图像采集与处理应用 1、摄像头工作原理 图像传感器,就是组成数字摄像头得重要组成部分。根据元件得材料不同,可分为 CCD(Charge Coupled Device,电荷耦合元件)与CMOS(plementary MetalOxide Semiconductor,金属氧化物半导体元件)两大类。 电荷藕合器件图像传感器CCD(Charge Coupled Device),它使用一种高感光度得半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号,数字信号经过压缩以后由相机内部得闪速存储器或内置硬盘卡保存,因而可以轻而易举地把数据传输给计算机,并借助于计算机得处理手段,根据需要与想像来修改图像。CCD由许多感光单位组成,通常以百万像素为单位。当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有得感光单位所产生得信号加在一起,就构成了一幅完整得画面。 互补性氧化金属半导体CMOS(plementary MetalOxide Semiconductor)与CCD一样同为在图像传感器中可记录光线变化得半导体。CMOS主要就是利用硅与锗这两种元素所做成得半导体,使其在CMOS上共存着带N(带–电)与P(带+电)级得半导体,这两个互补效应所产生得电流即可被处理芯片纪录与解读成影像。然而,CMOS得缺点就就是太容易出现杂点, 这主要就是因为早期得设计使CMOS在处理快速变化得影像时,由于电流变化过于频繁而会产生过热得现象。 CCD与CMOS在制造上得主要区别就是CCD就是集成在半导体单晶材料上,而CMOS就是集成在被称做金属氧化物得半导体材料上,工作原理没有本质得区别。CCD制造工艺较复杂,采用CCD得摄像头价格都会相对比较贵。事实上经过技术改造,目前CCD与CMOS得实际效果得差距已经减小了不少。而且CMOS得制造成本与功耗都要低于CCD不少,所以很多摄像头生产厂商采用得CMOS感光元件。成像方面:在相同像素下CCD得成像通透性、明锐度都很好,色彩还原、曝光可以保证基本准确。而CMOS得产品往往通透性一般,对实物得色彩还原能力偏弱,曝光也都不太好,由于自身物理特性得原因,CMOS得成像质量与CCD还就是有一定距离得。但由于低廉得价格以及高度得整合性,因此在摄像头领域还就是得到了广泛得应用 工作原理:为了方便大家理解,我们拿人得眼睛来打个比方。当光线照射景物,景物上得光线反射通过人得晶状体聚焦,在视网膜上就可以形成图像,然后视网膜得神经感知到图像将信息传到大脑,我们就能瞧见东西了。摄像头成像得原理与这个过程非常相似,光线照射景物,景物上得光线反射通过镜头聚焦,图像传感器就会感知到图像。 具体部分就是这样得,摄像头按一定得分辨率,以隔行扫描得方式采集图像上得点,当扫描到某点时,就通过图像传感芯片将该点处图像得灰度转换成与灰度一一对应得电压值,然后将此电压值通过视频信号端输出。如图1所示,摄像头连续地扫描图像上得一行,则输出就就是

网络摄像头使用说明书样本

ImagineWorldClient 网络视频服务器集中管理软件 说 明 书 ( 修订版-1)

目录 1、 ImagineWorldClient 功能........................... 错误!未定义书签。 2、安装ImagineWorldClient ........................... 错误!未定义书签。 3、启动ImagineWorldClient ........................... 错误!未定义书签。 3.1顶部工具栏..................................... 错误!未定义书签。 3.2顶部菜单栏..................................... 错误!未定义书签。 3.3左侧工具栏..................................... 错误!未定义书签。 3.4视频区......................................... 错误!未定义书签。 3.5底部工具栏..................................... 错误!未定义书签。4菜单操作及鼠标操作.................................. 错误!未定义书签。 4.1文件........................................... 错误!未定义书签。 4.2操作........................................... 错误!未定义书签。 4.3设置........................................... 错误!未定义书签。 4.4帮助........................................... 错误!未定义书签。 4.5鼠标操作....................................... 错误!未定义书签。5实时视频显示及控制.................................. 错误!未定义书签。 5.1 实时视频显示画面控制.......................... 错误!未定义书签。 5.1.1 显示模式切换............................. 错误!未定义书签。 5.1.2 单画面显示............................... 错误!未定义书签。 5.1.3 全屏显示................................. 错误!未定义书签。 5.1.4 轮巡监视................................. 错误!未定义书签。 5.2 云台控制...................................... 错误!未定义书签。 5.3分配摄像机..................................... 错误!未定义书签。6本地检索及录像回放.................................. 错误!未定义书签。 6.1录像检索....................................... 错误!未定义书签。

对摄像头采集图像的处理(1)

1. 图像处理 4.2.1目标指引线的提取 智能车通过图像采样模块获得车前方的赛道图像信息,往下介绍如何 分析此二维数组来提取黑线,我们采用边缘检测的方法。 二维数组的行数和列数即为像素的图像坐标,我们若求出了黑线边缘 的图像坐标,就知道了黑线的位置。黑线边缘的特点是其左、右两像素为 一黑一白,两像素值的差的绝对值大于某阀值,大于可根据试验确定;而 其余处的相邻两像素或全白,或全黑,像素值差的绝对值小于该阀值。这 样,只要我们对两数组每行中任何相邻两点做差,就可以根据差值的大小 是否大于该阀值来判断此两点处是否为黑线边缘,还可以进行根据差值的 正负来判定边缘处是左白右黑,还是右黑左白。 从最左端的第一个有效数据点开始依次向右进行阀值判断:由于实际 中黑白赛道边缘可能会出现模糊偏差,导致阀值并不是个很简单介于两相 邻之间,很可能要相隔两个点。因此:第line为原点,判断和line+3的差 是否大于该阀值,如果是则将line+3记为i,从i开始继续在接下的从i+3到该行最末一个点之间的差值是否大于阀值,如果大于则将line+i/2+1的坐 标赋给中心给黑线中心位置值,如5-4

图4-4单行黑线提取法 利用该算法所得到的黑线提取效果不仅可靠,而且实时性好;在失去 黑线目标以后能够记住是从左侧还是从右侧超出视野,从而控制舵机转向让赛车回到正常赛道。 试验表明:只要阀值取得合适,该算法不仅可靠,而且实时性较好。 如果更进一步可以设置阀值根据现场情况的变化而变化。在黑线引导线已经能够可靠提取的基础上,我们可以利用它来进行相应的弯、直道判定,以及速度和转向舵机控制算法的研究。 2.

基于摄像头的图像采集与处理应用

基于摄像头的图像采集与处理应用 1、摄像头工作原理 图像传感器,是组成数字摄像头的重要组成部分。根据元件的材料不同,可分为CCD (Charge Coupled Device,电荷耦合元件)和CMOS(Complementary Metal-Oxide Semiconductor,金属氧化物半导体元件)两大类。 电荷藕合器件图像传感器CCD(Charge Coupled Device),它使用一种高感光度的半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号,数字信号经过压缩以后由相机内部的闪速存储器或内置硬盘卡保存,因而可以轻而易举地把数据传输给计算机,并借助于计算机的处理手段,根据需要和想像来修改图像。CCD由许多感光单位组成,通常以百万像素为单位。当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。 互补性氧化金属半导体CMOS(Complementary Metal-Oxide Semiconductor)和CCD一样同为在图像传感器中可记录光线变化的半导体。CMOS主要是利用硅和锗这两种元素所做成的半导体,使其在CMOS上共存着带N(带–电)和P(带+电)级的半导体,这两个互补效应所产生的电流即可被处理芯片纪录和解读成影像。然而,CMOS的缺点就是太容易出现杂点, 这主要是因为早期的设计使CMOS在处理快速变化的影像时,由于电流变化过于频繁而会产生过热的现象。 CCD和CMOS在制造上的主要区别是CCD是集成在半导体单晶材料上,而CMOS是集成在被称做金属氧化物的半导体材料上,工作原理没有本质的区别。CCD制造工艺较复杂,采用CCD的摄像头价格都会相对比较贵。事实上经过技术改造,目前CCD和CMOS的实际效果的差距已经减小了不少。而且CMOS的制造成本和功耗都要低于CCD不少,所以很多摄像头生产厂商采用的CMOS感光元件。成像方面:在相同像素下CCD的成像通透性、明锐度都很好,色彩还原、曝光可以保证基本准确。而CMOS的产品往往通透性一般,对实物的色彩还原能力偏弱,曝光也都不太好,由于自身物理特性的原因,CMOS的成像质量和CCD还是有一定距离的。但由于低廉的价格以及高度的整合性,因此在摄像头领域还是得到了广泛的应用 工作原理:为了方便大家理解,我们拿人的眼睛来打个比方。当光线照射景物,景物上的光线反射通过人的晶状体聚焦,在视网膜上就可以形成图像,然后视网膜的神经感知到图像将信息传到大脑,我们就能看见东西了。摄像头成像的原理和这个过程非常相似,光线照射景物,景物上的光线反射通过镜头聚焦,图像传感器就会感知到图像。 具体部分是这样的,摄像头按一定的分辨率,以隔行扫描的方式采集图像上的点,当扫描到某点时,就通过图像传感芯片将该点处图像的灰度转换成与灰度一一对应的电压值,然后将此电压值通过视频信号端输出。如图1所示,摄像头连续地扫描图像上的一行,则输出

摄像头图像采集及处理范文

摄像头采集赛道黑线信息是本系统赛道信息获取的主要途径,本章将从摄像头工作原理、图像采样电路设计、和采样程序流程图三个方面进行介绍。 8.1 摄像头工作原理摄像头常分为彩色和黑白两种摄像头,主要工作原理是:按一定的分辨率,以隔行扫描的方式采样图像上的点,当扫描到某点时,就通过图像传感芯片将该点处图像的灰度转换成与灰度成一一对应关系的电压值,然后将此电压值通过视频信号端输出。 在示波器上观察可知摄像头信号如图8.1所示。摄像头连续地扫描图像上的一行,就输出一段连续的电压视频信号,该电压信号的高低起伏正反映了该行图像的灰度变化情况。当扫描完一行,视频信号端就输出一低于最低视频信号电压的电平(如0.3V),并保持一段时间。这样相当于,紧接着每行图像对应的电压信号之后会有一个电压“凹槽”,此“凹槽”叫做行同步脉冲,它是扫描换行的标志。然后,跳过一行后(因为摄像头是隔行扫描的方式),开始扫描新的一行,如此下去,直到扫描完该场的视频信号,接着就会出现一段场消隐区。此区中有若干个复合消隐脉冲(简称消隐脉冲),在这些消隐脉冲中,有个脉冲,它远宽于(即持续时间长于)其他的消隐脉冲,该消隐脉冲又称为场同步脉冲,它是扫描换场的标志。场同步脉冲标志着新的一场的到来,不过,场消隐区恰好跨在上一场的结尾部分和下一场的开始部分,得等场消隐区过去,下一场的视频信号才真正到来。摄像头每秒扫描25 幅图像,每幅又分奇、偶两场,先奇场后偶场,故每秒扫描50 场图像。奇场时只扫描图像中的奇数行,偶场时则只扫描偶数行。 8.2 图像采样电路设计在本次比赛中赛道仅由黑白两色组成,为了获得赛道特征,只需提取探测画面的灰度信息,而不必提取其色彩信息,所以本设计中采用黑白摄像头。型号为: XB-2001B,分辨率为320*240。为了有效地获取摄像头的视频信号,我们采用LM1881提取行同步脉冲,消隐脉冲和场同步脉冲,电路原理图8.2所示。将视频信号通过一个电容接至LM1881的2脚,即可得到控制单片机进行A/D采样的控制信号行同步HS与奇偶场同步号 ODD/EVEN。

单片机摄像头数据采集与处理

单片机摄像头数据采集与处理 题目单片机摄像头数据采集与处理 _自动化学院_院(系) 自动化_专业学 号 08009123 姓名孙博指导教师符影杰顾问教师起止日期 2012.12.20 –2013.06.10 设计地点中心楼 224东南大学毕业设计(论文)报告摘要单片机摄像 头数据采集与处理摘要随着计算机的发展,随着图像采集处理技术的进步和社会 的发展,其被广泛的运用于社会社交,远程医疗及实时监控等各个方面。图像测量 是一种非接触式的检测方法,可应用于工业、民用等许多领域。图像采集与处理是 图像测量的基础,关系到测量的精度与速度。基于单片机摄像头图像采集与处理技 术拥有广泛的应用市场和广阔的发展前景。本文中基于低功耗单片机的摄像式实时 图像测量系统,通过图像测量的方法,可直接安装在常规电表前,采用摄像技术和 图像识别技术实现数据采集,将读表数据直接在单片机中处理并显示出结果,采用 串口传输技术将数据存储于上位机上并显示,无需人工干预,具有成本低、安装简

单、智能化程度高的特点。针对本设计的特点,采用一种基于图像处理技术 的数码 管检测系统,设计了静态图像采集和静态图像处理的控制方案。首先,通过分析与 实验,完成各功能模块核心元件的选型与外围电路设计。经过硬件调试,完成了最 小系统、图像采集、数据存储、结果显示和数据传输等功能模块的硬件设计。其次, 在硬件平台的基础上,实现各个功能模块的软件功能。基于本装置的 控制 要求,分别选用了 MSP430F149 单片机和STC12LE5A60S2 单片机和OV7670 图像传感器作为核心部件,设计并完成了两套图像测量系统。实验结 果表 明,该装置满足测量要求,达到了研究的预期目的。关键词:图像测量、图像 处理、 摄像头、单片机 .I.东南大学毕业设计(论文)报告 Abstract Singlechip camera data acquisition and processing Abstract With the development of computer technology along with the development of image acquisition andprocessing technology and the progress of society image technology is widely used in socialnetworkingtelemedicine and real-time monitoring. Image measurement is a sort of non-contactmeasurement which can be applied to many fields such as industrial civil. Image acquisition andprocessing is the basis of image measurement which is related to the precision and

AMCap 摄像头测试软件使用说明

AMCap 摄像头测试软件使用说明 一、预览图像: 1、解压文件AMCap 全功能珍藏版.ini与AMCap 全功能珍藏版.exe,这两个文件一定要放在同一个文件夹目录下(一定要解压出来才能打开软件,否则打开会出现图像不能预览的错误)。 2、双击AMCap打开摄像头; 3、点击设备选择好视频设备(上)和麦克风设备(下)如下图红色框框所示: 4、点击“选项”选择“预览”打钩,如下图: 5、 点击视频捕捉接口,然后点击输出大小,选择1920*1080(根据需要调节分辨率,分辨率大小取决于录像文件大小),压缩格式改成MJPG,然后点击确定。 6、现在就可以旋转镜头来调清晰度了,调成广角来测试,看看四周有没有暗角。一定要多测试几次来确定有没有暗角。

二、录像: 1、点击文件设置好录像文件路径—设置好录像文件名称—弹出的录像大小直接按确定不需要去填数据: 2、点击“捕捉”选项选择好红框所示的“捕捉音频”打钩,然后点击“开始捕捉”就开始录像了,需要停止录像就点击“停止捕捉”录像完成后去上一步设置的文件路径里面查找您的录像文件,需要录另一个文件请在路径名称里面改一下文件名就可以录制第二个录像:

三、拍照: 1、选择“捕捉”选项里面的“拍照”选项,钩选“启用”钩钩,如下图: 2、然后点击文件夹设置好拍照存储路径,如下图:

3、点击“快照”或者按快捷键(Ctrl+L键)就可以拍照了(拍照文件请到设置好的拍照文件路径里面寻找,照片大小可以通过上面步骤调节分辨率大小来调节,分辨率越大照片越大,分辨率越小照片越小),拍照如下图操作: 注:此软件只能操作预览和简单录像拍照使用,录像格式为A VI, 拍照格式BMP、JPG和PNG格式,(录像拍照的文件大小与分辨率大小有直接关系,分辨率越大文件越大,分辨率越小文件越小,设置分辨率请参照一的第5项)如果需要专业格式的录像请您自行查找别的视频软件,我们的摄像头支持所有的视频软件。

摄像头视频采集压缩及传输原理

摄像头视频采集压缩及传输原理 摄像头基本的功能还是视频传输,那么它是依靠怎样的原理来实现的呢?所谓视频传输:就是将图片一张张传到屏幕,由于传输速度很快,所以可以让大家看到连续动态的画面,就像放电影一样。一般当画面的传输数量达到每秒24帧时,画面就有了连续性。 下边我们将介绍摄像头视频采集压缩及传输的整个过程。 一.摄像头的工作原理(获取视频数据) 摄像头的工作原理大致为:景物通过镜头(LENS)生成的光学图像投射到图像传感器表面上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过USB接口传输到电脑中处理,通过显示器就可以看到图像了。下图是摄像头工作的流程图: 注1:图像传感器(SENSOR)是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。光电二极管受到光照射时,就会产生电荷。 注2:数字信号处理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通过一系列复杂的数学算法运算,对数字图像信号参数进行优化处理,并把处理后的信号通过USB等接口传到PC等设备。 DSP结构框架: 1. ISP(image signal processor)(镜像信号处理器) 2. JPEG encoder(JPEG图像解码器) 3. USB device controller(USB设备控制器) 而视频要求将获取的视频图像通过互联网传送到异地的电脑上显示出来这其中就涉及到对于获得的视频图像的传输。 在进行这种图片的传输时,必须将图片进行压缩,一般压缩方式有如H.261、JPEG、MPEG 等,否则传输所需的带宽会变得很大。大家用RealPlayer不知是否留意,当播放电影的时候,在播放器的下方会有一个传输速度250kbps、400kbps、1000kbps…画面的质量越高,这个速度也就越大。而摄像头进行视频传输也是这个原理,如果将摄像头的分辨率调到640×480,捕捉到的图片每张大小约为50kb左右,每秒30帧,那么摄像头传输视频所需的速度为50×30/s=1500kbps=1.5Mbps。而在实际生活中,人们一般用于网络视频聊天时的分辨率为320×240甚至更低,传输的帧数为每秒24帧。换言之,此时视频传输速率将不到300kbps,人们就可以进行较为流畅的视频传输聊天。如果采用更高的压缩视频方式,如MPEG-1等等,可以将传输速率降低到200kbps不到。这个就是一般视频聊天时,摄像头所需的网络传输速度。 二.视频压缩部分 视频的压缩是视频处理的核心,按照是否实时性可以分为非实时压缩和实时压缩。而视频传输(如QQ视频即时聊天)属于要求视频压缩为实时压缩。 下面对于视频为什么能压缩进行说明。 视频压缩是有损压缩,一般说来,视频压缩的压缩率都很高,能够做到这么 高的压缩率是因为视频图像有着非常大的时间和空间的冗余度。所谓的时间冗余度指的是两帧相邻的图像他们相同位置的像素值比较类似,具有很大的相关性,尤其是静止图像,甚至两帧图像完全相同,对运动图像,通过某种运算(运动估计),应该说他们也具有很高的相关性;而空间相关性指的是同一帧图像,相邻的两个像素也具备一定的相关性。这些相关性

图像采集处理模块

1、图像采集处理 我们将OpenCV软件安装在安卓手机中,对手机拍照后的图像进行辨别处理以及定位处理,通过蓝牙模块,将信号传给单片机。 示意图: (1)、利用手机进行拍照、识别的原因: 我们查阅相关资料,找到了蓝牙助手v1.0这个软件,它是一款手机软件,实现了对于安卓手机蓝牙的基本操作以及安卓手机与单片机的通信。安装了次软件的安卓手机就可以借助HC-05蓝牙串口模块,控制单片机等系统,并可以接受从单片机等传送来的数据。 利用这个软件的原因是因为此软完成了蓝牙串口协议的设置,开发者使用时可以免去复杂的设置。 (2)、所用设备HC-05蓝牙串口 实物图:

模块与单片机的连接方式: 参数设置: 工作模式:从模式;波特率:9600bps;设备名称:HC-05;配对密码:1234,如按默认参数则无需以下个性设置。所有设置好的参数掉电都可保存): 1)、给模块提供合适的工作电源,带底板模块的工作电源为3.6~6V,不带底板核心模块为3.3V 2)、正确连接数据线,单片机的TXD和RXD必须与蓝牙模块的RXD,TXD交叉连接 进入AT命令模式有两种方法: a.蓝牙模块工作后拉高KEY脚电平进入AT模式1,LED状态为快闪,此时设置AT命令使用的波特率与通信时波特率一致,如通信时使用9600则此时设置AT命令的波特率

也应该选择9600 b.在模块上电的同时也令KEY脚为高电平,则进入AT模式2,LED状态为慢闪,固定使用38400,8,N,1的通信格式设置参数进入AT模式后只有保持KEY脚为高电平才能使用全部的AT命令。AT命令后面必须有回车换行符。如果使用SSCOM则在字符串输入框输入“AT”并勾选“发送新行”即可。 (3)、手机与蓝牙从机模块的连接及通信测试: 首先打开手机蓝牙,然后用手机的蓝牙管理程序扫描蓝牙设备,这时会找到蓝牙从机模块,然后进入蓝牙助手v1.0这个软件,在此软件中再次查询蓝牙从机模块,这时点击连接,会提示输入密码,例如模块初始配对码为1234。输入后,会提示配对未连接。此操作只要进行一次即可被手机记住,下次自动配对。因为蓝牙设备是串口设备,需要打开端口才可以连接,这时模块的灯还是闪烁的,当你打开端口后,灯才会变成连接成功状态。 下一步进行测试,在蓝牙助手v1.0中,输入字符后点击send,这时数据就会通过蓝牙发送到蓝牙模块,并从模块的TXD发出,此时单片机连接到模块的TXD-RXD进行数据通信了。 (4)、如何利用opencv软件进行物体的识别区分以及定位 识别特定的物体,可以用模板匹配的方法,大致说来就是先拍一张模板,再在图像里检测目标,模板匹配对比的是图像的像素值。 我们设想的具体方式为: 1)、在比赛前,分别拍摄架子上的物品(第一层和第二层),作为OpenCV图像库中的模版图像(patch);(其角度为正面照,若增强其区分的精确度,则可多角度完成一个物品的模版照) 2)在机器人启动前,我们将要拿去的东西输入进机器人; 3)、寻找一幅图像的匹配的模板,OpenCV已经为我们集成好了相关的功能,具体函数为matchTemplate; 4)、比赛时在现场分5次拍摄图像(每四个物品一次拍成),最中间无巡线部分,采用相隔1S的时间段的频率进行拍摄,知道拍摄出的图片物品在正中间即可,这就确定了物品的位置。 5)、接下来就是在所拍摄的图像中寻找和模板图像(patch)最相似的区域。OpenCV提供给我们的函数matchTemplate。该函数的功能为,在输入源图像Source image(I)中滑动框,寻找各个位置与模板图像Template image(T)的相似度,并将结果保存在结果矩阵result matrix(R)中。该矩阵的每一个点的亮度表示与模板T的匹配程度。然后可以通过函数minMaxLoc定位矩阵R中的最大值; 6)、手机根据找到的物体的位置,生成指令,并通过串口传递给单片机,最后机器人则针对匹配度最高的物品进行拿取操作。 通过查找资料,OpenCV的函数库中能够应用于匹配的方法有一下几种: CV_TM_SQDIFF 平方差匹配法,最好的匹配为0,值越大匹配越差 CV_TM_SQDIFF_NORMED 归一化平方差匹配法

相关文档
最新文档