Что такое V4L / AVLD в opencv?

Я следую инструкциям на этой странице: http://wiki.elphel.com/index.php?title=OpenCV_Tennis_balls_recognizing_tutorial
обнаружить теннисный мяч. Этот код может быть запущен для Python, и для морфологических операций требуется V4L / AVLD. это функция использования cvClose() а также cvOpen() расширить и разрушить маску. Я пишу свой код на C ++, так cvDilate() а также cvErode() Вместо этого используются, но результат не так хорош, как этот сайт.

Вот мой результат:output.jpg. (я извиняюсь, потому что у меня недостаточно репутации, чтобы разместить изображение T_T)
Вот мой полный код:

#include "highgui.h"#include "cv.h"void main()
{
IplImage* img = cvLoadImage("tennis.jpg",1);
CvSize size = cvGetSize(img);
IplImage *hsv = cvCreateImage(size, IPL_DEPTH_8U, 3);
cvCvtColor(img, hsv, CV_BGR2HSV);
CvMat *mask = cvCreateMat(size.height, size.width, CV_8UC1);
cvInRangeS(hsv, cvScalar(0.11*256, 0.60*256, 0.20*256, 0),
cvScalar(0.14*256, 1.00*256, 1.00*256, 0), mask);
cvReleaseImage(&hsv);
IplConvKernel *se21 = cvCreateStructuringElementEx(21, 21, 10, 10, CV_SHAPE_RECT, NULL);
IplConvKernel *se11 = cvCreateStructuringElementEx(11, 11, 5,  5,  CV_SHAPE_RECT, NULL);
cvErode(mask, mask, se21);
cvDilate(mask, mask, se11);
cvReleaseStructuringElement(&se21);
cvReleaseStructuringElement(&se11);

/* Copy mask into a grayscale image */
IplImage *hough_in = cvCreateImage(size, 8, 1);
cvCopy(mask, hough_in, NULL);
cvSmooth(hough_in, hough_in, CV_GAUSSIAN, 15, 15, 0, 0);

/* Run the Hough function */
CvMemStorage *storage = cvCreateMemStorage(0);
CvSeq *circles = cvHoughCircles(hough_in, storage,CV_HOUGH_GRADIENT, 4, size.height/10, 100, 40, 0, 0);
cvReleaseMemStorage(&storage);
int i;
for (i = 0; i < circles->total; i++) {
float *p = (float*)cvGetSeqElem(circles, i);
CvPoint center = cvPoint(cvRound(p[0]),cvRound(p[1]));
CvScalar val = cvGet2D(mask, center.y, center.x);
if (val.val[0] < 1) continue;
cvCircle(img,  center, 3,             CV_RGB(0,255,0), -1, CV_AA, 0);
cvCircle(img,  center, cvRound(p[2]), CV_RGB(255,0,0),  3, CV_AA, 0);
cvCircle(mask, center, 3,             CV_RGB(0,255,0), -1, CV_AA, 0);
cvCircle(mask, center, cvRound(p[2]), CV_RGB(255,0,0),  3, CV_AA, 0);
}

cvNamedWindow( "Output", CV_WINDOW_AUTOSIZE );
cvShowImage( "Output", img );
cvNamedWindow( "mask", CV_WINDOW_AUTOSIZE );
cvShowImage( "mask", mask );
cvWaitKey(0);
}

Может ли кто-нибудь помочь мне получить V4L / AVLD и улучшить этот код? большое спасибо вам.

1

Решение

V4L / AVLD для веб-камеры. Это не имеет ничего общего с кодом или алгоритмом. http://allonlinux.free.fr/Projets/AVLD/

Если вы используете Linux, для использования веб-камеры необходимо установить пакет v4l-utls.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector