加載圖像:imread 函數
Mat imread(const string& filename, int flags = 1);
- filename:需要載入的圖像的路徑名。
- flags:加載圖像的顏色類型,默認值為 1。flags = 1(IMREAD_COLOR):返回一個 BGR 類型的三通道彩色圖像;flags = 0(IMREAD_GRAYSCALE):返回灰度圖像;flags = -1(IMREAD_UNCHANGED):返回包含 Alpha 通道的加載圖像。
Mat src_1 = imread("C:/Users/齊明洋/Desktop/1.jpg");
Mat src_0 = imread("C:/Users/齊明洋/Desktop/1.jpg", 0);
顯示圖像:namedWindow 與 imshow 函數
void nameWindow(const string& winname, int flags = WINDOW_AUTOSIZE) ;
- winname:新建窗口的名稱。
- flags:窗口的標識,默認為 WINDOW_AUTOSIZE 。 WINDOW_AUTOSIZE 窗口大小自動適應圖片大小,並且不可手動更改。
-
WINDOW_NORMAL 用戶可以改變這個窗口大小。
namedWindow("測試窗口");//窗口自動適應圖片大小,大小不可手動更改
namedWindow("測試窗口", WINDOW_NORMAL);//用戶可以改變窗口大小
void imshow(const string& winname, InputArray mat);
- winname:展示窗口的名稱,未使用 nameWindow 創建窗口時,自動創建窗口。
- mat:展示圖片。
imshow("測試窗口", Imags);
修改圖像:cvtColor 函數
cvtColor 是顏色空間轉換函數,可以實現 RGB 顏色、HSV 顏色、HSI 顏色、lab 顏色、YUV 顏色間的轉換,也可以實現彩色和灰度圖互轉。
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0);
- src :原圖像。
- dst :進行顏色空間變換后的圖像。
- code :轉換的代碼或標識,即要轉換成什么顏色空間的圖片。
- dstCn = 0 :目標圖像通道數,可以使用默認值,什么都不寫。
cvtColor(Imags, Imags2, COLOR_BGR2HSV);//BGR 顏色模型向 HSV 顏色模型轉換
cvtColor(Imags, Imags2, COLOR_BGR2GRAY);//BGR 顏色模型向 GRAY 顏色模型轉換
HSV 顏色模型
RGB 和 CMY 顏色模型都是面向硬件的,而 HSV(Hue Saturation Value)顏色模型是面向用戶的。 HSV 是根據顏色的直觀特性由 A.R.Smith 在1978年創建的一種顏色空間, 也稱六角錐體模型(Hexcone Model)。 這個模型中顏色的參數分別是:色調(H),飽和度(S),明度(V)。
保存圖像:imwrite 函數
void imwrite(const string& filename, InputArray mat);
- filename:待保存圖像的儲存位置。
- mat:待保存圖像。
imwrite("C:/Users/齊明洋/Desktop/修改后圖片.png", Imags);
代碼示例:
#include <opencv.hpp>
using namespace cv; int main() { Mat Imags = imread("C:/Users/齊明洋/Desktop/tem.jpg"); if (Imags.empty()) { printf("不能加載圖像!"); return -1; } namedWindow("測試窗口2", WINDOW_NORMAL); Mat Imags2; cvtColor(Imags, Imags2, COLOR_BGR2HSV);//RGB 顏色模型向 HSV 顏色模型轉換
imshow("測試窗口", Imags); imshow("測試窗口2", Imags2); imwrite("C:/Users/齊明洋/Desktop/修改后圖片.png", Imags2); waitKey(0); return 0; }
運行結果: