OpenCV學(xué)習(xí)筆記之二_第1頁
OpenCV學(xué)習(xí)筆記之二_第2頁
OpenCV學(xué)習(xí)筆記之二_第3頁
OpenCV學(xué)習(xí)筆記之二_第4頁
OpenCV學(xué)習(xí)筆記之二_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、本節(jié)對應(yīng)-第3章Processing Imageswith Classes 中的Using a Controller to communicate with processing modules的部分。本節(jié)把書中的提要詳細化,給自已備份的同時也希望給別人一點啟發(fā)。開始一、打開VS2010,建立項目二、下一步后,原來的“使用Unicode庫”勾去掉。三、完成后,出現(xiàn)編輯界面四、編輯對話框,設(shè)計成如下界面。五、點開“解決方案資源管理器”,添加頭文件colordetector.h#if !defined COLORDETECT#define COLORDETECT#include<opencv

2、2/core/core.hpp>class ColorDetectorprivate:/minimum acceptable distanceint minDist;/target colorcv:Vec3b target;/image containing resulting binary mapcv:Mat result;/inline private member function/Computes the distance from target getDistance(const cv:Vec3b& color)const;public:/empty

3、 constructorColorDetector():minDist(100) / default parameter initialization heretarget0 = target1 = target2 = 0; /Getters and setters/Sets the color distance threshold/Threshold must be positive,otherwise distance threshold is set to 0.void setColorDistanceThreshold(int distance);/Gets the color dis

4、tance thresholdint getColorDistanceThreshold() const;/ Sets the color to be detectedvoid setTargetColor(unsignedchar red,unsignedchar green,unsignedchar blue);/ Sets the color to be detectedvoid setTargetColor(cv:Vec3b color);/ Gets the color to be detectedcv:Vec3b getTargetColor() const;/ Processes

5、 the image. Returns a 1-channel binary image.cv:Mat proecess(const cv:Mat &image);#endif六、添加源文件#include"StdAfx.h"#include"colordetector.h"int ColorDetector:getDistance(const cv:Vec3b& color) constreturn abs(color0-target0)+abs(color1-target1)+abs(color2-target2);void Colo

6、rDetector:setColorDistanceThreshold(int distance)if ( distance < 0 )distance = 0;minDist = distance;int ColorDetector:getColorDistanceThreshold() constreturn minDist;void ColorDetector:setTargetColor(unsignedchar red, unsignedchar green,unsignedchar blue)target2 = red;target1 = green;target0 = bl

7、ue;void ColorDetector:setTargetColor(cv:Vec3b color)target = color;cv:Vec3b ColorDetector:getTargetColor() constreturn target;cv:Mat ColorDetector:proecess(const cv:Mat &image)/ re-allocate binary map if necessary/ same size as input image,but 1-channelresult.create(image.rows,image.cols,CV_8U);

8、/ get the iteratorscv:Mat_<cv:Vec3b>:const_iterator it = image.begin<cv:Vec3b>();cv:Mat_<cv:Vec3b>:const_iterator itend = image.end<cv:Vec3b>();cv:Mat_<uchar>:iterator itout = result.begin<uchar>();/ for each pixelfor ( ; it != itend; +it, +itout )/ process each p

9、ixel -/ compute distance from target colorif ( getDistance(*it) < minDist )*itout = 255;else*itout = 0;/end of pixel processingreturn result;七、同理添加和colorDetectController.cpp/#if !defined CD_CNTRLLR#define CD_CNTRLLR#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#i

10、nclude"colordetector.h"class ColorDetectControllerprivate:static ColorDetectController *singleton; / pointer to the singletonColorDetector *cdetect;/ The image to be processedcv:Mat image;cv:Mat result;public:ColorDetectController();/ Sets the color distance thresholdvoid setColorDistanceT

11、hreshold(int distance);/ Gets the color distance thresholdint getColorDistanceThreshold() const;/ Sets the color to be detectedvoid setTargetColor(unsignedchar red,unsignedchar green,unsignedchar blue);/ Gets the color to be detectedvoid getTargetColor(unsignedchar &red,unsignedchar &green,u

12、nsignedchar &blue) const;/ Sets the input image. Reads it from filebool setInputImage(std:string filename);/ Returns the current input image.const cv:Mat getInputImage() const;/ Performs image processingvoid process();/ Returns the image result from the latest processingconst cv:Mat getLastResul

13、t() const;/ Deletes all processor objects created by the controllerColorDetectController();/ Singleton static membersstatic ColorDetectController *getInstance()if (singleton = 0) singleton= new ColorDetectController;return singleton;/ Releases the singleton instance of this controller.staticvoid des

14、troy();#endif/colorDetectController.cpp#include"StdAfx.h"#include"colorDetectController.h"ColorDetectController *ColorDetectController:singleton = 0;ColorDetectController:ColorDetectController()/ private constructor/ setting up the applicationcdetect = new ColorDetector();void Co

15、lorDetectController:setColorDistanceThreshold(int distance)cdetect->setColorDistanceThreshold(distance);int ColorDetectController:getColorDistanceThreshold() constreturn cdetect->getColorDistanceThreshold();void ColorDetectController:setTargetColor(unsignedchar red, unsignedchar green, unsigne

16、dchar blue)cdetect->setTargetColor(red,green,blue);void ColorDetectController:getTargetColor(unsignedchar &red, unsignedchar &green, unsignedchar &blue) constcv:Vec3b color = cdetect->getTargetColor();red = color2;green = color1;blue = color0;bool ColorDetectController:setInputImag

17、e(std:string filename)image = cv:imread(filename);if ( !image.data )returnfalse;elsereturntrue;const cv:Mat ColorDetectController:getInputImage() constreturn image;void ColorDetectController:process()result = cdetect->proecess(image);const cv:Mat ColorDetectController:getLastResult() constreturn

18、result;ColorDetectController:ColorDetectController()delete cdetect;void ColorDetectController:destroy()if ( singleton != 0 )delete singleton;singleton = 0;八,雙擊ColourDetectorDlg.h,出現(xiàn)編輯界面,導(dǎo)入頭文件和定義變量colordetect九、添加“Open Image”按鈕和“Process”按鈕的事件處理程序十、分別添加代碼void CColourDetectorDlg:OnBnClickedOpenButton()/ TODO:在此添加控件通知處理程序代碼CFileDialog dlg(TRUE,_T("*.bmp"),NULL,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,_T("image file(*.bmp; *.jpg)|*.bmp; *.jpg|All Files(*.*)|

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論