2016-03-10 3 views

ответ

1

OpenCV не обеспечивает стили. Вы можете рисовать только прямоугольник с заданным цветом, с 4/8 подключенными или с точками сглаживания с заданной толщиной.

Вы можете, однако, просто нарисовать 8 линий выздоравливающих координаты из прямоугольника:

enter image description here

код довольно прост:

#include <opencv2/opencv.hpp> 
using namespace cv; 

void drawDetection(Mat3b& img, const Rect& r, Scalar color = Scalar(0,255,0), int thickness = 3) 
{ 
    int hor = r.width/7; 
    int ver = r.height/7; 

    // Top left corner 
    line(img, r.tl(), Point(r.x, r.y + ver), color, thickness); 
    line(img, r.tl(), Point(r.x + hor, r.y), color, thickness); 

    // Top right corner 
    line(img, Point(r.br().x - hor, r.y), Point(r.br().x, r.y), color, thickness); 
    line(img, Point(r.br().x, r.y + ver), Point(r.br().x, r.y), color, thickness); 

    // Bottom right corner 
    line(img, Point(r.br().x, r.br().y - ver), r.br(), color, thickness); 
    line(img, Point(r.br().x - hor, r.br().y), r.br(), color, thickness); 

    // Bottom left corner 
    line(img, Point(r.x, r.br().y - ver), Point(r.x, r.br().y), color, thickness); 
    line(img, Point(r.x + hor, r.br().y), Point(r.x, r.br().y), color, thickness); 
} 

int main() 
{ 
    // Load image 
    Mat3b img = imread("path_to_image"); 

    // Your detection 
    Rect detection(180, 160, 220, 240); 

    // Custom draw 
    drawDetection(img, detection); 

    imshow("Detection", img); 
    waitKey(); 

    return 0; 
} 
+0

Спасибо! Это было намного лучше, чем я ожидал. –

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