目录
一. opencv简介
二 . 下载安装opencv
1. 下载opencv
2. 使用cmake安装opencv
3.安装cmake
4. 安装依赖库
创建build文件夹,再进入文件夹
使用cmake编译参数
3.使用make创建编译并安装
4. 配置环境
三. 使用示例图片
1. 新建文件夹存代码
2. 新建test1.cpp
3. 将找到的图片复制到code目录下
4. 编译并运行test1.cpp文件
四. 使用示例——视频
1. 获取摄像头权限
2. 播放视频
3.录制视频
五. 总结
六. 参考链接
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 [1]
它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
从官网下载opencv,由于是在Linux下使用,下载source版本
下载好之后把文件复制到home目录下或者在home里新建一个文件夹进行存放
我的复制在home目录下,开始解压
解压命令:
unzip opecv-4.5.4.zip
解压后查看:
可以看到已经有了文件夹,解压成功!
接下来就是下载opencv所需要的依赖库和cmake,因为下载之后得到的配置文件无法直接使用,需要使用cmake进行编译
进入到解压的文件包中:
cd opencv-4.5.4
进入管理员权限:
sudo su
再更新一下:
sudo apt-get update
sudo apt-get cmake
报错:
解决方法:删除锁定文件
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
再次执行:
sudo apt-get install build-essent
mkdir build
cd build
sudo make
编译过程较长,耐心等待,建议多线程进行,速度会快很多
编译完成:
安装:sudo make install
修改 opencv.conf 文件,打开后的文件是空的,添加 opencv 库的安装路径:/usr/local/lib
sudo gedit /etc/ld.so.conf.d/opencv.conf
输入路径并保存:
更新系统共享链接库
sudo ldconfig
配置bush,修改bash.bshrc
sudo gedit /etc/bash.bashrc
在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
然后执行如下命令使得配置生效:
source /etc/bash.bashrc
更新一下:
sudo updatedb
查看opencv的版本信息:
pkg-config --modversion opencv
安装成功
mkdir code
cd code
vim test1.cpp
test1.cpp代码:
#include
#include
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
CvPoint center;
double scale = -3;
IplImage* image = cvLoadImage("lena.jpg");
argc == 2? cvLoadImage(argv[1]) : 0;
cvShowImage("Image", image);
if (!image) return -1; center = cvPoint(image->width / 2, image->height / 2);
for (int i = 0;iheight;i++)
for (int j = 0;jwidth;j++) {
double dx = (double)(j - center.x) / center.x;
double dy = (double)(i - center.y) / center.y;
double weight = exp((dx*dx + dy*dy)*scale);
uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
ptr[0] = cvRound(ptr[0] * weight);
ptr[1] = cvRound(ptr[1] * weight);
ptr[2] = cvRound(ptr[2] * weight);
}
Mat src;Mat dst;
src = cvarrToMat(image);
cv::imwrite("test.png", src);
cvNamedWindow("test",1); imshow("test", src);
cvWaitKey();
return 0;
}
保存退出
编译:
g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`
运行:./test1
文件夹里还多了test.png:
windows下打开服务:
找到 VMware USB Arbitration S… 服务,确保启动成功
点击 “ 虚拟机 ” ,然后点击 “ 设置(S)… ”
选择 “ 虚拟机 ” ,再选择 “ 可移动设备 ” ,再选择 “ Quanta USB2.0 VGA UVC WebCam ” ,最后点击 “ 连接 ” ,再弹出的窗口内点击 “ 确定 ”
创建一个test2.cpp:
#include
using namespace cv;
int main()
{
//从摄像头读取视频
VideoCapture capture("zhang.mp4");
//循环显示每一帧
while(1){
Mat frame;//定义一个Mat变量,用于存储每一帧的图像
capture >> frame;//读取当前帧
if(frame.empty())//播放完毕,退出
break;
imshow("读取视频帧",frame);//显示当前帧
waitKey(30);//掩饰30ms
}
system("pause");
return 0;
}
编译:
g++ test2.cpp -o test2 `pkg-config --cflags --libs opencv`
查看:
已经生成了test2可执行文件
运行:
./test2
创建一个test3.cpp
代码如下:
//打开电脑摄像头,空格控制视频录制,ESC退出并保存视频RecordVideo.avi
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main()
{
//打开电脑摄像头
VideoCapture cap(0);
if (!cap.isOpened())
{
cout << "error" << endl;
waitKey(0);
return 0;
}
//获得cap的分辨率
int w = static_cast(cap.get(CV_CAP_PROP_FRAME_WIDTH));
int h = static_cast(cap.get(CV_CAP_PROP_FRAME_HEIGHT));
Size videoSize(w, h);
VideoWriter writer("RecordVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25, videoSize);
Mat frame;
int key;//记录键盘按键
char startOrStop = 1;//0 开始录制视频; 1 结束录制视频
char flag = 0;//正在录制标志 0-不在录制; 1-正在录制
while (1)
{
cap >> frame;
key = waitKey(100);
if (key == 32)//按下空格开始录制、暂停录制 可以来回切换
{
startOrStop = 1 - startOrStop;
if (startOrStop == 0)
{
flag = 1;
}
}
if (key == 27)//按下ESC退出整个程序,保存视频文件到磁盘
{
break;
}
if (startOrStop == 0 && flag==1)
{
writer << frame;
cout << "recording" << endl;
}
else if (startOrStop == 1)
{
flag = 0;
cout << "end recording" << endl;
}
imshow("picture", frame);
}
cap.release();
writer.release();
destroyAllWindows();
return 0;
}
编译:
g++ test3.cpp -o test3 `pkg-config --cflags --libs opencv`
运行:
./test3
查看code文件里的内容:
这次实验让我更清楚了ubuntu虚拟机的apt-get等安装命令,也更加了解安装、编译、运行过程中各种可能出现的问题和解决方案。安装opencv没有什么太大的问题,但是再过程中环境配置总是出现各种问题,依赖包下载出现的问题最大,因此我还需要更加努力学习,对于opencv学习更深入。
Linux下安装opencv.3.4.15并初步使用
终端下载失败解决方法