[OpenCV學習筆記3][圖像的加載+修改+顯示+保存]

正式進入OpenCV學習了,前面開始的都是一些環境搭建和準備工做,對一些數據結構的認識主要是Mat類的認識;ios

[1.學習目標]windows

圖像的加載:imread()數據結構

圖像的修改:cvtColor()函數

圖像的顯示:imshow()佈局

圖像的保存:   imwrite()學習

[2.函數原型與參數說明]ui

 a.圖像的加載:編碼

 1 Mat imread( const string& filename, int flags=1 ); spa

參數說明:code

filename:文件盤符

flags:flags>0,三通道彩色圖   flags=0,灰度圖    flags<0,包含Alpha通道的圖像

b.圖像的修改:

 1 void cvCvtColor( const CvArr* src, CvArr* dst, int code ); 

函數功能:色彩空間轉換

參數說明:

src
        輸入的 8-比特 或浮點圖像.
dst
        輸出的 8-比特 或浮點圖像.
code
        色彩空間轉換,經過定義 CV_<src_color_space>2<dst_color_space> 常數 (見下面).

     函數 cvCvtColor 將輸入圖像從一個色彩空間轉換爲另一個色彩空間。函數忽略
IplImage 頭中定義的 colorModel 和 channelSeq 域,因此輸入圖像的色彩空間應該
正確指定 (包括通道的順序,對 RGB 空間而言,BGR 意味着佈局爲 B0 G0 R0 B1 G1 R1 ...
層疊的 24-位格式,而 RGB 意味着佈局爲 R0 G0 B0 R1 G1 B1 ... 層疊的 24-位格式. 

RGB[A]->Gray: Y=0.212671*R + 0.715160*G + 0.072169*B + 0*A (CV_RGB2GRAY) //RGB到灰度
RGB<=>YCrCb (CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR, CV_YCrCb2RGB)
RGB=>HSV (CV_BGR2HSV,CV_RGB2HSV)
RGB<=>XYZ (CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR, CV_XYZ2RGB):

c.圖像的顯示:

 c.1:建立窗口函數cvNamedWindow

 1 int cvNamedWindow( const char* name, int flags ); 

參數說明:

name
         窗口的名字,它被用來區分不一樣的窗口,並被顯示爲窗口標題。
flags
         窗口屬性標誌。目前惟一支持的標誌是 CV_WINDOW_AUTOSIZE。當這個標誌被設置後,如
        果 用 戶 不 能 手 動 改 變 窗 口 大 小 , 窗 口 大 小 會 自 動 調 整 以 適 合 被 顯 示 圖 像 ( 參 考
        cvShowImage)。

c.2:銷燬窗口(指定/全部) cvDestroyWindow /cvDestroyAllWindows
 1 void cvDestroyWindow( const char* name ); 

name
       要被銷燬的窗口的名字。

 函數 cvDestroyWindow 銷燬指定名字的窗口。

 

c.3:在指定窗口中顯示圖像 cvShowImage 

 1 void cvShowImage( const char* name, const CvArr* image ); 

參數說明:

name
         窗口的名字。
image 

        被顯示的圖像。

函數 cvShowImage 在指定窗口中顯示圖像。若是窗口建立的時候被設定標誌
CV_WINDOW_AUTOSIZE,那麼圖像將以原始尺寸顯示;不然,圖像將被伸縮以適合窗口大
小。

 

d:保存圖片到指定盤符   imwrite

 1 bool imwrite( const String& filename, InputArray img,const std::vector<int>& params = std::vector<int>()); 

參數說明:

filename  表示須要寫入的文件名,必需要加上後綴,好比「123.png」。 

img         表示Mat類型的圖像數據。 
params   表示爲特定格式保存的參數編碼,它有一個默認值std::vector< int >(),因此通常狀況下不用寫。

[代碼實例]

【運行環境】OpenCV3.0 + RedHat

【代碼功能】將彩色圖像轉換成灰度圖像保存

 

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

using namespace cv;
using namespace std;

int main (void)
{
   Mat src = imread("./2.jpg"); //讀取2.jpg
   if(src.empty())
   {
       printf("could not load image.....\n");
      return -1;    
   }
   namedWindow("Opencv setup deno",CV_WINDOW_AUTOSIZE);  //建立窗口
   imshow("Opencv setup deno",src);                      //顯示圖片到窗口
   
   namedWindow("Output windows",CV_WINDOW_AUTOSIZE);  //建立窗口
   Mat output_image;
   cvtColor(src,output_image,CV_RGB2GRAY);                     //顏色空間轉換   <彩色圖像---灰度圖像>
   imshow("Output windows",output_image);                      //顯示圖片到窗口
   imwrite("./3.jpg",output_image);                 //保存圖片到指定盤符
   cvWaitKey();
    return 0;    
}

 

[運行結果]

 

 

 

 12-22

相關文章
相關標籤/搜索