2013-09-21 76 views
2

我試圖創建一個程序,可以操縱圖像的HSV值,並在操作HSV值之前將完整的HSV圖像顯示爲默認值。我使用Visual C++ 2008.並且這是顯示來自3個通道的HSV圖像的算法: 1.加載圖像 2.將RGB文件轉換爲HSV 3.將HSV文件拆分爲3個通道 4.合併通道 5.顯示合併後的渠道如何合併HSV通道

這是我uncomplete的源代碼(我不能告訴你我的完整,因爲它太長):

... 
... 
cv::Mat Citra,CitraConv,CitraHSV[3],CitraD,Citra6,CitraH,CitraH1,CitraS,CitraS1, 
CitraV,CitraV1; 
std::vector<cv::Mat>CitraHSV2(3); 
cv::cvtColor(Citra,CitraConv,CV_BGR2HSV); 
cv::split(CitraConv,CitraHSV); 
CitraH=CitraHSV[0]; 
CitraH1=CitraH; 
CitraS=CitraHSV[1]; 
CitraS1=CitraS; 
CitraV=CitraHSV[2]; 
CitraV1=CitraV; 
CitraHSV2[0]=CitraH1; 
CitraHSV2[1]=CitraS1; 
CitraHSV2[2]=CitraV1; 
cv::merge(CitraHSV2,CitraD);//Error Here 
Citra6=CitraD; 
pictureBoxCitra2->Image=IplImageToBitmap(&(IplImage)Citra6); 

但是,當我執行程序時,我得到了錯誤「類型爲'System.Runtime.InteropServices.SEHException'的未處理異常「。該錯誤出現在cv :: merge函數中。誰能幫我?這個程序有什麼問題?因爲當我構建解決方案(F7)程序時沒有語法錯誤。

回答

1

查看我的博客文章和GitHub上的源代碼,從網絡攝像頭操縱圖像流,它完全符合您的要求。

它是用Scala編寫的,但它很容易篩選出你需要的信息,比如分割通道,合併它們等等。將它移植到C++應該是不容易的。

Color Extractor