OpenCV学习
hightgui
HightGui是一个可以移植的图形工具包。
OpenCV将与操作系统,文件系统,摄像机之类的硬件进行交互的一些函数纳入HighGui(high-level graphical user interface)库中,有了HighGui,我们可以方便的打开窗口,显示图像,读出或者写入图像相关的文件(包含图像与视屏),处理简单的鼠标,光标和键盘事件。也可以使用HighGui创建其他一些很有用的控件,如滑动条,并把它加入窗口。
----------——摘自细说HighGui
所以,每次头文件一定要记得加上
#include "opencv2/highgui.hpp"
这个库帮助我们只专注软件编程,无需考虑与外界的摄像机硬件交互,所有的工作都打包到HighGui里面完成了。
capture.get(type)
// Get video resolution
int frameWidth = cap.get(cv::CAP_PROP_FRAME_WIDTH);
int frameHeigth = cap.get(cv::CAP_PROP_FRAME_HEIGHT);
capture.get(type)通过get函数可以读取视频的相关参数,只需改变type。(cvGetCaptureProperty(capture,type)也可以实现)
type的类型为:
CV_CAP_PROP_FRAME_WIDTH 视频流帧的宽度
CV_CAP_PROP_FRAME_HEIGHT 视频流帧的高.
CV_CAP_PROP_FPS 帧率.
CV_CAP_PROP_FRAME_COUNT 视频文件的帧数.
CV_CAP_PROP_BRIGHTNESS 图像亮度 (只对摄像头).
CV_CAP_PROP_CONTRAST 图像对比度 (only for cameras).
CV_CAP_PROP_SATURATION 图像饱和度 (only for cameras).
更多参数和如何把视频的相关参数显示在窗口
编程中遇到的问题
bug 1
Q:qt creator 正常编译但是执行时找不到执行文件
build 文件全部删掉,重新cmake …(,头大,重新来一回,竟然就好使。
bug 2
Q:下面这段话是什么意思?
basic exited with code 0
意味着你的程序正常执行完毕并退出。
可以科普一下exit code,在大部分编程语言中都适用:
exit code 0 表示程序执行成功,正常退出
exit code 1 表示程序执行执行过程中遇到了某些问题或者错误,非正常退出
bug 3
Q:为什么,为什么,为什么打不开视频源?玄之又玄,半个小时之前还是打不开的,半个小时之后竟然又能打开了
Videocapture 属于videoio子模块程序运行的时候会检查是否为空,如果为空(可以用0代替)默认打开摄像头,如果是路径则默认打开视频源。结尾必须使用release释放所有资源。
VideoCapture cap;
cap.open("/home/warmtree/下载/M1_ComputerVision/Lab2/video1.mp4");
while (1)
{
Mat frame;//定义一个变量把视频源一帧一帧显示
cap >> frame;
if (frame.empty())
{
cout << "Finish" << endl;
break;
}
imshow("Input video", frame);
waitKey(30);
}
cap.release();
return 0;