Ubuntu上安装luvcview和打开USB摄像头全过程

Ubuntu上安装luvcview和打开USB摄像头全过程

一、下载luvcview的完整包
https://packages.ubuntu.com/source/trusty/luvcview
推荐下载luvcview_0.2.6.orig.tar.gz

参考https://blog.csdn.net/shunrenwang/article/details/80549182安装依赖库
具体命令如下:

sudo apt-get install debhelper
sudo apt-get install libsdl1.2-dev
sudo apt-get install libv4l-dev
sudo apt-get install pkg-config

将下载好的luvcview_0.2.6.orig.tar.gz拷贝到你想安装luvcview的文件包里,例如文件夹video,并进入文件夹,解压压缩包

cd video
tar -xvf luvcview_0.2.6.orig.tar.gz
cd luvcview-0.2.6

编译

make

这个时候经常会出现报错
uvcvideo.h:5:10: fatal error: linux/videodev.h: No such file or directory
#include <linux/videodev.h>

解决办法(参考https://blog.csdn.net/shunrenwang/article/details/80549182)

sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h

解决报错后再 make

开启 root 模式

sudo -i
输入密码

回到 luvcview-0.2.6所在的文件夹,例如:

cd /home/nvidia/video/ luvcview-0.2.6

执行
make install

此时你的Linux系统上就安装好了luvcview

执行以下命令可显示画面:

luvcview -d /dev/video1 -f yuv -s 640×480

分辨率可调
————————————————
版权声明:本文为CSDN博主「linux小学生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44596345/java/article/details/88390562
二、Ubuntu下安装SDL

安装SDL:

Ubuntu已经包含SDL库,所以通过几个简单的命令就可以安装!

sudo apt-get install libsdl1.2-dev(比较大,10M左右)

附加包:

sudo apt-get install libsdl-image1.2-dev

sudo apt-get install libsdl-mixer1.2-dev

sudo apt-get install libsdl-ttf2.0-dev

sudo apt-get install libsdl-gfx1.2-dev

安装完成之后,在目录/usr/include中,就会有个SDL文件夹,里面包含了所需要的头文件。

写个最简单的程序测试一下环境是否OK:

 

/*9-1.c绋嬪簭锛氬垵濮嬪寲瑙嗛瀛愮郴缁燂紝璁剧疆鍏舵樉绀烘ā寮忥紝鑳屾櫙鑹叉笎鍙?/
#include<SDL.h>                              /*浣跨敤SDL搴擄紝鍔犺浇璇ュ簱鐨勫ご鏂囦欢*/
#include<stdlib.h>
int main(){
SDL_Surface *screen;                     /*灞忓箷鎸囬拡*/
Uint32 color;                              /*瀹氫箟涓€涓鑹插€?/
int x;
if(SDL_Init(SDL_INIT_VIDEO)<0){          /*鍒濆鍖栬棰戝瓙绯荤粺澶辫触*/
fprintf(stderr,”鏃犳硶鍒濆鍖朣DL锛?s\n”,SDL_GetError());
exit(1);
}
screen=SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);  /*璁剧疆瑙嗛妯″紡*/
if(screen==NULL){
fprintf(stderr,”鏃犳硶璁剧疆640x480x16浣嶈壊鐨勮棰戞ā寮忥細%s”,SDL_GetError());
exit(1);
}
atexit(SDL_Quit);                             /*閫€鍑?/
for(x=0;x<=255;x+=1)                         /*鐢ㄥ惊鐜潵瀹炵幇鑳屾櫙鑹叉笎鍙?/
{
color=SDL_MapRGB(screen->format,255,255,x);/*SDL_MapRGB鍑芥暟鐢ㄦ潵璁剧疆棰滆壊*/
SDL_FillRect(screen,NULL,color);             /*濉厖鏁翠釜灞忓箷*/
SDL_UpdateRect(screen,0,0,0,0);              /*鏇存柊鏁翠釜灞忓箷*/
}
SDL_Delay(6000);                                 /*鍋滅暀6绉掗挓鐨勬椂闂?/
return 0;
}

编译:

gcc 9-1.c  -o 9-1 -I/usr/include/SDL -lSDL -lpthread

程序运行的时候会出现一个640*480大小,16位色的屏幕
————————————————
版权声明:本文为CSDN博主「delphi308」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/delphi308/java/article/details/6693968

三、Ubuntu解决包依赖关系( ###将较新的库降级为满足依赖关系的库—依存关系<=)

Ubuntu解决包依赖关系:

出现的错误有:

有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
libtiff4-dev : 依赖: libjpeg-dev
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

上网查了下主要是因为版本的问题。安装新的时必然要卸载旧的,但卸载的时候可能安装下一个包又需要这个包,所以产生了依赖(个人理解,不知到对了没)

纠结了很久突然发现每次出现这个问题的时候,都是在同时安装很多包的情况下发生的,如这一次的安装命令是

sudo apt-get install build-essential libgtk2.0-dev libjpeg62-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev

于是我就把上面的命令分解成一个一个包安装,于是就发现成功了。因为这样安装他会重新卸载一些。

Linux下经常需要安装不同类型的库,在Ubuntu中,这些类库都是以“lib_name-version”的形式命名的。很多库之间存在依赖关系,即要安装这个就必须安装那个。有时候,类库之间依赖关系无法满足,你所要安装的程序就不能安装。

这类问题大多是由于相互依赖的几个库中一个或多个的版本已经更新,而用户要安装的库依赖于这几个库的较低的版本,这时候可以试试使用“sudo aptitude install ”(尖括号内为你要安装的程序的名字)。

例如:

我在Ubuntu6.10下安装编译guifications的时候需要用到gtk2.0的开发包,在Ubuntu的源中命名为“libgtk2.0-dev”,使用“sudo apt-get install libgtk2.0-dev”的时候,提示:

下列的套件有無法滿足的依存關係:

libgtk2.0-dev: 依存關係: libpango1.0-dev (>= 1.12) 但是它卻不會被安裝。
依存關係: libcairo2-dev (>= 1.2.0) 但是它卻不會被安裝。

经查,这是由于源中libcairo2-dev这个包版本较新,而libgtk2.0-dev需要一个比较老的版本。所以,这里使用如下命令:

sudo aptitude install libgtk2.0-dev

将较新的库降级为满足依赖关系的库,按照提示逐步操作即可。

这是我系统的情况

lovely@goodcat:~/.ssh$ dpkg -l|grep libsqlite
ii libsqlite3-0 3.7.9-2ubuntu1.1
ii libsqlite3-dev 3.7.9-2ubuntu1.1
lovely@goodcat:~/.ssh$ lsb_release -a
Description: Ubuntu 12.04.1 LTS
可见 1204 的仓库里是有和 3.7.9-2ubuntu1.1 的 libsqlite3-0 对应的 dev 包的。
而你的问题是 apt-get 正在试图去取一个较低版本的 libsqlite3-0, 那他也就依赖于一个较低版本的 dev 包, 但是由于你当前已经安装了一个较高版本的 dev 包( 见 dpkg -l|grep libsqlite3-dev ), 所以安装会失败。

解决:方案一:
sudo apt-get update
不行的话就换个别的国家的 apt 仓库, 我目前的仓库: http://cn.archive.ubuntu.com/ubuntu/

:方案二:
sudo apt-get purge libsqlite3-0; sudo apt-get install libsqlite3-dev

 

显示摄像:

luvcview -d /dev/video0