#include <cv.h>
#include <highgui.h>
#include <math.h>
int main(int argc, char** argv)
{
IplImage* src;
if(argc == 2 && (src=cvLoadImage("qqqq.jpg", 0))!= 0)
{
IplImage* dst = cvCreateImage(cvGetSize(src), 8, 1);
IplImage* color_dst = cvCreateImage(cvGetSize(src), 8, 3);
CvMemStorage* storage = cvCreateMemStorage(0);
CvSeq* lines = 0;
int i;
cvCanny(src, dst, 50, 200, 3);
cvCvtColor(dst, color_dst, CV_GRAY2BGR);
#if 1
lines = cvHoughLines2(dst,
storage,
CV_HOUGH_STANDARD,
1,
CV_PI/180,
100,
0,
0);
for(i = 0; i < MIN(lines->total,100); i++)
{
float* line = (float*)cvGetSeqElem(lines,i);
float rho = line[0];
float theta = line[1];
CvPoint pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cvRound(x0 + 1000*(-b));
pt1.y = cvRound(y0 + 1000*(a));
pt2.x = cvRound(x0 - 1000*(-b));
pt2.y = cvRound(y0 - 1000*(a));
cvLine(color_dst, pt1, pt2, CV_RGB(255,0,0), 3, 8);
}
#else
lines = cvHoughLines2(dst,
storage,
CV_HOUGH_PROBABILISTIC,
1,
CV_PI/180,
80,
30,
10);
for(i = 0; i < lines->total; i++)
{
CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);
cvLine(color_dst, line[0], line[1], CV_RGB(255,0,0), 3, 8);
}
#endif
cvNamedWindow("Source", 1);
cvShowImage("Source", src);
cvNamedWindow("Hough", 1);
cvShowImage("Hough", color_dst);
cvWaitKey(0);
}
}
Я использовал этот код для преобразования «hough transform» в opencv для обнаружения объекта на изображении. и запуск программы без каких-либо ошибок. но в результате появляется только консольное окно и быстро исчезает. что я должен сделать для этого.Как решить ошибку в преобразовании hough в opencv и C++
Программа должна в идеале ждать неопределенно на 'cvWaitKey (0);', но поскольку это не так, я подозреваю, может быть, изображение вообще не загружается (в первом условии if). Можете ли вы перепроверить это? – SuperSaiyan
путь изображения правильный. Есть ли способ проверить, загружен ли образ или нет? – Thar1988
То, как вы это делаете, достаточно хорошо - проверка на то, что возвращаемое значение будет отличным от нуля. Входит ли элемент управления в if-блок? – SuperSaiyan