1. 程式人生 > >OpenCV2中影象讀取、顯示、儲存等基本操作

OpenCV2中影象讀取、顯示、儲存等基本操作

之前看《學習OpenCV》這本書,一直在用IplImage,但是我自己安裝的是OpenCV2的,因此,在學這本書的時候,結合自己用的時候會出現很多的疑惑,知道現在才搞清楚,原來這本書是基於OpenCV1的........不過幸好發現的早,今天主要學習了OpenCV2中隊影象的基本操作,如影象的載入,影象的顯示以及儲存等基本操作,確實感覺比OpenCV1方便很多,貼上今天的敲的程式碼。

/*****************************************************
**		第二講 影象讀取、顯示、儲存等基本操作
*****************************************************/

#include "cv.h"
#include "highgui.h"
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char * argv[])
{
	Mat image;		//定義一個影象物件
	image = imread("G:/Learning/Machine_version/Photo/test.jpg");	//讀取影象

	if (!image.data)		//判斷影象載入是否成功
	{
		cout << "Fail to load image!!" << endl;
		system("pause");
		return 0;
	}

	Mat src1;
	image.copyTo(src1);		//將影象image深拷貝到src1中
	flip(src1, src1, 1);	//對影象進行翻轉
	namedWindow("src1");	//建立視窗src1
	imshow("src1", src1);	//在視窗src1中顯示翻轉後的影象


	namedWindow("my");		//建立視窗My
	imshow("my", image);	//在視窗my中顯示image影象
	int key=waitKey(0);		//等待按鍵的輸入

	imwrite("my.jpg", image);	//	將image影象儲存為my.jpg
	

	cout << "Size of image is: " << image.size().height << ", " //獲得影象的高,寬等尺寸
		<< image.size().width << endl;
	cout << "ASCII of the key is: " << key << endl;

	/******************自己定義影象物件***********************/
	//Mat image(200, 100, CV_8UC1, Scalar(100));
	//Mat src;
	//src = image;	//淺拷貝,src和image共用同一片記憶體
	////image.copyTo(src);//深拷貝,各自佔用一塊記憶體區域,對src的操作不會影響image

	system("pause");
	return 0;
}