OpenCV3編程入門筆記(1)圖像載入、顯示、保存、變換灰度圖


圖像載入、顯示、保存函數:

1         圖像載入函數:imread()   Mat imread(const string& filename, int flags=1);

    const string&類型的filename為載入圖像的路徑(絕對路徑和相對路徑)

    flags是int類型的變量,flags>0,返回一個3通道的彩色圖像;

                                         flags = 0,返回灰度圖像;

                                         flags < 0,返回包含Alpha通道的加載圖像。

    flags默認值為1,可以省略對其賦值。

例如:Mat srcImage = imread(‘1.jpg’);

 

2   圖像顯示函數:imshow()  void imshow(const string& winname, InputArray mat);

         Const string&類型的winname為需要顯示的窗口名稱;

         InputArray類型的mat,填需要顯示的圖像。

         例如:imshow(‘圖’,srcImage);

 

3       Mat類型是用於保存圖像以及其他矩陣數據的數據結構,默認尺寸為0,也可以初始化尺寸。InputArray/outputArray在opnecv中和Mat類似都是一種數據格式,而很多時候,遇到函數原型中的InputArray/outputArray類型,可以把它簡單的當做Mat類型。

 

4       輸出圖像到文件:imwrite()  bool imwrite(const string& filename,InputArray img, const vector<int> & params=vector<int> () );

         const string& filename表示填寫需要的文件名,需帶上后綴,如“1.jpg”;

         InputArray img表示要保存的圖像數據;

         const vector<int> & 類型的params,其默認值為vector<int> (),需要填寫時有:

         1.JPEG格式圖片,參數為0-100,表示圖像質量,默認為95;

         2.PNG格式圖片,參數為0-9,表示壓縮級別,高值則表示更小尺寸和壓縮時間更長;

         3.PPM,PGM,PBM格式時,表示二進制格式標志,參數0或1,默認為1。

         例如:imwrite(‘123.jpg’,dstImage);

 

基礎圖像容器Mat

5       使用Mat() 構造函數

         Mat M(2,2,CV_8UC3,Scalar(0,0,255));表示創建2行2列,CV_8UC3表示使用8位的unsigned char型,每個像素由三個元素組成的三通道。另外,Scalar是個short型的向量,能使用指定的定制化來初始化矩陣,還可以表示顏色。

 

常用數據結構和函數

6       點表示:Point 

    用法:Point point;

                    point.x = 10;

                    point.y = 8;

            或者:Point point = point(10,8); 都表示為有x=10和y=8定位的2D點。

 

7       顏色的表示:Scalar

         Scalar(a,b,c) 表示定義的RGB值為:紅色分量為c,綠色分量為b,藍色分量為a。這里取決於opnecv和matlab不同儲存三通道顏色方式,matlab為RGB順序,opnecv為BGR,也可以理解為兩者相反。

8       矩形表示:Rect

         Rect類的成員變量有x,y,width,height表示左上角點的坐標和矩形寬和高。其成員函數有:

         Size()返回值為Size(尺寸大小),area()返回矩形的面積,contains(Point)判斷點是否在矩形內,inside(Rect)判斷矩形是否在該矩形內,tl()返回左上角點坐標,br()返回右下角點坐標。

         Rect rect = rect1 & rect2; 兩矩形交集

         Rect rect = rect1 | tect2; 兩矩形並集

         Rect rectShift = rect + point; 矩形平移

         Rect rectScale = rect + size; 矩形縮放

 

9       顏色空間轉換:cvtColor()

         其中RGB和Gray轉換有:Opnecv2版本的CV_RGB2GRAY,CV_GRAY2RGB

                                         Opencv3版本的COLOR_RGB2GRAY,COLOR_GRAY2RGB

         RGB和HSV轉換有:Opnecv2版本的CV_RGB2HSV,CV_BGR2HSV,CV_HSV2RGB,CV_HSV2BGR

                                 Opencv3版本的COLOR_RGB2HSV,COLOR_BGR2HSV,COLOR_HSV2RGB,COLOR_HSV2BGR

         即對於顏色轉換,Opnecv2的CV_前綴的宏命名規范被Opnecv3中的COLOR_式的宏命名前綴所取代,另外,Opnecv中默認的圖片通道存儲順序是BGR。

 

10     綜合例子:

         #include <opnecv2/opencv.hpp>

         using namespace cv;

         int main()

    {

                   Mat srcImage = imread(“1.jpg”);

                   Mat dstImage;

            cvtColor(srcImage,dstImage, COLOR_BGR2GRAY);

       imwrite(“圖1.jpg”,srcImage);

                   imshow(“原圖”,srcImage);

                   imshow(“變換圖”,dstImage);

                  waitKey(0);

       return 0;

    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM