Linux里面基于Opencv编程
1、基于Opencv编程展示一个图片对比效果
(1)在opencv-3.4.1下新建文件夹homework4 ,并创建文件夹
nivechen@nivechen-virtual-machine:~/opencv-3.4.1/mkdir homework4
nivechen@nivechen-virtual-machine:~/opencv-3.4.1/ cd homework4
nivechen@nivechen-virtual-machine:~/opencv-3.4.1/homework4$
创建文件:touch test.cpp
进入编程:sudo gedit test.cpp
保存并编译:gcc test.cpp -o output1 pkg-config --cflags --libs opencv
(2)运行程序,展示效果
2、用摄像头处理视频
(1)在处理之前先更改一下虚拟机配置
右击ubuntu,点击设置
(2)现在运行程序会自动打开摄像头
运行Ctrl+C自动退出摄像头
(3)如果想打开我们自己硬盘上的一个视频文件来播放,进行如下操作
方法:将第7行代码修改如下:
VideoCapture capture(“test.mp4”);
总结:
(1)大家做做图片对比时,一定要自己注意编译的细节问题
命令:sudo gedit test.cpp 表示在当前的目录下创建文件,并打开编写
对应的编译命令为:g++ test.cpp -o output
命令:sudo gedit /test.cpp表示在home目录下创建文件,并打开编写
对应编译命令为:g++ /test.cpp -o output
命令要与之对应,不然会出现bug.
(2)Mat是一个类。由两部分数据组成:矩阵头(包括矩阵尺寸、存储方法、存储地址等信息)和一个指向所有像素值的矩阵(根据所选存储方法不同,矩阵可以是不同的维数)的指针使用OpenCV的imshow函数显示图片,必须配合waitKey 函数使用,才能将图片显示在windows窗体上。否则,imshow 函数单独使用只能弹出空白窗体,而无法显示图片。
(3)此代码会在while循环中一直运行,需要用键盘Ctrl+C 强制中断程序,非常不友好,改进如下:
在代码中加入:
if(frame.empty())
{
break;
}