学习OpenCV的学习笔记系列(三)显示图片及视频

时间:2022-11-16 20:11:13

OpenCV是计算机视觉库,那么处理的对象无非两个:“图片”及“视频”(其实视频也是被解压成单帧图像来处理的,总的来说,还是处理图像)。

那么要想学习OpenCV,第一步必须知道OpenCV是怎么打开“图像”及“视频”文件然后显示的。


如果要想实现这些功能,其实很简单,步骤如下:


1. 新建工程

     

学习OpenCV的学习笔记系列(三)显示图片及视频

打开VS2010,新建一个项目,选择“Win32控制台应用程序”(使用控制台可以省掉很多麻烦),取名“HelloOpenCV”,点击“确定”按钮。

学习OpenCV的学习笔记系列(三)显示图片及视频

下一步

学习OpenCV的学习笔记系列(三)显示图片及视频

记得勾选“空项目”,然后点击“完成

学习OpenCV的学习笔记系列(三)显示图片及视频

工程新建好了,工程有四个文件夹,分别为“外部依赖项”,“头文件”,“源文件”,“资源文件”

学习OpenCV的学习笔记系列(三)显示图片及视频

学习OpenCV的学习笔记系列(三)显示图片及视频

学习OpenCV的学习笔记系列(三)显示图片及视频


好了,工程新建好了,源码文件也新建好了,下面开始写代码了。


2. 编写代码


在“main.cpp”文件中输入以下代码:


//Created by JimmyGong20140903
// main.cpp : 实现文件
//

/*OpenCV相关头文件包含*/
#include <stdio.h>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;
using namespace std;
//载入图片并显示
void LoadImage_Display()
{
Mat myImage = imread("airplane.jpg");//载入指定图像
namedWindow("单幅图像显示");//创建一个名为“单幅图像显示”的窗口
imshow("单幅图像显示",myImage);//在指定窗口显示指定图像

waitKey(0);
}

//载入视频并显示
void LoadVideo_Display()
{
Mat myFrame;
CvCapture* myCap;
namedWindow("视频播放",WINDOW_AUTOSIZE);//创建一个名为“视频播放”的窗口
myCap = cvCreateFileCapture("Megamind.avi");
myFrame = cvQueryFrame(myCap);

while (1)
{
myFrame = cvQueryFrame(myCap);

if ( myFrame.empty() )//判断是否帧为空
{
cout<<"视频文件播放完毕"<<endl;
break;
}


char chKeyCode = cvWaitKey(20);

if(chKeyCode == 27)
{
break;
}

imshow("视频播放",myFrame);
}
cout<<"按任意键退出!"<<endl;
waitKey(0);
}

int main()
{
int whichTypeFile = 0;
char cstr;
bool isGoodInput=false;
cout<<"请输入需要显示的文件类型!\n输入“0”为图像文件,输入“1”为视频文件,其他无效!\n"<<endl;

//cstr = cin.get();
while(!isGoodInput)
{
cin >> cstr;

if (!isdigit(cstr))
{
cout << "请输入“0”或“1”,谢谢!"<<endl;
}
else
{
cout << "\n输入成功!" <<endl;
isGoodInput = true;
}
}

//whichTypeFile = atoi(cstr);
whichTypeFile = int(cstr-'0');//char-->int

if (0 == whichTypeFile)
{
LoadImage_Display();
}
else if (1 == whichTypeFile)
{
LoadVideo_Display();
}
else
{
cout << "输入无效!\n" << "请安任意键退出!" << endl;
waitKey(0);
}

return 0;
}



3. 放入资源文件


在完成编码后,必须要在工程目录里放入所需要显示的图片及视频文件,否则程序为因为读不到指定的图片及视频文件而出错。

本例拷贝了OpenCV2.4.9源码中的"airplane.jpg"和"Megamind.avi"文件放入工程目录("H:\Practice\HelloOpenCV\HelloOpenCV")中。


4. 调试及测试

在代码及资源文件无误的情况下,开始调试程序,顺利编译通过,运行画面如下:

学习OpenCV的学习笔记系列(三)显示图片及视频

学习OpenCV的学习笔记系列(三)显示图片及视频


好了,最简单的图片显示及视频播放功能已经实现了。是不是很简单呢?


下面给出本次演示的源码工程:   

HelloOpenCV


OK,先到这里吧!下次文章再见!