本帖最后由 fjjjnk1234 于 2015-2-23 17:21 编辑
摄像头用的是iSight摄像头
安装完Ubuntu后,本身是不带有桌面的,可以选择安装LXDE。 先更新软件源
安装LXDE可以选择安装core或完全版,我安装了core版 sudo apt-get install xorg lxde-core
安装完全版:sudo apt-get install xorg lxde
安装时间挺长的,建议在sudo apt-get install xorg lxde-core 之前先安装screen,一个虚拟终端管理器,用它在后台管理终端界面,这样在安装LXDE或做其它耗时间比较长的工作的时候就不怕SSH断开后,正在进行的操作中断了。 安装: sudo apt-get install screen
使用方法: 创建虚拟终端: 这样就创建好了一个名为terminal1的终端了,接着可以放心做其它耗时间的工作了。 按ctrl+a后再按d就能保存好一个虚拟终端了。这时,断开SSH也可以了。
访问已经创建好的虚拟终端 screen –ls可以列出已经创建的正在后台运行的终端
screen –r terminal1能进入终端 进入终端后执行exit就能完全退出虚拟终端。
【安装opencv】 更新软件源 安装相关依赖项,部分依赖项在系统中已经默认安装了,建议都尝试安装下,避免漏掉
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
sudo apt-get install python-dev python-numpy
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev
建立opencv文件夹 sudo mkdir opencv 获取opencv源代码
sudo wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.10/opencv-2.4.10.zip/download
下载下来的文件名为download,改名为opencv-2.4.10.zip
sudo mv download opencv-2.4.10.zip
解压,获得一个名为opencv-2.4.10的文件夹 先apt-get install zip sudo unzip opencv-2.4.10
进入opencv源代码目录,在该目录中新建一个名为release的文件夹 在release文件夹中,使用cmake工具在该文件夹中生成makefile文件,指定opencv的安装目录为/usr/local,opencv的源代码位于上一层目录
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译源代码 在make之前,先创建虚拟终端,防止SSH断开后,正在进行的操作中断 screen -S terminal1 sudo make 时间比较长,大概5个小时左右
编译完成后
更新搜索动态链接库 接着,写一个简单的程序通过OpenCV控制摄像头拍照
【webcam.cpp】
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
/* init camera */
CvCapture* pCapture = cvCreateCameraCapture(0);
cvSetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_WIDTH, 800);
cvSetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_HEIGHT, 480);
IplImage *pFrame = 0;
if(NULL == pCapture)
{
fprintf(stderr,"Can't initialize webcam!\n");
return 1;
}
pFrame = cvQueryFrame(pCapture); // query a frame
if(NULL == pFrame)
{
fprintf(stderr,"Can't get a frame!\n");
return 1;
}
const char *pImageFileName ="webcam.jpg";
cvSaveImage(pImageFileName, pFrame);
cvReleaseCapture(&pCapture); // free memory
return 0;
}
【makefile】
INCLUDE = $(shell pkg-config --cflags opencv)
LIBS = $(shell pkg-config --libs opencv)
SOURCES = webcam.cpp
# 目标文件
OBJECTS = $(SOURCES:.cpp=.o)
# 可执行文件
TARGET = webcam
$(TARGET):$(OBJECTS)
g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS)
$(OBJECTS):$(SOURCES)
g++ -c $(SOURCES)
clean:
rm $(OBJECTS) $(TARGET)
# 编译规则 $@代表目标文件 [ DISCUZ_CODE_272 ]lt; 代表第一个依赖文件
%.o:%.cpp
g++ -I $(INCLUDE) -o $[url=home.php?mod=space&uid=72445]@[/url] -c [ DISCUZ_CODE_272 ]lt;
在PC机中用VNC登陆 在终端中
生成可执行程序webcam
执行可执行程序,就能看到在相同目录下生成webcam.jpg图片
执行webcam后出现HIGHGUI ERROR:V4L/V4L2:VIDIOC_S_CROP 这个暂时不知道什么原因 这个摄像头照出来的效果感觉还行,设置成800X480的分辨率
导出的图片
源码
webcam.rar
(64.41 KB)
|