在Ubuntu里使用摄像头
Ubuntu8.04以上版本自带的驱动已经能够识别大多数摄像头,然而兼容性并不好,很多只能被Ekiga识别,而无法使用skype进行视频聊天。我们需要进行一些安装和调试工作来让摄像头更好的工作。
首先,查看当前的usb口连接情况:
$ lsusb
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 002: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 005: ID 0ac8:301b Z-Star Microelectronics Corp. ZC0301 WebCam
Bus 002 Device 003: ID 046d:c01f Logitech, Inc.
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
从这些信息我们可以看出摄像头的Vendor_id=0ac8,Proct_id=301b;还可以看出图形界面已经使用的usb端口的情况及摄像头芯片的制造商Z-Star Microelectronics Corp.说明我们的摄像头已经被系统所识别,下面让我们开始吧:
1. 下载gspcav1-20071224.tar.gz并解压
$ wget -c http://www.slackware.com/~alien/ ... av1-20071224.tar.gz
$ tar zxvf gspcav1-20071224.tar.gz
2. 编译并安装驱动
$ cd gspcav1-20071224
$ make clean
$ make
$ sudo make install
3. 编辑模块加载选项文件
$ sudo gedit /etc/modprobe.d/options
为这个驱动添加一个选项(在最后添加一行)
options gspca force_rgb=1
4. 安装摄像头软件Cheese
$ sudo apt-get install cheese
启动cheese测试摄像头,如果不能得到图像:
$ lsmod|grep gspca
gspca 643920 0
videodev 29440 2 gspca,zc0301
usbcore 146028 6 gspca,zc0301,usbhid,ehci_hcd,uhci_hcd
删除zc0301模块
$ sudo modprobe -r zc0301
添加gspca模块
$ sudo modprobe gspca
检查一下:
$ lsmod |grep gspca
gspca 643920 0
videodev 29440 1 gspca
usbcore 146028 5 gspca,usbhid,ehci_hcd,uhci_hcd
再保险一点:
$ lsmod |grep videodev
videodev 29440 1 gspca
v4l1_compat 15492 1 videodev
v4l2_common 18304 1 videodev
一般这个时候cheese就可以获取到图像了,如果还不可以:
$ ls -l /dev/video0
crw-rw----+ 1 root video 81, 0 2008-05-16 23:48 /dev/video0
修改权限
$ sudo chmod 777 /dev/video0
crwxrwxrwx+ 1 root video 81, 0 2008-05-16 23:48 /dev/video0
其实还有一个更简单的方法,可以用终端
$ sudo apt-get install gspca-source
最后,提醒的是,开启桌面特效会导致视频画面停顿,我在官方的Bug提交论坛上看到了这个,应该能确定是个Bug,所以要想用摄像头的时候,暂时就别那么炫了吧
⑵ linux下有什么软件能测试摄像头
很多很多,GNOME桌面摄像头工具Cheese,一体化安全监控解决方案ZoneMinder,支持动作检测的视频捕捉工具Motion,GNOME桌面下的开源VoIP和视频会议应用程序Ekiga等。
⑶ 怎么在linux下驱动usb摄像头
建议你还是在windows下玩 摄像头
我之前试过一次 ubuntu 安装一个摄像头程序 就直接好了
不用我装驱动版
如果权运气不好 恰巧不支持你的摄像头的话 你可以去摄像头的厂商官网下载 如果他们支持linux的话
国内厂商 一般都没~~
最后说句 linux里 摄像头的效果 比 win差好多
⑷ linux的浏览器无法查看摄像头
这种情况则主要出现在系统或者软件设置方面,比如QQ视频摄像头被占用就很容易出现这种情况。
首先确保自己并没有打开本地摄像头XP系统在我的电脑里可以打开,Win7系统相对麻烦些,打开开始菜单,右键“计算机”选择“管理”。
网络摄像头简称WEBCAM,英文全称为WEBCAMERA,是一种结合传统摄像机与网络技术所产生的新一代摄像机,只要标准的网络浏览器(如MicrosoftIE或Netscape),即可监视其影像。
⑸ linux下接hub摄像头驱动的问题……
我对linux这个操作系统不是太了解 这还要分析一下你这个情况 作为一个参考吧
你先检查一下安装的驱动是否符合当前你的设备等等(有点像废话)
看这句话的大概意思
cat dev/video0返回cat:读取错误:输入/输出错误
dmesg返回:
[ 287.240000] -1 - 1.1:新设备的使用number 5 using ehci-platform(ehci-platform全速5号)这个我不懂啊这个字典翻译的 (应该是设备名字吧)
[ 287.350000] gspca_main:zc3xx-2.14.0探测0ac8:301b
[ 288.610000]输入:zc3xx /设备/平台/ ehci-platform / usb1/1 - 1 /1-1.1/input/input1(应该是指哪个设备)
[ 339.990000] gspca_main:没有传输端点发现
有一些人也出现这个情况 你可以去官方去看看 有没有发布什么BUG或者补丁之类的东西
不一定要采纳 因为我不是太懂这个 指给你个参考
希望这个能帮你 坐等追问
⑹ 如何利用Video4Linux获取摄像头数据
1. 摄像头的安装
在Linux下常用的摄像头驱动是spca5xx。这个网站还给出了这款驱动支持的摄像头的种类。另外,ov511芯片直接就支持Linux,使用者款芯片的摄像头有网眼V2000。我使用的是网眼V2000的摄像头,和Z-Star
301p+现代7131R芯片的摄像头。后一种需要spca5xx的驱动。关于spca5xx的安装方法,网上有很多介绍,这里就不说了。
2. 摄像头的调试
安装好摄像头后,为了测试摄像头能否正常工作,可以用一下软件。比较著名的是xawtv,在网上搜以下可以下载到。安装好后,打开xawtv则可以调试摄像头。
3. Video4Linux 编程获取数据
现有的video4linux有两个版本,v4l和v4l2。本文主要是关于v4l的编程。利用v4l API获取视频图像一般有以下几步:
a> 打开设备
b> 设置设备的属性,比如图像的亮度,对比度等等
c> 设定传输格式和传输方式
d> 开始传输数据,一般是一个循环,用以连续的传输数据
e> 关闭设备
下面具体介绍v4l编程的过程。首先指出,在video4linux编程时要包含头文件,其中包含了video4linux的数据结构和函数定义。
1)v4l的数据结构
在video4linux API中定义了如下数据结构,详细的数据结构定义可以参考v4l API的文档,这里就编程中经常使用的数据结构作出说明。
首先我们定义一个描述设备的数据结构,它包含了v4l中定义的所有数据结构:
typedef struct
_v4ldevice
{int fd;//设备号
struct video_capability capability;
struct
video_channel channel[10];
struct video_picture picture;
struct video_clip
clip;
struct video_window window;
struct video_capture capture;
struct
video_buffer buffer;
struct video_mmap mmap;
struct video_mbuf
mbuf;
struct video_unit unit;
unsigned char
*map;//mmap方式获取数据时,数据的首地址
pthread_mutex_t mutex;
int frame;
int
framestat[2];
int overlay;
}v4ldevice;
下面解释上面这个数据结构中包含的数据结构,这些结构的定义都在中。
* struct
video_capability
name[32] Canonical name for this interface
type Type of
interface
channels Number of radio/tv channels if appropriate
audios
Number of audio devices if appropriate
maxwidth Maximum capture width in
pixels
maxheight Maximum capture height in pixels
minwidth Minimum capture
width in pixels
minheight Minimum capture height in pixels
这一个数据结构是包含了摄像头的属性,name是摄像头的名字,maxwidth maxheight是摄像头所能获取的最大图像大小,用像素作单位。
在程序中,通过ioctl函数的VIDIOCGCAP控制命令读写设备通道已获取这个结构,有关ioctl的使用,比较复杂,这里就不说了。下面列出获取这一数据结构的代码:
int v4lgetcapability(v4ldevice *vd)
{
if(ioctl(vd->fd,
VIDIOCGCAP, &(vd->capability)) < 0)
{
v4lperror("v4lopen:VIDIOCGCAP");
return -1;
}
return 0;
}
*
struct video_picture
brightness Picture brightness
hue Picture hue (colour
only)
colour Picture colour (colour only)
contrast Picture
contrast
whiteness The whiteness (greyscale only)
depth The capture depth
(may need to match the frame buffer depth)
palette Reports the palette that
should be used for this image
这个数据结构主要定义了图像的属性,诸如亮度,对比度,等等。这一结构的获取通过ioctl发出VIDIOCGPICT控制命令获取。
* struct video_mbuf
size The number of bytes to
map
frames The number of frames
offsets The offset of each frame
这个数据结构在用mmap方式获取数据时很重要:
size表示图像的大小,如果是640*480的彩色图像,size=640*480*3
frames表示帧数
offsets表示每一帧在内存中的偏移地址,通过这个值可以得到数据在图像中的地址。
得到这个结构的数据可以用ioctl的VIDIOCGMBUF命令。源码如下:
int v4lgetmbuf(v4ldevice
*vd)
{
if(ioctl(vd->fd, VIDIOCGMBUF, &(vd->mbuf))<0)
{
v4lperror("v4lgetmbuf:VIDIOCGMBUF");
return -1;
}
return
0;
}
而数据的地址可以有以下方式计算:
unsigned char
*v4lgetaddress(v4ldevice *vd)
{
return (vd->map +
vd->mbuf.offsets[vd->frame]);
}
2)获取影像mmap方式。
在video4Linux下获取影像有两种方式:overlay和mmap。由于我的摄像头不支持overlay方式,所以这里只谈mmap方式。
mmap方式是通过内存映射的方式获取数据,系统调用ioctl的VIDIOCMCAPTURE后,将图像映射到内存中,然后可以通过前面的v4lgetmbuf(vd)函数和v4lgetaddress(vd)函数获得数据的首地址,这是李可以选择是将它显示出来还是放到别的什么地方。
下面给出获取连续影像的最简单的方法(为了简化,将一些可去掉的属性操作都去掉了):
char*
devicename="/dev/video0";
char* buffer;
v4ldevice device;
int width =
640;
int height = 480;
int frame =
0;
v4lopen("/dev/video0",&device);//打开设备
v4lgrabinit(&device,width,height);//初始化设备,定义获取的影像的大小
v4lmmap(&device);//内存映射
v4lgrabstart(&device,frame);//开始获取影像
while(1){
v4lsync(&device,frame);//等待传完一帧
frame
= (frame+1)%2;//下一帧的frame
v4lcapture(&device,frame);//获取下一帧
buffer =
(char*)v4lgetaddress(&device);//得到这一帧的地址
//buffer给出了图像的首地址,你可以选择将图像显示或保存......
//图像的大小为
width*height*3
..........................
}
转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
⑺ 如何在虚拟机的linux系统下测试笔记本的摄像头
具体方法:
另外一个就是UVC的一个测试软件luvcview,在资料光盘中的路径为:Linux-3.0.1apptest摄像头测试USB摄像头USBCamera- linux+androidlinux3.0.1系统下-2012-07-05,通过这个可以查看和测试UVC摄像头。
查看摄像头信息:./luvcview -d /dev/video2 –L 结果如下:
由此可以看出摄像头的一些基本信息,更多的不太了解,起码清楚了输出格式YUV,以及分辨率,接下来通过这些信息来测试。
[root@FORLINX6410]# ./luvcview -d /dev/video2 -f yuv -s 320x240
即可运行。