天天看點

Candy算子 分割 車輛

場景

    鑒于僅僅使用二值化函數對圖像進行處理,無法對車輛和道路進行完全的輪廓分割,是以通過Candy算子在閥值在19的情況下,一定程度上,對車輛的輪廓進行了分割,達到了不錯的效果

代碼

//圖像的Canny邊緣檢測

//By MoreWindows (http://blog.csdn.net/MoreWindows)

#include <opencv2/opencv.hpp>

using namespace std;

IplImage *g_pSrcImage, *g_pCannyImg;

const char *pstrWindowsCannyTitle = "邊緣檢測圖(http://blog.csdn.net/MoreWindows)";

//cvCreateTrackbar的回調函數

void on_trackbar(int threshold)

{

  //canny邊緣檢測

  cvCanny(g_pSrcImage, g_pCannyImg, threshold, threshold * 3, 3);

  cvShowImage(pstrWindowsCannyTitle, g_pCannyImg);

}

int main()

  const char *pstrImageName = "001.jpg";

  const char *pstrWindowsSrcTitle = "原圖(http://blog.csdn.net/MoreWindows)";

  const char *pstrWindowsToolBar = "Threshold";

  //從檔案中載入圖像的灰階圖CV_LOAD_IMAGE_GRAYSCALE - 灰階圖

  g_pSrcImage = cvLoadImage("D:/20170601092226.png", CV_LOAD_IMAGE_GRAYSCALE);

  g_pCannyImg = cvCreateImage(cvGetSize(g_pSrcImage), IPL_DEPTH_8U, 1);

  //建立視窗

  cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);

  cvNamedWindow(pstrWindowsCannyTitle, CV_WINDOW_AUTOSIZE);

  //建立滑動條

  int nThresholdEdge = 1;

  cvCreateTrackbar(pstrWindowsToolBar, pstrWindowsCannyTitle, &nThresholdEdge, 100, on_trackbar);

  //在指定視窗中顯示圖像

  cvShowImage(pstrWindowsSrcTitle, g_pSrcImage);

  on_trackbar(1);

  //等待按鍵事件

  cvWaitKey();

  cvDestroyWindow(pstrWindowsSrcTitle);

  cvDestroyWindow(pstrWindowsCannyTitle);

  cvReleaseImage(&g_pSrcImage);

  cvReleaseImage(&g_pCannyImg);

  return 0;

參考

http://blog.csdn.net/morewindows/article/details/8239625

     本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1596834,如需轉載請自行聯系原作者

繼續閱讀