tft每日頭條

 > 生活

 > linux多攝像頭

linux多攝像頭

生活 更新时间:2024-07-28 08:32:05
1.引言

本篇介紹USB攝像頭的使用,實現的功能是通過攝像頭進行拍照,生成jpg格式圖片。

2.環境介紹2.1.硬件

1) NUC972開發闆

2) USB攝像頭

2.2.軟件

1) Uboot繼續使用之前文章用的,無須改動。

2) Kernel在上一篇基礎上,要做一定的修改,用來支持USB攝像頭識别。

3) Rootfs在上一篇用Buildroot生成的基礎上,無須改動。

3.内核配置

Linux 内核中已經包含了USB攝像頭的驅動,隻要勾選上相關配置即可。

Device Drivers -->

<*> Multimedia support --->

[*] Cameras/video grabbers support

<*> V4L2 int device (DEPRECATED)

[*] Media USB Adapters --->

<*> USB Video Class (UVC)

[*] UVC input events device support (NEW)

<M> GSPCA based webcams (NEW) --->

<*> USB Philips Cameras

[ ] USB Philips Cameras verbose debug (NEW)

[*] USB Philips Cameras input events device support (NEW)

<*> CPiA2 Video For Linux

<*> USB ZR364XX Camera support

<*> USB Syntek DC1125 Camera support

<*> USB Sensoray 2255 video capture device

<*> USB SN9C1xx PC Camera Controller support (DEPRECATED)

[*] V4L platform devices --->

配置完,保存,編譯,之後下載到闆子裡。

插入USB攝像頭,打印信息如下:

linux多攝像頭(嵌入式Linux系列第13篇)1

說明驅動已經OK了。

4.libjpeg庫安裝

之前buildroot編出來的根文件系統裡是有jpeglib庫的,版本是libjpeg.so.9.1.0,由于我們應用程序依賴的版本是8.0,所以單獨編譯了一個。

步驟如下:

1) 解壓jpegsrc.v8b.tar.gz

2) 進入到解壓後的jpeg-8b目錄裡,執行

./configure CC=arm-linux-gcc LD=arm-linux-ld --host=arm-linux --prefix=/home/topsemic/nuc972/toolchain/arm_linux_4.8/usr --exec-prefix=/home/topsemic/nuc972/toolchain/arm_linux_4.8/usr

其中:

–prefix參數是強制設定install之後生成文件的存放目錄,這裡将其放到了交叉編譯工具鍊文件夾的/usr 目錄下,放到這裡的原因是因為後面編譯應用程序時會在交叉工具鍊的目錄下查找相關的庫。

topsemic@topsemic-virtual-machine:~/nuc972/tool/jpeg-v8b/jpeg-8b$ ./configure CC=arm-linux-gcc LD=arm-linux-ld --host=arm-linux --prefix=/home/topsemic/nuc972/toolchain/arm_linux_4.8/usr --exec-prefix=/home/topsemic/nuc972/toolchain/arm_linux_4.8/usr

3)make 編譯

topsemic@topsemic-virtual-machine:~/nuc972/tool/jpeg-v8b/jpeg-8b$ make

4)最後make install

topsemic@topsemic-virtual-machine:~/nuc972/tool/jpeg-v8b/jpeg-8b$ make install

在/home/topsemic/nuc972/toolchain/arm_linux_4.8/usr/lib下生成相應的庫。

linux多攝像頭(嵌入式Linux系列第13篇)2

注:之前buildroot生成的文件系統裡其實已經有了libjpeg,在上面可以看到文件為libjpeg.so.9.1.0,或者我們登陸到闆子上

find / -name "libjpeg*" 查找下,在/usr/lib目錄下也可以看到

linux多攝像頭(嵌入式Linux系列第13篇)3

這三者的關系是:

使用ls -al 查看

linux多攝像頭(嵌入式Linux系列第13篇)4

其中libjpeg.so 和libjpeg.so.9是軟連接文件,相當于windows下的快捷方式,如果我們在winscp下查看,可以看到他們的圖标上有個箭頭

linux多攝像頭(嵌入式Linux系列第13篇)5

真正使用的庫文件是libjpeg.so.9.2.0

5)我們需要将新編譯的libjpeg庫放到闆子上,方法是先把闆子上原有的三個文件删掉,然後通過winscp拷貝libjpeg.so.8.0.2到闆子的/usr/lib目錄下,

最後使用ln -s 源文件 目标文件 命令,新建兩個軟連接

linux多攝像頭(嵌入式Linux系列第13篇)6


linux多攝像頭(嵌入式Linux系列第13篇)7

5.應用程序

應用程序的編譯步驟如下:

1) 進入到v4l2_demo目錄

2) make編譯

3) 生成的可執行文件是bin目錄下的mainapp

4) 将其放到闆子裡,運行結果如下:

# ./mainapp

----------- connected --------------

v4l2_open function open /dev/video0 success!

driver: uvcvideo

card: USB2.0 PC CAMERA

bus_info: usb-nuc970-ehci-2

version: 199276

capabilities: 84000001

Device /dev/video0: supports capture.

Device /dev/video0: supports streaming.

fmt.type: 1

pix.pixelformat: YUYV

pix.width: 640

pix.height: 480

pix.field: 1

Frame buffer 5: address = 0xb6c88000, length = 614400

Frame buffer 5: address = 0xb6bf2000, length = 614400

Frame buffer 5: address = 0xb6b5c000, length = 614400

Frame buffer 5: address = 0xb6ac6000, length = 614400

Frame buffer 5: address = 0xb6a30000, length = 614400

open /dev/video success!

------------- 0

call yuyv_to_rgb function

yuyv_to_rgb function excute OK!

2222222

333333

44444

555555

666666

777777

path3=./jpeg1.jpg 1

8888888

9999999

程序在不斷的拍攝并保存圖像,圖像名稱為jpegx.jpeg(x為1,2,3 依次增加)

linux多攝像頭(嵌入式Linux系列第13篇)8


linux多攝像頭(嵌入式Linux系列第13篇)9

6.結束語

本篇為大家介紹了Linux下USB攝像頭的簡單使用,歡迎大家多交流。

TopSemic 讓芯片使用更簡單

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved