建立MFC工程,從檔案中讀入一幅映像,將之反色,然後顯示原圖片和反色之後的圖片。
[cpp]
view plaincopyprint?
- /*******************************************************************************
- 函數名稱 : MakeMat
- 函數描述 : 使用OpenCV進行映像操作
- 輸入參數 : N/A
- 輸出參數 : N/A
- 返 回值 : N/A
- 作 者 : hewenming 2012.11.14
- *******************************************************************************/
- void MakeMat()
- {
- IplImage* src = NULL;
-
- //載入圖片至記憶體
- src = cvLoadImage("750x500_1126054.bmp");
- if (NULL == src)
- {
- AfxMessageBox(_T("圖片載入失敗!"));
- return;
- }
-
- //擷取圖片的一些屬性
- int height = src->height;
// 映像高度
- int width = src->width;
// 映像寬度(像素為單位)
- int step = src->widthStep;
// 相鄰行的同列點之間的位元組數
- int channels = src->nChannels;
// 色彩通道數目 (1,2,3,4)
- uchar *data = (uchar *)src->imageData;
-
-
- //建立標題名為“美女”的對話方塊
- cvNamedWindow("美女");
- cvMoveWindow("美女", 600, 250);
-
- //建立名為“反色”的對話方塊
- cvNamedWindow("反色");
- cvShowImage("美女",src);
-
-
- //反色操作
- for(int i=0;i != height; ++ i)
- {
- for(int j=0;j != width; ++ j)
- {
- for(int k=0;k != channels; ++ k)
- {
- data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
- }
- }
- }
-
-
- //將圖片顯示到對話方塊中
- cvShowImage("反色",src);
- cvWaitKey(0);
-
- //釋放記憶體與對話方塊銷毀
- cvReleaseImage(&src);
- cvDestroyWindow("美女");
- cvDestroyWindow("反色");
-
- //退出
- exit(0);
- }
/******************************************************************************* 函數名稱 : MakeMat函數描述 : 使用OpenCV進行映像操作輸入參數 : N/A 輸出參數 : N/A 返 回值 : N/A 作 者 : hewenming 2012.11.14*******************************************************************************/ void MakeMat(){ IplImage* src = NULL; //載入圖片至記憶體 src = cvLoadImage("750x500_1126054.bmp"); if (NULL == src) { AfxMessageBox(_T("圖片載入失敗!")); return; } //擷取圖片的一些屬性 int height = src->height; // 映像高度 int width = src->width; // 映像寬度(像素為單位) int step = src->widthStep; // 相鄰行的同列點之間的位元組數 int channels = src->nChannels; // 色彩通道數目 (1,2,3,4) uchar *data = (uchar *)src->imageData; //建立標題名為“美女”的對話方塊 cvNamedWindow("美女"); cvMoveWindow("美女", 600, 250); //建立名為“反色”的對話方塊 cvNamedWindow("反色"); cvShowImage("美女",src); //反色操作 for(int i=0;i != height; ++ i) { for(int j=0;j != width; ++ j) { for(int k=0;k != channels; ++ k) { data[i*step+j*channels+k]=255-data[i*step+j*channels+k]; } } } //將圖片顯示到對話方塊中 cvShowImage("反色",src); cvWaitKey(0); //釋放記憶體與對話方塊銷毀 cvReleaseImage(&src); cvDestroyWindow("美女"); cvDestroyWindow("反色"); //退出 exit(0);}
如果想儲存反色後的映像,添加以下代碼即可:
[cpp]
view plaincopyprint?
- //儲存反色後的映像
- cvSaveImage("反色.bmp",src);