视频是一帧一帧的图像组成的,在视频上添加文字就是在没一帧上添加图像而已,这么看来这个问题就没有那么难了。

代码如下:#include "highgui.h"

#include "cv.h"

#include "cxcore.h"

#include "stdio.h"

#include 

#include "cxtypes.h"

#include    

#include    

int main(int argc, char* argv[])

{

cvNamedWindow("avi");

CvCapture* capture=cvCreateFileCapture("c:\\2.avi");

printf("hello world\n");

IplImage * frame;

char *a="hello world";

CvFont font;

double fps=0;

double t=0;

t = (double)cvGetTickCount();

while(1)

{

frame=cvQueryFrame(capture);

if (!frame)

{

break;

}

t = ((double)cvGetTickCount() - t) / cvGetTickFrequency();

fps=1.0/t;

printf("fps-->%7f\n",fps);

cvInitFont(&font,CV_FONT_HERSHEY_SCRIPT_COMPLEX, 1.0f,1.0f);

cvPutText(frame, a, cvPoint(100,100),&font,cvScalar(23,66,255));

frame->origin=1;

cvShowImage("avi",frame);

char c=cvWaitKey(100);

if (c==27)

{

break;

}

}

cvReleaseImage(&frame);

cvReleaseCapture(&capture);

cvDestroyWindow("avi");

return 0;

}

结果显示如下:

其中的“hello world”就是要显示的文字

黑框中的是计算出来的fps,也可以显示在文字中

我可能计算有错误,但是这个不是主要问题。

下面是在网上找到的一些资料:

opencv 中的 cvPutText() 函数是加上文字的意思:

cvPutText(CvArr* img, const char* text, CvPoint origin, constCvFont* font, CvScalar color);

函数中各个参数的含义如下所示:

img---图片指针(需要说明的是,CvArr* 等价于void*,一般我们在这里传递一个IplImage*);

text---显然是需要打印到图片上的字符串的内容;

origin---字符串在图片上打印的原点(即,字符串的左下角在图片中的位置)

font---描述字体属性的变量;

color---字体的颜色;

CvFont类型变量的初始化是通过函数cvInitFont来实现的;该函数的申明如下所示:

void cvInitFont(CvFont*font, int font_face, double h_scale, double v_scale, double shear=0, intthickness=1, int line_type=8);

该函数中各个变量的含义如下所示:

font---传入及传出的字体属性类型指针;

font_face---表示字体的类型,其取值只能为以下数值之一:

1. CV_FONT_HERSHEY_SIMPLEX

2. CV_FONT_HERSHEY_PLAIN

3. CV_FONT_HERSHEY_DUPLEX

4. CV_FONT_HERSHEY_COMPLEX

5. CV_FONT_HERSHEY_TRIPLEX

6. CV_FONT_HERSHEY_COMPLEX_SMALL

7. CV_FONT_HERSHEY_SCRIPT_SIMPLEX

8. CV_FONT_HERSHEY_SCRIPT_COMPLEX

h_scale---只能为1或0.5,表示水平方向字体的缩放系数;

v_scale---只能为1或0.5,表示垂直方向字体的缩放系数;

shear---取值从0---1,表示字体的倾斜程度,0表示不倾斜,1表示倾斜45度;

thichness, line_type这两个参数同OpenCV的其它绘图函数中定义的一样,表示线型的宽度和线条的类型;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐