2013-07-25 2 views
-4

Я хочу нарисовать круг, используя события мыши в opencv.Хотите нарисовать круг в изображении с помощью событий мыши (Opencv)

Это когда я нажимал левую кнопку и перетаскивал ее, она должна рисовать круг в соответствии с положением x и y мыши. Я попробовал его для прямоугольника, его работа отлично. Но я не знаю как рисовать круг..Пожалуйста, помогите мне.

ответ

1

вы можете использовать следующую функцию, чтобы установить функцию обратного вызова для окна

SetMouseCallback 

документация здесь:

http://docs.opencv.org/modules/highgui/doc/user_interface.html

для кругов вы можете использовать функцию:

circle(Mat& img, Point center, int radius, const Scalar& color, int thickness=1, int lineType=8, int shift=0) 

документация здесь:

http://opencv.willowgarage.com/documentation/cpp/drawing_functions.html

+0

да для рисования прямоугольника, я использовал это и знаю, что для использования мыши необходимо вызвать функцию SetMouseCallback ... Но после того, как proceed.I не знаю, как использовать радиус окружности и центр через функцию SetMouseCallback. В этом только я был поражен ... Пожалуйста, помогите мне .... – user2459619

+0

Вам нужно сначала изображение, в котором вы хотите нарисовать круг. Это рекурсивная операция, поэтому вам понадобится цикл while, чтобы перерисовать изображение или просто перерисовать его в функции обратного вызова. Простым способом является определение вашего объекта img глобально, как здесь: http://code.opencv.org/projects/opencv/repository/revisions/master/entry/samples/cpp/ffilldemo.cpp. Вы можете передать изображение с недействительной точкой вашего обратного вызова. В вашем обратном вызове вы можете легко написать cv :: circle (img, cv :: Point point (x, y), 10, cv :: Scalar (255, 0, 255)); imshow («Window», img); – jamk

Смежные вопросы