opencv 叠加文字_EmguCV(OpenCV)实现高效显示汉字及叠加

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

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

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

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

注意到Image有Bitmap方法,

Image image = new Image(640, 480);

Bitmap bmp= image.Bitmap;

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

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

更多的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参考之前的文章:

原文:http://www.cnblogs.com/jhlong/p/5434536.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值