一、創建工程:文件--->新建項目或文件--->Non qt project---->plaine C++ Application.....ios
https://blog.csdn.net/keith_bb/article/details/53470170小程序
二、在.rpo中添加openCV支持函數
INCLUDEPATH += E:/software/opencv-3.4.2/build/install/include/opencv \ E:/software/opencv-3.4.2/build/install/include/opencv2 \ E:/software/opencv-3.4.2/build/install/include LIBS += -L E:/software/opencv-3.4.2/build/install/x86/mingw/bin/libopencv_*.dll
三、main.cppui
#include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> using namespace std; using namespace cv; int main() { Mat srcImage = imread("F:/MyCode/test0004.bmp"); if(!srcImage.data) { cout << "image load failure" << endl; return false; } namedWindow("原圖像",WINDOW_NORMAL); /* * 一、經過指定的名字,建立一個能夠做爲圖像和進度條的容器窗口。若是具備相同名稱的窗口已經存在,則函數不作任何事情。 * 二、調用destroyWindow()或者destroyAllWindows()函數來關閉窗口,並取消以前分配的與窗口相關的全部內存空間。 * 對於代碼量不大的簡單小程序來講,咱們徹底沒有必要手動調用上述的destroyWindow()或者destroyAllWindows()函數, * 由於在退出時,全部的資源和應用程序的窗口會被操做系統會自動關閉。 * 三、void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE ); * 第一個參數,const string&型的name,即填被用做窗口的標識符的窗口名稱。 * 第二個參數,int 類型的flags ,窗口的標識,能夠填以下的值: * WINDOW_NORMAL設置了這個值,用戶即可以改變窗口的大小(沒有限制) * WINDOW_AUTOSIZE若是設置了這個值,窗口大小會自動調整以適應所顯示的圖像,而且不能手動改變窗口大小。 */ imshow("原圖像",srcImage); Mat grayImage; cvtColor(srcImage, grayImage, CV_BGR2GRAY); //將圖像轉換爲灰度圖 namedWindow("灰度圖",WINDOW_AUTOSIZE); imshow("灰度圖",grayImage); //將圖像轉換爲HSV,採用COLOR_前綴 Mat HSVImage; cvtColor(srcImage, HSVImage, COLOR_BGR2HSV); //將圖像轉換爲HSV圖 namedWindow("HSV",WINDOW_AUTOSIZE); imshow("HSV",HSVImage); waitKey(0); return 0; }
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 );
. InputArray src: 輸入圖像,能夠是Mat類
. OutputArray dst: 輸出圖像,也能夠Mat類
. int code: 轉換的代碼或標識,即在此肯定將什麼制式的圖片轉換成什麼制式的圖片
. int dstCn = 0: 目標圖像通道數,若是取值爲0,則由src和code決定spa
函數的做用是將一個圖像從一個顏色空間轉換到另外一個顏色空間,可是從RGB向其餘類型轉換時,必須明確指出圖像的顏色通道操作系統
在opencv中,其默認的顏色制式排列是BGR而非RGB。因此對於24位顏色圖像來講,前8-bit是藍色,中間8-bit是綠色,最後8-bit是紅色。常見的R,G,B通道的取值範圍爲:
. 0-255 :CV_8U類型圖片
. 0-65535: CV_16U類型圖片
. 0-1: CV_32F類型圖片 .net
對於線性變換來講,這些取值範圍是可有可無的。可是對於非線性轉換,輸入的RGB圖像必須歸一化到其對應的取值範圍來或得最終正確的轉換結果,例如從RGB->L*u*v轉換。若是從一個8-bit類型圖像不通過任何縮放(scaling)直接轉換爲32-bit浮點型圖像,
函數將會以0-255的取值範圍來取代0-1的取值範圍,因此在使用cvtColor函數以前須要對圖像進行縮放以下:code
img *= 1./255;
cvtColor(img, img, CV_BGR2Luv);blog