工作原因,需要用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);