目录
一、安装OpenCV
(一)、认识 OpenCV
(二)、资源包下载及安装
二、配置环境
三、操作实例
(一)、图片实例操作
(二)、视频实例操作
四、总结
五、参考文献
开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。
OpenCV的应用领域包括:
为了支持上述一些领域,OpenCV包括一个统计机器学习库,其中包含:
1.安装cmake
首先在虚拟机中打开终端命令行,输入以下代码安装cmake:
sudo apt-get install cmake
再依次输入以下代码进行依赖环境的安装:
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
2.打开虚拟机浏览器,输入OpenCV国内快速下载地址进行安装包的下载:OpenCV/opencv_contrib国内快速下载 | 绕云技术笔记
3.选择下载好的压缩包,将压缩包解压到想要放的文件夹中 (演示版本号为3.415)
3.先打开已解压的文件夹,再点击鼠标右键打开终端命令行,然后输入mkdir build构建一个build文件,输入cd build打开build文件夹,输入以下代码进行安装:
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
4.输入以下代码进行编译(可以使用sudo make -j 8 、sudo make -j4 、sudo make):
-j8 表示使用 8个线程进行编译
sudo make -j8
注:这里所需要的时间较长,耐心等待,如果出现虚拟机卡死的情况,关闭虚拟机,在重新操作即可。
5.输入以下代码进行安装
sudo make install
用gedit打开/etc/ld.so.conf
sudo gedit /etc/ld.so.conf
在文件中加上一行 include /usr/loacal/lib,其中/user/loacal是opencv安装路径也就是makefile中指定的安装路径
运行sudo ldconfig
sudo gedit /etc/bash.bashrc
修改bash.bashrc文件,在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
然后再输入:
source /etc/bash.bashrc
输入以下代码进行检验:
pkg-config opencv --modversion
如下图所示,则成功
1.编写代码
首先创建一个文件夹用于存放代码,然后在这个文件夹中创建一个test1.cpp
gedit test1.cpp
输入以下代码:
#include
#include
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
CvPoint center;
double scale = -3;
IplImage* image = cvLoadImage("你的图片名.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;
}
2.编译文件
输入以下代码,得到了可执行文件test1
g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`
注:gcc编译器:gcc + 文件名 + -o + 输出文件流名称 +` 支持包
在同一文件夹下准备一张图片,文件名为:myp.jpg
3.输出结果
输入以下代码,发现在文件夹内新生成了一张test.png
./test1
发现在文件夹内新生成了一张test.png
1.虚拟机获取摄像头权限
使用快捷键 Win + R ,输入 services.msc ,并回车
找到 VMware USB Arbitration S… 服务,确保启动了
点击 “ 虚拟机 ” ,然后点击 “ 设置(S)… ”
选择 “ USB控制器 ” ,将 “ USB兼容性 ” 设置为 “ USB 3.0 ” ,并点击确定
选择 “ 虚拟机 ” ,再选择 “ 可移动设备 ” ,再选择 “ Quanta USB2.0 VGA UVC WebCam ” ,最后点击 “ 连接 ” ,再弹出的窗口内点击 “ 确定 ”
虚拟机右下角摄像头图标有个小绿点,则连接成功
2.打开摄像头显示处理视频
2.1在文件夹中创建一个文件test2.cpp
#include
using namespace cv;
int main()
{
//从摄像头读取视频
VideoCapture capture("myv.avi");
//循环显示每一帧
while(1){
Mat frame;//定义一个Mat变量,用于存储每一帧的图像
capture >> frame;//读取当前帧
if(frame.empty())//播放完毕,退出
break;
imshow("读取视频帧",frame);//显示当前帧
waitKey(30);//掩饰30ms
}
system("pause");
return 0;
}
代码讲解:
如果语句:VideoCapture capture(0),后面的参数设置为 0 ,则从摄像头读取视频并循环显示每一帧;如果设置为一个视频的文件名,比如:man.mp4 ,则会将视频读取并循环显示每一帧。
while 循环体中的 Mat 数据结构其实是一个点阵,对应图像上的每一个点,点的集合形成了一帧图像,有关 Mat 详解请看:OpenCV中Mat数据结构
语句:waitKey(30) ,中的参数单位是 ms 毫秒,也就是每一帧间隔 30 ms ,该语句时不能删除的,否则会执行错误,无法播放视频或录制视频。
如果要求打开你硬盘上一个视频文件来播放,第5行代码应修改为:
VideoCapture capture("xxxx.mp4"); //已上传的文件名
在第6行的while循环中Mat是一个类,由两部分数据组成:矩阵头(包括矩阵尺寸、存储方法、存储地址等信息)和一个指向所有像素值的矩阵(根据所选存储方法不同,矩阵可以是不同的维数)的指针。
waitkey这个命令控制着imshow的持续时间,当imshow之后不跟waitkey时,相当于没有给imshow提供时间展示图像,就只有一个空窗口一闪而过,所以必须加waitkey。
2.2编译 test2.cpp 文件
g++ test2.cpp -o test2 `pkg-config --cflags --libs opencv`
2.3 运行程序输出结果
./test2
在本次实验中,我深入了解认识了OpenCV,知晓了其相关作用及操作流程,学会了运用OpenCV对图片以及视频进行相关操作处理,明白了如何在Linux系统上安装OpenCV,在此期间也遇到了许多问题,最终通过查找资料得以解决。
OpenCV - 搜狗科学百科
Ubuntu18.04下OpenCV3.4.11的安装及使用示例_ssj925319的博客-CSDN博客
基于Ubuntu安装opencv以及相关操作_Lc-Yusheng的博客-CSDN博客