导航:首页 > 操作系统 > linux摄像头设备

linux摄像头设备

发布时间:2024-07-08 12:49:25

linux系统下如何查看摄像头设备

lspci 查看设备信息
lsusb 查看usb信息

⑵ 如何在Linux下开发摄像头驱动

在linux下所有设备都是文件。所以对摄像头的操作其实就是对文件的操作。USB摄像头的设备文件就是在/dev目录下的video0(假如只有一个摄像头)。在linux下操作摄像头就是使用v4l2对摄像头进行视频的操作,操作步骤如下
1. 打开设备文件。
int fd=open(”/dev/video0″,O_RDWR);
2. 取得设备的capability,看看设备具有什么功能,比如是否具有视频输入,或者音频输入输出等。VIDIOC_QUERYCAP,struct v4l2_capability
v4l2_std_id std;
do {
ret= ioctl(fd, VIDIOC_QUERYSTD, &std);
} while (ret == -1 && errno == EAGAIN);
switch (std) {
case V4L2_STD_NTSC:
//……
case V4L2_STD_PAL:
//……
}
3. 选择视频输入,一个视频设备可以有多个视频输入。VIDIOC_S_INPUT,struct v4l2_input(可不要)
4. 设置视频的制式和帧格式,制式包括PAL,NTSC,帧的格式个包括宽度和高度等。
VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format
struct v4l2_format fmt;
memset ( &fmt, 0, sizeof(fmt) );
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width = 320;
fmt.fmt.pix.height = 240;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG;
if (ioctl(fd, VIDIOC_S_FMT, &fmt) < 0)
{
printf("set format failed\n");
//return 0;
}
5. 向驱动申请帧缓冲,一般不超过5个。struct v4l2_requestbuffers
struct v4l2_requestbuffers req;
memset(&req, 0, sizeof (req));
req.count = 4;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory = V4L2_MEMORY_MMAP;
if (ioctl(fd,VIDIOC_REQBUFS,&req) == -1)
{
perror("VIDIOC_REQBUFS error \n");
//return -1;
}
6.申请物理内存
将申请到的帧缓冲映射到用户空间,这样就可以直接操作采集到的帧了,而不必去复制。将申请到的帧缓冲全部入队列,以便存放采集到的数据.VIDIOC_QBUF,struct v4l2_buffer
VideoBuffer* buffers = calloc( req.count, sizeof(VideoBuffer) );
printf("sizeof(VideoBuffer) is %d\n",sizeof(VideoBuffer));
struct v4l2_buffer buf;
for (numBufs = 0; numBufs < req.count; numBufs++)
{
memset( &buf, 0, sizeof(buf) );
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = numBufs;
if (ioctl(fd, VIDIOC_QUERYBUF, &buf) < 0)
{
printf("VIDIOC_QUERYBUF error\n");
//return -1;
}
printf("buf len is %d\n",sizeof(buf));
//内存映射
buffers[numBufs].length = buf.length;
buffers[numBufs].offset = (size_t) buf.m.offset;
buffers[numBufs].start = mmap (NULL, buf.length,PROT_READ | PROT_WRITE, MAP_SHARED, fd, buf.m.offset);
printf("buffers.length = %d,buffers.offset = %d ,buffers.start[0] = %d\n",buffers[num

⑶ 如何在 Linux 中禁用内置摄像头

在 Linux 中禁用内置摄像头

首先,使用如下命令找到网络摄像头驱动:

$ sudo lsmod | grep uvcvideo

示例输出:

uvcvideo 114688 1
videobuf2_vmalloc 16384 1 uvcvideo
videobuf2_v4l2 28672 1 uvcvideo
videobuf2_common 53248 2 uvcvideo,videobuf2_v4l2
videodev 208896 4 uvcvideo,videobuf2_common,videobuf2_v4l2
media 45056 2 uvcvideo,videodev
usbcore 286720 9 uvcvideo,usbhid,usb_storage,ehci_hcd,ath3k,btusb,uas,ums_realtek,ehci_pci

这里,uvcvideo是我的网络摄像头驱动。

现在,让我们禁用网络摄像头。

为此,请编辑以下文件(如果文件不存在,只需创建它):

$ sudo nano/etc/modprobe.d/blacklist.conf

添加以下行:

##Disable webcam.
blacklist uvcvideo

##Disable webcam这行不是必需的。为了便于理解,我添加了它。

保存并退出文件。重启系统以使更改生效。

要验证网络摄像头是否真的被禁用,请打开任何即时通讯程序或网络摄像头软件,如 Cheese 或 Guvcview。你会看到如下的空白屏幕。

Cheese 输出:

看见了么?网络摄像头被禁用而无法使用。

要启用它,请编辑:

$ sudo nano/etc/modprobe.d/blacklist.conf

注释掉你之前添加的行。

##Disable webcam.
#blacklist uvcvideo

保存并关闭文件。然后,重启计算机以启用网络摄像头。

⑷ 在Linux系统下要如何实现在电脑上使用摄像头进行录像做成Video视

升级内核:

1.这里我用的内核是linux-2.6.32.59 版本的,首先下载这个内核

2.下载完毕之后拷贝到Linux中进行解压,tar jxvf linux-2.6.32.59.tar

3.进入linux-2.6.32.59 目录把当前内核的配置文件拷贝到当前目录下cp /boot/config-2.6.18-238.e15 。/.config 因为我当前用的内核是linux-2.6.18版本的`

4.在配置视频所需要的驱动 make menuconfig 进入之后找到Device Drivers 按回车进入 找到MultiMedia Support先按空格键进行选中 再按回车键进入找到 Video For Linux 按回车键选中 再按空格键选中 Video capture adapters 将此选项选中之后按回车键进入找到V4L USB devices 按空格键选中再按回车键进入 找到USB ZC0301[P] ImageProcessor and Control Chip support 按空格键选中 再找到《M》GSPCA based webcamsà先按空格键选中再按回车键进入在最后一项的菜单下选中ZC3XX USB Camera Driver

5.以上配置好之后再次回到顶层菜单,找到General setup-à按回车键进入找到[]enable deprecated sysfs features which may confuse old usersp 按空格键选中

6.经过4 ,5 两步骤已经将视频的驱动配置好退出保存

7.下面进行编译 make 此步骤大概需要一个小时左右

8.再次进行 make moles_install

9.再次进行 make install

10.此时查看将摄像头插入USB 再次查看设备文件中是否已经有了 video0 用ls /dev/ 命令查看

11.如果有说明安装成功

下面是将摄像头的内容显示出来

1首先安装SDL库在此下载http://www.libsdl.org/release/SDL-1.2.14.tar.gz

2.进行解压tar zxvf SDL-1.2.15.tar

3.进入目录 cd SDL-1.2.15 再进入 test目录 cd test 在test 目录下配置 。/configure再进行make 则会有许多编译好的程序随便运行一个试试

4.在我上传的资料文件夹中找到servfox-R1_1_3 文件夹进入之后首先将Makefile.i386的名字改为 Makefile ,

5.编译 make

6. 在我上传的资料文件夹中找到spcaview-20061208 文件夹进入之后直接make

7.之后将摄像头插入到USB 接口首先运行servfox-R1_1_3 文件夹中的servfox。/servfox 如果提示出现错误则要把打印的错误语句在spcav4l.c中找到将错误信息删除知道没有错误出现,再次运行。/servfox -g –w 127.0.0.1:7070 –d /dev/video0

8. 再次运行spcaview 。/ spcaview –g –w 127.0.0.1:7070此时应该在你的虚拟机上就会显示摄像头拍出来的视频注意此时的项目支持网络

⑸ 如何在linux下使用摄像头

首先下载spca5xx-20060202.tar.gz包。
将其解压缩
$tar -zxvf spca5xx-20060202.tar.gz
spca5xx包已经预编译过了,所以进入解压缩目录后,编译安装就行了:
$make && make install
然后输入:
$modprobe spca5xx
无提示表明模块安装成功。
好了,安装完成了,现在试下^_^
$spcaview
下面是我用摄像头拍下的自己的照片,质量明显没有windows下,不过还是不错^_^

阅读全文

与linux摄像头设备相关的资料

热点内容
imphp开源知乎 浏览:702
清除网络通配符dos命令 浏览:835
鸿蒙系统怎么快速换回安卓 浏览:710
pdf绿色虚拟打印机 浏览:211
androidtab框架 浏览:144
java转php的时间戳 浏览:635
编译libstdc依赖 浏览:655
清算法人与原法人的区别 浏览:407
家庭装修下载什么app软件 浏览:572
美食博主用什么app拍视频 浏览:813
ipone手机如何加密微信 浏览:355
自来水加密阀阀帽 浏览:432
华为交换机dhcp配置命令 浏览:317
androidbitmap缩小 浏览:273
单片机串口控制灯 浏览:86
大讯云服务器安装视频 浏览:786
华为算法领先世界 浏览:656
linux路由重启 浏览:568
php的模板编程 浏览:322
编译器原理与实现书 浏览:711