gcc生成静态库.a和动态库.so和OpenCV3.4.11的安装及使用示例( 三 )


编译文件:
执行以下命令:
g++ test1.cpp -o test1 pkg- -- --libs
在用同文件夹下准备一张图片,文件名为:lena.jpg
输出结果:
执行以下命令:
./test1
可以看到由 lena.jpg 生成了一个 test.png ,呈现的效果不同了 。
(四)、使用示例——视频 1)虚拟机获取摄像头权限
在下使用快捷键 Win + R ,输入 .msc ,并回车
找到USBS… 服务,确保启动了 。
点击 “ 虚拟机 ” ,然后点击 “ 设置(S)… ” 。选择 “ USB控制器 ” ,将 “ USB兼容性 ” 设置为 “ USB 3.1 ” (有些是设置为USB 3.0),并点击确定 。
选择 “ 虚拟机 ” ,再选择 “ 可移动设备 ” ,再选择 “” ,最后点击 “ 连接 ” ,再弹出的窗口内点击 “ 确定 ”。这里不同的版本有不同的方法 。具体版本可百度 。
虚拟机右下角这个摄像头图标有个小绿点,则连接成功 。
2)播放视频
创建一个 test2.cpp 文件 。
gedit test2.cpp
将以下代码复制粘贴进去 。
test2.cpp:
#include using namespace cv;int main(){//从摄像头读取视频VideoCapture capture("man.mp4");//循环显示每一帧while(1){Mat frame;//定义一个Mat变量,用于存储每一帧的图像capture >> frame;//读取当前帧if(frame.empty())//播放完毕,退出break;imshow("读取视频帧",frame);//显示当前帧waitKey(30);//掩饰30ms}system("pause");return 0;}
准备一个小视频,我这里准备了 man.mp4。
编译 test2.cpp 文件 。
g++ test2.cpp -o test2 pkg- -- --libs
输出结果 。
./test2
3)录制视频
创建一个 test3.cpp。
gedit test3.cpp
复制粘贴一下代码 。
test3.cpp:
/*********************************************************************打开电脑摄像头,空格控制视频录制,ESC退出并保存视频RecordVideo.avi*********************************************************************/#include#include #include#includeusing 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;}
编译 test3.cpp 文件 。
g++ test3.cpp -o test3 pkg- -- --libs
输出结果 。
./test3
三、总结
本次作业使我了解了gcc生成静态库和动态库的方法,在做的过程中也遇到了困难,通过网上各位大佬的帮助解决了 。同时学会了在下安装.4.11,并使用它,学会了读取图片,视频,并且学会了录制视频 。对我帮助很大 。
四、参考文献: