OpenCV基本操作


加載圖像(cv::imread)

功能:是加載一個圖像文件成為Mat對象

格式:

1

Mat imread( const String& filename, int flags = IMREAD_COLOR );

解釋:

參數類型的

描述

const String& 類型的 filename

表示圖像文件的名稱,常見的圖像格式有JPG、PNG、TIFF等

 

   

int 類型的 flags

表示加載圖像是什么類型,默認為三通道RGB彩色圖像,支持常見的三個參數值:

  • IMREAD_UNCHANGED (<0)表示加載原圖,不做任何改變
  • IMREAD_GRAYSCALE (0)表示把原圖作為灰度圖加載進來
  • IMREAD_COLOR (>0)表示將原圖作為RGB圖像加載進來

   

顯示圖像(cv::imshow)

功能:是根據窗口名稱顯示圖像到窗口上去

格式:

1

void imshow(const String& winname, InputArray mat);

解釋:

參數類型的

描述

const String& 類型的 winname

填需要顯示的窗口標示名稱

InputArray 類型的 mat

填需要顯示的圖像

   

創建窗口(cv::namedWindow

功能:是創建一個OpenCV窗口,它由OpenCV自動創建於釋放。

格式:

1

void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);

解釋:

參數

描述

Const 類型的 String& winname

填寫創建窗口名稱

 

   

Int 類型的 flags

窗口標識,常見的三種值:

  • WINDOW_AUTOSIZE 根據圖像大小顯示窗口大小,無法修改窗口的小
  • WINDOW_NORMAL 根據自己需求修改窗口大小,跟QT集成的時候會使用
  • WINDOW_OPENGL 創建支持OpenGL的窗口

   

修改圖像:(cv::cvtColor)

作用:cvtColor的功能是將圖像從一個色彩空間轉換到另一個色彩空間。

格式:

1

void cvtColor( InputAvoid cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );

解釋:

參數

描述

InputAvoid cvtColor( InputArray src

原圖像

OutputArray dst

色彩空間轉換之后的圖像

Int 類型的 dstCn

源和目標色彩空間例如:COLOR_BGR2HLS、COLOR_BGR2GRAY等

   

保存圖像到指定文件:imread()函數

格式:

1

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

參數:

參數

描述

const 類型的 String& filename

填寫存儲出的位置、文件名稱以及后綴例如"D:/1.jpg"

InputArray 類型的 img

一般填寫Mat類型的圖像數據名稱

Const 類型的 std

表示為指定格式保存的參數編碼(一般可不填)

   

顏色空間轉換:cvtColor()函數

格式:

1

void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );

參數:

參數

描述

InputArray src

輸入圖像

OutputArray dst

輸出圖像

Int 類型的 code

顏色空間轉換的標識符

Int 類型的 dstCn

目標圖像的通道數,默認為0,表示目標圖像取源圖像的通道數

例子:

1

2

Mat src1, dst;

cvtColor(src1, dst, CV_BGR2GRAY);

拓展:

   

完整實例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

#include <opencv2/opencv.hpp>

#include <iostream>

#include <math.h>

   

using namespace cv;

int main(int argc, char**argv)

{

        Mat src = imread("./picture/1.jpg");        //Mat src = imread("D:/Picture/123.jpg", IMREAD_GRAYSCALE);看、可以為絕對路徑與相對路徑

        if (src.empty())

        {

                printf("路徑不對");

                return -1;

        }

        /*namedWindos創建一個OpenCV窗口                */

        imshow("input", src);

   

        namedWindow("output_Gary", WINDOW_AUTOSIZE);        

        /*

         WINDOW_AUTOSIZE:自動調整為適應圖像大小窗口

         WINDOW_NORMAL:用戶可以改變窗口大小

         WINDOW_OPENGL;創建窗口支持OPENGL

         IMREAD_COLOR作為RGB加載

        */

        Mat output_woman;

        cvtColor(src, output_woman, CV_BGR2GRAY);        //將圖像轉換為灰度圖

        imshow("output_Gary", output_woman);

   

        imwrite("焰靈姬.jpg", output_woman);        //保存圖像

   

        waitKey(0);

        return 0;

}

   

運行結果:

   


免責聲明!

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



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