EmguCV(OpenCV)实现高效显示视频(YUV)叠加包括汉字

简介: 原文:EmguCV(OpenCV)实现高效显示视频(YUV)叠加包括汉字  视频处理中,往往需要在上面增加文字包括汉字英文字母数字标点等,Emgu.CV/opencv 绘图 线面文字包括中文 这篇里也有相关介绍,但是这篇里根据逐像素修改rgb值的方法效率太低    查了很多资料,基本上opencv叠加汉字的方法都起源于这里 http://wenku.
原文: EmguCV(OpenCV)实现高效显示视频(YUV)叠加包括汉字

 

视频处理中,往往需要在上面增加文字包括汉字英文字母数字标点等,Emgu.CV/opencv 绘图 线面文字包括中文 这篇里也有相关介绍,但是这篇里根据逐像素修改rgb值的方法效率太低 

 

查了很多资料,基本上opencv叠加汉字的方法都起源于这里

http://wenku.baidu.com/link?url=g1dCXwRbSpy7XUhsStRLANQRmvAXKSAa1ohrphx1R3XSZozi68WrTOrKjbxRnh9jWvF9Ass2SZKnvFrGE2ctCpZadNndhFrQzyj6XzLYZ1S

两个for循环逐像素修改,在高清视频里要修改的像素点量是非常巨大的,40ms一帧(25fps)Image<Bgr, Byte>的显示基本不可能(C#估计效率比C++稍低)

 

注意到Image<Bgr, Byte>有Bitmap方法,

Image<Bgr, Byte> image = new Image<Bgr, Byte>(640, 480); 

Bitmap bmp = image.Bitmap;

 

而在Bitmap 里用C# GDI画图效率是很高的,于是获取Bitmap

画图形文字方法可以参考前几篇:

C# winform开发:Graphics、pictureBox同时画多个矩形

c# winform 动态画矩形 矩形大小可以拖动

GDI画图,判断鼠标点击点在某一画好的多边形、矩形、图形里

平面内,线与线 两条线找交点 两条线段的位置关系(相交)判定与交点求解 C#

 

更多的GDI画图方法很简单的,主要获取控件的Graphics 

Graphics g = panel1.CreateGraphics

然后各种draw函数比opencv等提供的画线函数强多了

 

然后尝试使用C#自带的picturebox显示画好的Bitmap,发现picturebox过几分钟就崩溃了打了个大叉叉,报内存错误。

怎么办呢?

image.Bitmap = bmp;

尝试把画好的bmp重新设置为image.Bitmap ,运行正常

 

测试效率满足需要,同时使用Emgu.CV.UI.ImageBox显示image未发现延时、卡顿等现象,并且运行一天仍然正常。

g.DrawString("EmguCV显示汉字", font16, new SolidBrush(Color.Red), new Point(1500, 100));

 

 

很简单的方法,研究了一段时间。网上没发现相关的文章,关于叠加文字全是如上论文所描述的情形,使用起来很糟糕,所以分享一下。

 

摄像机视频帧解码出yuv转换Image<Bgr, Byte>参考之前的文章:

yuv420p转为emgucv的图像格式Emgu.CV.Image<Bgr, Byte>

 

目录
相关文章
|
4月前
|
传感器 API 开发工具
OpenCV视频读写模块(videoio)
OpenCV视频读写模块(videoio)
OpenCV视频读写模块(videoio)
|
6月前
|
存储 编译器 数据库
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV核心类型 Mat
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV核心类型 Mat
|
2月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
96 0
|
4月前
|
计算机视觉 Python
OpenCV获取视频文件的属性并动态显示实战(附Python源码)
OpenCV获取视频文件的属性并动态显示实战(附Python源码)
47 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
55 1
|
3月前
|
存储 监控 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C++)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C++)
35 0
|
3月前
|
计算机视觉 Python 索引
【Python Opencv】图片与视频的操作
【Python Opencv】图片与视频的操作
【Python Opencv】图片与视频的操作
|
4月前
|
缓存 算法 计算机视觉
OpenCV图像处理-视频分割静态背景-MOG/MOG2/GMG
1.概念介绍 视频背景扣除原理:视频是一组连续的帧(一幅幅图组成),帧与帧之间关系密切(GOP/group of picture),在GOP中,背景几乎是不变的,变的永远是前景。
84 0
|
6月前
|
计算机视觉
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV视频lO接口
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV视频lO接口
|
3月前
|
算法 API 开发工具
Baumer工业相机堡盟工业相机如何使用BGAPISDK和OpenCV生成视频(C++)
Baumer工业相机堡盟工业相机如何使用BGAPISDK和OpenCV生成视频(C++)
25 0