Opencv学习1 :简单读取和显示

#include "stdafx.h"

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

#pragma comment(lib,"opencv_core220d.lib")
#pragma comment(lib,"opencv_highgui220d.lib")
#pragma comment(lib,"opencv_imgproc220d.lib")

int _tmain(int argc, _TCHAR* argv[])
{
const char* szFileName = "D:\\T5Aff1.tif";
const char* szWinName = szFileName ;
IplImage* image = cvLoadImage( szFileName,CV_LOAD_IMAGE_COLOR ) ;
assert( NULL != image ) ;
cvNamedWindow(szWinName) ;  //创建窗口
cvShowImage(szWinName,image); //显示图像
cvWaitKey(0) ;//等待按键
cvReleaseImage(&image) ;//释放图像
cvDestroyWindow(szWinName) ; //销毁窗口
return 0;
}

 

//第二种方法

#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

#pragma comment(lib,"opencv_core220d.lib")
#pragma comment(lib,"opencv_highgui220d.lib")
#pragma comment(lib,"opencv_imgproc220d.lib")
using namespace std;
using namespace cv;
int main(int argc,char * argv[])
{
	const char* imagename="D:\\T5Ab.tif";
	Mat img=imread(imagename);
	if(img.empty())
	{
		fprintf(stderr,"不能打开图像%s\n",imagename);
		return -1;
	}
	imshow("image",img);  //显示图像
	waitKey();
	return 0;
}

using namespace std;
using namespace cv;


int _tmain(int argc, _TCHAR* argv[])
{

    // 这里的第二个参数说明此时我们可以加载16bit/32bit的图像,除此之外
    // 便都会被转换成8bit。一般情况下,图像都是8bit的。医疗图像为了保证
    // 高精度,通常会使用更高的bit位数。
    Mat src_img = imread("C:\\bird.png", CV_LOAD_IMAGE_ANYCOLOR);
    if(src_img.empty())
    {
        cerr << "载入图像失败" << endl;
        return -1;
    }
    // 显示图像,一个参数为窗口名称,第二个为要显示的图像
    imshow("anycolor", src_img);

    // 这里的第二个参数指明加载的图像为RGB图像,如果不是,则强制转换成RGB图像
    src_img = imread("C:\\bird.png", CV_LOAD_IMAGE_COLOR);
    if(src_img.empty())
    {
        cerr << "载入图像失败" << endl;
        return -1;
    }
    imshow("color", src_img);

    // 这里的第二个参数指明加载的图像为灰度图像,如果不是,则强制转换成灰度图像
    src_img = imread("C:\\bird.png", CV_LOAD_IMAGE_GRAYSCALE);
    if(src_img.empty())
    {
        cerr << "载入图像失败" << endl;
        return -1;
    }
    imshow("grayscale", src_img);

    // Note:我们也可以使用 <0, >0, =0的数字来替代imread()的第二个参数。但是,
    // 不建议使用,因为单纯的数字显得莫名其妙,没有说明性。


    // 这里是在等待敲击任意按键,程序会在此处进行事件循环。如果,此处没有调用此函数,
    // 以上的窗口将会一闪而过。
    waitKey(0);
    
    return 0;
}

  

  

 

 

posted @ 2014-01-02 17:25  苏苏zhao  阅读(334)  评论(0编辑  收藏  举报