一、學習內容
1 加載圖像 imread
2 修改顏色空間 cvtColor
3 保存圖像 imwrite
二、代碼調試
2.1 讀取灰度圖像 imread
Mat src = imread("E:/ZL_OpenCv_Projects/NeZha.jpg",IMREAD_GRAYSCALE);
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char** argv) {
Mat src = imread("E:/ZL_OpenCv_Projects/NeZha.jpg",IMREAD_GRAYSCALE);
if (src.empty()) {
printf("Empty!");
return -1;
}
namedWindow("Figure1", CV_WINDOW_AUTOSIZE);
imshow("Figure1", src);
waitKey(0);
return 0;
}
2.2 顏色空間轉換 cvtColor
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src = imread("E:/ZL_OpenCv_Projects/NeZha.jpg");
if (src.empty()) {
printf("Empty!");
return -1;
}
namedWindow("Figure1", CV_WINDOW_AUTOSIZE);
imshow("Figure1", src);
//顏色空間轉換
Mat output;
cvtColor(src,output,CV_BGR2GRAY);
namedWindow("Figure2", CV_WINDOW_AUTOSIZE);
imshow("Figure2",output);
waitKey(0);
return 0;
}
備註:調試此代碼時,本人沿用上一程序2.1中的代碼,調試時出現異常。
原因在於:本程序的顏色空間轉換是將RGB轉化爲GRAY,而上一程序的執行之後,src已是gray不再是rgb,因此出現異常。
程序雖然簡單,但要頭腦清醒啊。
2.3 保存圖像imwrite
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src = imread("E:/ZL_OpenCv_Projects/NeZha.jpg");
if (src.empty()) {
printf("Empty!");
return -1;
}
namedWindow("Figure1", CV_WINDOW_AUTOSIZE);
imshow("Figure1", src);
//顏色空間轉換
Mat output;
cvtColor(src,output,CV_BGR2GRAY);
namedWindow("Figure2", CV_WINDOW_AUTOSIZE);
imshow("Figure2",output);
//保存
imwrite("E:/ZL_OpenCv_Projects/NeZhaGray.jpg",output);
waitKey(0);
return 0;
}
正常。