opencv分水嶺演算法對映像進行分割

來源:互聯網
上載者:User

標籤:opencv   分水嶺演算法   watershed   

先看效果
說明使用分水嶺演算法對映像進行分割,設定一個標記映像能達到比較好的效果,還能防止過度分割。1、這裡首先對閾值化的二值映像進行腐蝕,去掉小的白色地區,得到映像的前景地區。並對前景地區用255白色標記2、同樣對閾值化後的映像進行膨脹,然後再閾值化並取反。得到背景地區。並用128灰階表示3、將前景和背景疊加在一起在同一幅映像中顯示。4、用標記圖和原圖,利用opencv的watershed對映像進行分割。源碼
class WatershedSegment{private:cv::Mat markers;public:void setMarkers(const cv::Mat &image){image.convertTo(markers,CV_32S);}cv::Mat process(const cv::Mat &image) {// Apply watershedcv::watershed(image,markers);markers.convertTo(markers,CV_8U);return markers;}};int _tmain(int argc, _TCHAR* argv[]){cv::Mat image = cv::imread("group.jpg");cv::Mat binary = cv::imread("binary.bmp",0);  //沒加0害得我找好久錯誤的原因,即使"binary.bmp"為二值映像不加0讀進來還是3通道//cv::threshold(image,binary,60,255,CV_THRESH_BINARY);  //閾值化操作//binary = 255 - binary; //讓前景變為白色地區cv::namedWindow("binary",CV_WINDOW_AUTOSIZE);cv::imshow("binary",binary);cv::Mat fImage;cv::erode(binary,fImage,cv::Mat(),cv::Point(-1,-1),6); //binary = 255 - binary; //讓前景變為白色地區//腐蝕去掉小的幹擾物體得到前景映像cv::namedWindow("eroded",CV_WINDOW_AUTOSIZE);cv::imshow("eroded",fImage);cv::Mat bImage;cv::dilate(binary,bImage,cv::Mat(),cv::Point(-1,-1),6);cv::threshold(bImage,bImage,1,128,cv::THRESH_BINARY_INV);//對原始二值映像閾值化並取反,得到背景映像cv::namedWindow("bImage",CV_WINDOW_AUTOSIZE);cv::imshow("bImage",bImage);cv::Mat marker(binary.size(),CV_8U,cv::Scalar(0));marker = fImage + bImage;  //建立標記映像cv::namedWindow("marker",CV_WINDOW_AUTOSIZE);cv::imshow("marker",marker);WatershedSegment segmenter;segmenter.setMarkers(marker);cv::Mat segment = segmenter.process(image);cv::namedWindow("segmenter",CV_WINDOW_AUTOSIZE);cv::imshow("segmenter",segment);cv::waitKey(0);return 0;}

:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.