2013-06-13 2 views
0

Мой класс реализует интерфейс CVCameraListener, который имеет способ onCameraFrame(), который возвращает объект Mat, который будет отображаться на экране телефона (этот метод возвращает то, что вы видите на экране телефон)Как вставить строку или прямоугольник в объект Mat (openCV)

Как вставить строку в этот объект Mat? Например, я хотел бы провести линию от (x1, y1) до (x2, y2). В Swing я хотел бы сделать: `g.drawLine (x1, y1, x2, y2)

Метод:

public Mat onCameraFrame(Mat inputFrame) { 
     inputFrame.copyTo(mRgba);  
     return mRgba; 
    } 

ответ

1

OpenCV имеет функции рисования, которые делают именно то, что вы хотите.

Для Java см:

Для C++ см:

+0

Я добавил тег java. В каком классе эти методы, я не могу его найти. – Yoda

+0

Извините, это должно было быть очевидно, что это была Java, но, будучи многоязычным, и только делая OpenCV на C++, я часто не замечаю таких мелких деталей. Я добавил ссылки на Java doco. – Bull

+0

«Ядро» по какой-то причине похоже не имеет метода 'line'. Он где-то переехал? Я понимаю, что документация говорит, что это так, но студия разработчиков Android не может ее найти. –

4

Вы можете использовать метод Imgproc.rectangle для рисования прямоугольника.

Imgproc.rectangle(SrcMat, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), Detect_Color, 5); 

SrcMat ваш мат источник и ваш выход, Первая точка является отправной точкой прямоугольника, Последней точки окончания точки прямоугольника, Detect_Color только скалярным как new Scalar(0, 255, 0, 255); 5 является толщиной прямоугольника