opencv3.1.0中的霍夫變換,標準霍夫變換一直沒辦法顯示結果。不知道是不是引數設定不合理?
代碼及結果如下:


clock_t start, finish;
double totaltime;
start = clock();
IplImage *sourceImage;
sourceImage = cvLoadImage("E:\\1.bmp",0);
IplImage*destImage = cvCreateImage(cvGetSize(sourceImage), 8, 1);
IplImage*colorImage = cvCreateImage(cvGetSize(sourceImage), 8, 3);
CvMemStorage *storage = cvCreateMemStorage(0);
CvSeq *lines = 0;
cvCanny(sourceImage, destImage, 50, 200, 3);
cvCvtColor(destImage, colorImage, CV_GRAY2BGR);//轉換邊緣檢測后的圖為灰度圖
lines = cvHoughLines2(destImage, storage, CV_HOUGH_STANDARD, 1, CV_PI /180, 80, 0, 0);
int count = lines->total;
int index;
for (index = 0; index < lines->total; index++)
{
CvPoint* line = (CvPoint*)cvGetSeqElem(lines, index);
cvLine(colorImage, line[0], line[1], CV_RGB(255, 0, 0), 1, 8);
}
finish = clock();
totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
cout << "\n提取出的直線條數為:" << count << endl;
cout << "\n此程式的運行時間為:" << totaltime << "秒" << endl;
cvNamedWindow("SOURCEIMAGE", 1);
cvShowImage("SOURCEIMAGE", sourceImage);
cvNamedWindow("COLORIMAGE", 1);
cvShowImage("COLORIMAGE", destImage);
cvNamedWindow("Hough", 1);
cvShowImage("HOUGH", colorImage);
cvWaitKey(0);
return 0;
storage = NULL;
sourceImage == NULL;
destImage = NULL;
colorImage = NULL;
lines = NULL;
uj5u.com熱心網友回復:
建議先參考OpenCV自帶的相關例子代碼。uj5u.com熱心網友回復:
opencv3 ,但是目測你用的都是opencv1的函式啊 比如cvloadimage?這種cv打頭的opencv2里面不都是imread這種么?
uj5u.com熱心網友回復:
Hough變換檢測直線效果不好,可以考慮用LSD線段檢測uj5u.com熱心網友回復:
直接對edge影像houghline啊,轉成灰度圖是個什么鬼uj5u.com熱心網友回復:
另外建議樓主用3.0轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/156006.html
標籤:圖形處理/算法
