上一節的開發環境配置後,就可以直接開始編寫OpenCV代碼了,不羅嗦,直接上代碼。
一、圖像加載、修改、保存
#include <opencv2\opencv.hpp>
#include <highgui.h>
using namespace cv;
int main(int argc, char** argv)
{
//讀取圖像
Mat image;
image = imread("C:\\Users\\Administrator\\Desktop\\test.jpg", IMREAD_UNCHANGED);//IMREAD_UNCHANGED IMREAD_GRAYSCALE IMREAD_COLOR 讀取圖片
Mat invertImage;
cvtColor(image, invertImage, CV_BGR2GRAY);//變灰 HLS的CV_BGR2HLS
// 創建窗口
namedWindow("Test", CV_WINDOW_AUTOSIZE);
namedWindow("InvertImage", CV_WINDOW_AUTOSIZE);
// 顯示圖像
imshow("Test", image);
imshow("InvertImage", invertImage);
// 點擊關閉
waitKey(0);
imwrite("C:\\Users\\Administrator\\Desktop\\test1.jpg", invertImage);//保存至本地
destroyWindow("Test");
destroyWindow("InvertImage");
return 0;
}
以上代碼中主要的幾個知識點解釋下:
1.imread("C:\\Users\\Administrator\\Desktop\\test.jpg",IMREAD_UNCHANGED);
該方法加載圖像文件成爲一個Mat對象,其中第一個參數表示圖像文件名稱。
第二個參數,表示加載的圖像是什麼類型,支持常見的三個參數值:
(1)IMREAD_UNCHANGED (<0) 表示加載原圖,不做任何改變。
(2)IMREAD_GRAYSCALE ( 0)表示把原圖作爲灰度圖像加載進來。
(3)IMREAD_COLOR (>0) 表示把原圖作爲RGB圖像加載進來。
2.Mat類
Mat是一個圖像類,支持JPG、PNG、TIFF等常見格式圖像文件加載。
常見的方法有:
(1)複製到新的Mat類
Mat invertImage;
image.copyTo(invertImage);
(2)獲取指定範圍內的圖
Mat invertImage(image, Rect(10, 10, 100, 100));
3.cvtColor( image,invertImage, CV_BGR2GRAY);
該方法的功能是把圖像從一個彩色空間轉換到另外一個色彩空間,有三個參數,第一個參數表示源圖像、第二參數表示色彩空間轉換之後的圖像、第三個參數表示源和目標色彩空間如:COLOR_BGR2HLS 、COLOR_BGR2GRAY 等
4.imwrite("C:\\Users\\Administrator\\Desktop\\test1.jpg", invertImage);
該方法是將轉換後的invertImage保存至指定目錄。