我這里使用的是opencv3.0。0的版本,運行環境為vs2013
實現代碼
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include <opencv2\imgproc\types_c.h>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
int main(){
//讀取圖像源
cv::Mat srcImage = cv::imread("a1.jpg");
if (srcImage.empty()){
return -1;
}
//轉為灰度圖像
cv::Mat srcGray;//創建無初始化矩陣
cv::cvtColor(srcImage, srcGray,CV_RGB2GRAY);
cv::imshow("srcImage", srcImage);//顯示源圖像
cv::imshow("srcGray", srcGray);//顯示灰度圖像
cv::waitKey(0);
return 0;
}
首先把代碼截圖貼出來
其實實現原理還是挺簡單的,主要是調用庫函數,對於上面代碼中的core.hpp這個頭文件是opencv的主要頭文件,包括了數據結構、矩陣運算、數據變化、內存管理、文本和數學等功能,而highgui.hpp 是另外一種重要的文件,包括圖形界面和視頻圖像處理的頭文件,如果遇到CV_RGB2GRAY報錯則需要導入#include <opencv2\imgproc\types_c.h> 這個頭文件 。
在顯示圖片時,一般要在cv::imshow()函數后加一句cv::waiKey(0)表示此程序顯示圖像后將暫停等待接收一個鍵盤的輸入,如果沒有這句話,則顯示圖像的代碼很快就會執行過去了,所以要用這句話來暫停。當然waiKey(delay)里面的參數是可以任意的,當delay<=0時是等待輸入所以可用來做暫停,而delay>0時則表示圖像顯示的時間且delay表示的是毫秒如cv::waitKey(1000)表示圖像顯示1s然后顯示下一張常用於視頻的顯示。
程序運行結果