第一天使用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⊙)…
实验结果: