天天看點

OpenCV用C畫線代碼示例

工作原因,需要用C調用 OpenCV

,在視訊畫面上畫線。經過一番折騰,确實把線畫出來了。也許有人需要,這裡就發出來。

  從視訊得到一個緩沖區(RGBA),然後繪制一個斜線。其他的資料源、繪制要求,也很容易了。

#include <imgproc/imgproc_c.h>
#include <highgui/highgui_c.h>
#include <core/core_c.h>
 
//注意opencv要求格式為gbr,會導緻紅藍颠倒
int gh_trace_draw_track(FrameData* pFrame)
{
    CvPoint p1;
    CvPoint p2;
    CvScalar color;
    CvSize size;
 
    if (!(pFrame->buffer.data))
    {
        return 0;
    }
    size.width = pFrame->size2d.width;
    size.height= pFrame->size2d.height;
 
    //根據不同格式,使用對應的大小
    IplImage* iplImage = cvCreateImageHeader(size, IPL_DEPTH_8U, SIZE_ARGB);
    cvSetData(iplImage, pFrame->buffer.data, size.width*SIZE_ARGB);
 
    p1.x = 0;
    p1.y = 0;
 
    p2.x = size.width;
    p2.y = size.height;
 
    color.val[0] = 0xFF;
    color.val[1] = 0;
    color.val[2] = 0xFF;
    color.val[3] = 0;
 
    // 可以用cvPoint(x1,y1)的寫法
    cvLine(iplImage, p1, p2, color, 1, 8, 0);
 
    return 0;
}      

畫矩形

cvRectangle(iplImage, cvPoint(x1,y1), cvPoint(x2,y2), color, CV_FILLED, 8, 0);      

繼續閱讀