第一天使用OpenCV,今天用它单纯地显示一张图片。编译环境:VS2010 + OpenCV2.4.9。
将想要显示的图片放在工程目录下,我使用的图片是lena.bmp和lena.jpg...
第一种方法:
#include "cv.h"
#include "highgui.h"
using namespace cv;
int main(int argc,char** argv[])
{
IplImage *pImg = NULL; //declare a Iplimage pointer
if(pImg = cvLoadImage("lena.bmp",1))
{
cvNamedWindow("image",1); //create a window
cvShowImage("image",pImg); //show image
cvWaitKey(0); //wait for key pressing
cvDestroyWindow("image"); //destroy window
cvReleaseImage(&pImg); //release the image
}
system("pause");
return 0;
}
函数介绍:
cvLoadImage(arg1,arg2)。从这个函数的名字就知道这是读入一张图像。带2个参数,还回值是一个IpImage的指针。
arg1:filename,文件的名字
arg2:可以有3个值。-1,以原始通道数读入;0,强制转化为灰度;1,读取彩色图像。
第二种方法:
#include "cv.h"
#include "highgui.h"
using namespace cv;
int main(int argc,char** argv[])
{
Mat img = imread("lena.bmp");
if( !img.data)
return -1;
namedWindow("Lena",CV_WINDOW_AUTOSIZE);
//cvNamedWindow("Lena",CV_WINDOW_AUTOSIZE);
imshow("Lena",img);
waitKey(0);
//cvWaitKey(0);
system("pause");
return 0;
}
函数介绍:Mat,貌似很复杂,等深入一点再探究??
cvWaitKey函数和waitKey函数有什么区别?注释行中的方法也可行,为什么呢?
cvNameWindow和nameWindow函数有什么区别,为什么两种方法都可行呢?
第三种方法:
#include "highgui.h"
using namespace cv;
int main(int argc,char** argv)
{
IplImage* img = cvLoadImage("lena.bmp");
cvNamedWindow("Lena",0);
cvShowImage("Lena",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Lena");
}
第三种方法和第一种方法实际上是一样的!!!(⊙o⊙)…
实验结果: