Я пытаюсь определить толщину круга, который я получил от кода ниже, но я не могу этого сделать.Найти толщину круга, обнаруженного из контура?
Основная идея состоит в том, чтобы перемещаться по кругу, и если в любой точке толщина меньше, чем другая, это означает, что это отклоненный круг.
Я нашел это на Google, но я не знаю, как поставить его в код:
http://answers.opencv.org/question/28180/measuring-edge-thickness-using-opencv
Код:
IplImage* mainimg = cvLoadImage("C:\\3.png",CV_LOAD_IMAGE_GRAYSCALE); //change the name (image.jpg) according to your Image filename.
if (!mainimg)
{
cout <<"Image can NOT Load!!!";
return 1;
}
IplImage* srcimg=cvCreateImage(cvGetSize(mainimg),mainimg->depth,1);
IplImage* inrangeimg=cvCreateImage(cvGetSize(mainimg),mainimg->depth,1);
IplImage* erodeimg=cvCreateImage(cvGetSize(mainimg),mainimg->depth,1);
IplImage* erodeimg1=cvCreateImage(cvGetSize(mainimg),mainimg->depth,1);
IplImage* subimg=cvCreateImage(cvGetSize(mainimg),mainimg->depth,1);
IplImage* finalimage=cvCreateImage(cvGetSize(mainimg),mainimg->depth,1);
IplImage* finalimage1=cvCreateImage(cvGetSize(mainimg),mainimg->depth,1);
cvAdaptiveThreshold(mainimg,srcimg,255,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,11,-23);
cvInRangeS(mainimg,cvScalar(50,50,50),cvScalar(255,255,255),inrangeimg);
cvErode(inrangeimg,erodeimg,0,8);
cvSub(inrangeimg,erodeimg,subimg,0);
cvAnd(srcimg,subimg,finalimage,0);
cvShowImage("final",finalimage);
cvWaitKey(0);
После этого, я знаю, мне нужно найти контур, но как я могу получить толщину круга и проехать по кругу, чтобы получить дефектный? Я не хочу, чтобы получить количество пикселей и обнаружить дефектный круг ...
Когда я запускаю приведенный выше код, я получаю это image
OpenCV является DEAD. такой код больше не должен быть написан. используйте C++ api. – berak
@berak Я знаю это, даже если я перехожу в C++, вопрос остается тем же. выше allvthis небольшой код большой проект, уже выполненный в c.:-( –
Можете ли вы быть более конкретными по кругам дефектов: они имеют неравномерную толщину сами по себе (на стороне толще другой), или они толще/тоньше, чем другие круги? – Mahm00d