opencv给视频添加文字­_ cvPutText使用说明

转载自http://blog.csdn.net/zhuzhudeailnn/article/details/8969973

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的其它绘图函数中定义的一样,表示线型的宽度和线条的类型;

 

最常用的语句:

IplImage* img = cvCreateImage(cvSize(width,height), IPL_DEPTH_8U,3 );

        char text[20] = "To print!";

        CvPoint point = cvPoint(10, 10);

        CvFont font;

        cvInitFont(&font,CV_FONT_HERSHEY_DUPLEX, 1.0f,1.0f, 2, CV_AA);

        cvPutText(img, text, point, &font,CV_RGB(255, 0, 0) );

      

实例:

#include "stdafx.h"

#include "cv.h" 

#include "highgui.h" 

#include "cxcore.h"

#include "iostream" 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 

   IplImage* pImg = cvLoadImage("c:\\lena.jpg"); 

   if (!pImg) 

   { 

       cout<<"pImg load error..."<<endl; 

       system("pause"); 

        exit(-1); 

    } 

    CvFont font; 

    cvInitFont(&font,CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5, 1, 2, 8); 

   cvPutText(pImg,"This is a picture named lena!", cvPoint(50,50), &font, CV_RGB(255,0,0));       

   cvSaveImage("c:\\test1.jpg", pImg);   

   cvNamedWindow("img", 0); 

   cvShowImage("img", pImg); 

   cvWaitKey(0);   

   system("pause"); 

   cvReleaseImage(&pImg); 

   cvDestroyAllWindows();   

   return 0; 


Opcv中文网:

http://www.opencv.org.cn/index.php/Cxcore%E7%BB%98%E5%9B%BE%E5%87%BD%E6%95%B0#InitFont


可以使用 OpenCV 库中的 cv2.putText() 函数来给视频添加文字。下面是一个示例代码,可以将文字添加视频中: ```python import cv2 # 打开视频文件 cap = cv2.VideoCapture('video.mp4') # 获取视频帧率 fps = int(cap.get(cv2.CAP_PROP_FPS)) # 定义视频编解码器、视频宽高、输出视频文件名 fourcc = cv2.VideoWriter_fourcc(*'mp4v') width, height = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) out = cv2.VideoWriter('output.mp4', fourcc, fps, (width, height)) # 定义要添加文字 text = "Hello, World!" # 循环读取视频帧并添加文字 while True: ret, frame = cap.read() if not ret: break # 在视频帧上添加文字 cv2.putText(frame, text, (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) # 写入输出视频文件 out.write(frame) # 释放资源 cap.release() out.release() cv2.destroyAllWindows() ``` 在代码中,我们首先使用 cv2.VideoCapture() 函数打开视频文件,并获取视频的帧率。然后定义了视频编解码器、视频宽高和输出视频文件名,并创建了一个 cv2.VideoWriter 对象。接着进入循环,读取视频帧并在每一帧上添加文字,最后将帧写入输出视频文件。最后释放资源,程序结束。 需要注意的是,cv2.putText() 函数的参数含义如下: - frame: 待添加文字视频帧 - text: 要添加文字内容 - (50, 50): 文字左下角的坐标 - cv2.FONT_HERSHEY_SIMPLEX: 字体类型 - 1: 字体大小 - (0, 255, 0): 文字颜色 - 2: 文字粗细
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值