【opencv】opencv在图片、视频嵌中英文字符的方法

时间:2022-09-26 10:12:55

转自:http://www.cnblogs.com/hujingshuang/p/5119015.html

说明:本博文是根据前人已有的成果并结合自己的理解而成的。为了避免让读者感到繁琐,我将运用小学及初中学习的总分总、承上启下的写作技巧进行讲解,力图做到详略有致,言简意赅,图文并茂,通俗易懂。

实验平台:VS2010 + opencv2.4.10 (其他版本搭配也是一样的做法)

简介:在opencv中,不可避免的会遇到在一幅图像、一段视频或者实时的监控画面上嵌入特定的文字来标识,让人一目了然。那么怎么利用opencv在这些对象上嵌入英文或者是汉字呢?下面切入正题,就嵌入英文和中文字符2个部分,分别做阐述。

一、嵌入英文字符(opencv自带函数)

这一部分比较简单,利用opencv自带的cvInitFont()和cvPutText()函数就可以了。【具体使用方法请百度,这里不做详细说明】

直接放上演示代码和效果图。

demo1源码:

  1. #include<iostream>
  2. #include<opencv2/highgui/highgui.hpp>
  3. using namespace cv;
  4. int main(void)
  5. {
  6. IplImage *img = cvLoadImage("wall.jpg");
  7. CvFont font;
  8. cvInitFont(&font, CV_FONT_HERSHEY_DUPLEX, 1, 1, 0, 2, 4);
  9. cvPutText(img, "This is demo 1.", cvPoint(200, 65), &font, CV_RGB(255, 0, 0));
  10. cvPutText(img, "http://blog.csdn.net/hujingshuang", cvPoint(20, 125), &font, CV_RGB(255, 0, 0));
  11. cvNamedWindow("demo1:图片嵌入字符", CV_WINDOW_AUTOSIZE);
  12. cvShowImage("demo1:图片嵌入字符", img);
  13. cvWaitKey(0);
  14. cvDestroyWindow("demo1:图片嵌入字符");
  15. return 0;
  16. }

demo1效果图:

.     【opencv】opencv在图片、视频嵌中英文字符的方法

 二、嵌入中文字符(FreeType)
               这一部分比较麻烦,但只需按照下面的步骤一步一步来就行,为方便叙述,我以自己的opencv安装目录为例(D:\opencv),请读者根据自己的目录操作。
              1、首先,下载两个文件。

①FreeType(版本随意):我用的是freetype-2.5.5,下载地址:http://sourceforge.net/projects/freetype/files/freetype2/

②simhei.ttf字体工具:如果你的C:\Windows\Fonts\目录下有,就不用下载。【一般情况下都有】

2、其次,需要两个lib库支持。即:freetype255.lib与freetype255d.lib,需要由自己编译得到。用vs2010打开..\freetype-2.5.5\builds\windows\vc2010\freetype.sln解决方案(与vs版本对应),在Debug模式下按F5编译,待编译完毕;再切到Release模式下F5,如果编译中出现错误,不要理会。此时在目录freetype-2.5.5\objs\vc2010\Win32下已生成了两个lib,将其复制到D:\opencv\build\x86\vc10\lib文件夹下。
              3、在D:\opencv\build\include下新建文件夹freetype,将..\freetype-2.5.5\下的include和src,以及CvxText.cpp、CvxText.h、stdafx.cpp、stdafx.h、targetver.h拷贝到此文件夹下,至此繁琐的工作已做完。【此处说明:需要修改CvxText.cpp文件,即:在CvxText.cpp文件首行添加#include”stdafx.h”,在函数setFont末尾加入FT_Set_Pixel_Sizes(m_face,
(int)m_fontSize.val[0], 0)语句,附件包中已做了修改】

.

【opencv】opencv在图片、视频嵌中英文字符的方法

4、下面新建一个空项目,将CvxText.cpp拷到项目目录下,并添加到ResourceFiles,接下来就很简单了。

.

【opencv】opencv在图片、视频嵌中英文字符的方法

在项目属性里添加include路径:

.

【opencv】opencv在图片、视频嵌中英文字符的方法

再添加lib路径:D:\opencv\build\x86\vc10\lib

.

【opencv】opencv在图片、视频嵌中英文字符的方法

在Linker—>Input中增加依赖项:freetype255d.lib、freetype255.lib

.

【opencv】opencv在图片、视频嵌中英文字符的方法

这样配置就完成了,接下来就是代码和效果图:

demo2源码:

  1. #include<iostream>
  2. #include<stdlib.h>
  3. #include<opencv2/core/core.hpp>
  4. #include<opencv2/highgui/highgui.hpp>
  5. #include<opencv2/imgproc/imgproc.hpp>
  6. #include<opencv/CvxText.h>
  7. int main(void)
  8. {
  9. IplImage *img = cvLoadImage("wall.jpg");
  10. CvxText text("C:\\WINDOWS\\Fonts\\simhei.ttf");//此目录下有很多tff格式文件,有兴趣可一一实验,选择最喜欢的字体。
  11. float p = 1;
  12. text.setFont(NULL, NULL, NULL, &p);   // 透明处理
  13. text.putText(img, "demo2:图片嵌入中文字符", cvPoint(180, 65), CV_RGB(0,0,255));
  14. text.putText(img, "参见博客:http://blog.csdn.net/hujingshuang", cvPoint(120, 110), CV_RGB(0,0,255));
  15. cvNamedWindow("demo2:图片嵌入中文字符", CV_WINDOW_AUTOSIZE);
  16. cvShowImage("demo2:图片嵌入中文字符", img);
  17. cvWaitKey(0);
  18. cvDestroyWindow("demo2:图片嵌入中文字符");
  19. return 0;
  20. }

demo2效果图:

.   【opencv】opencv在图片、视频嵌中英文字符的方法

至此,利用opencv在图像中嵌入中英文字符已讲解完毕。由此及彼,便可在视频中嵌入感兴趣的字符。源码及所有需要的文件都已打包上传,详情下载附件:http://download.csdn.net/detail/hujingshuang/8394121

高版本opencv接口

Mat img = imread( "lena.jpg", 1 );
string text = "lena,female";
Point pt(50,100);
Scalar color = CV_RGB(0,255,255);
putText(img,text,pt,CV_FONT_HERSHEY_DUPLEX,1.0f,color);

【opencv】opencv在图片、视频嵌中英文字符的方法的更多相关文章

  1. 基于OpenCv和swing的图片&sol;视频展示Java实现

    基于OpenCv和swing实现图片/视频的展示 图片的展示 swing展示图片,多为操作BufferedImage,这里要关注的核心是将Mat转为BufferedImage. 代码如下: publi ...

  2. OpenCV入门之获取验证码的单个字符(二)

      在文章 OpenCV入门之获取验证码的单个字符(字符切割)中,介绍了一类验证码的处理方法,该验证码如下: 该验证码的特点是字母之间的间隔较大,很容易就能提取出其中的单个字符.接下来,笔者将会介绍如 ...

  3. OpenCV入门之获取验证码的单个字符(字符切割)

    介绍   在我们日常上网注册账号以及制作网络爬虫时,经常会遇到奇奇怪怪的验证码,有些容易,有些连人眼都无法辨识.于是,大牛们想到了用深度学习的方法来破解验证码,对于一般的验证码往往能出奇制胜,取得不俗 ...

  4. OpenCV获取IP摄像头视频

    从开源中国博客搬来,合并博客 实验室做一个智能小车的小项目,期间涉及到在PC端处理小车摄像头的视频.这里先用安卓手机代替一下进行试验.大致流程就是手机摄像头获取视频,开启一个IP摄像头服务软件,在局域 ...

  5. 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?

      分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...

  6. csharp通过dll调用opencv函数,图片作为参数

    [blog 项目实战派]csharp通过dll调用opencv函数,图片作为参数          ​一直想做着方面的研究,但是因为这个方面的知识过于小众,也是由于自己找资料的能力比较弱,知道今天才找 ...

  7. TensorFlow与OpenCV,读取图片,进行简单操作并显示

    TensorFlow与OpenCV,读取图片,进行简单操作并显示 1 OpenCV读入图片,使用tf.Variable初始化为tensor,加载到tensorflow对图片进行转置操作,然后openc ...

  8. 为OPENCV添加freetype支持并显示中文字符&lpar;在mac上编译opencv及contrib库&rpar;

    在mac电脑上管理这些gnu的库一般都使用Homebrew,但总有一些你个性化的需要是官方的Homebrew配方无法满足的.比如在屏幕的输出中使用中文字符. 在OPENCV中输出UTF8字符集早已经有 ...

  9. Kafka&plus;OpenCV 实现实时流视频处理

     1. 启动Kafka Server bin/kafka-server-start.sh config/server.properties & 2. 创建一个新topic bin/kafka- ...

随机推荐

  1. 利用其它带文件防护功能的软件防止&ast;&period;asp&semi;&ast;&period;jpg写入文件。

    此木马是一个.NET程序制作,如果你的服务器支持.NET那就要注意了,,进入木马有个功能叫:IIS Spy,点击以后可以看到所有站点所在的物理路径.以前有很多人提出过,但一直没有人给解决的答案.. 防 ...

  2. 关于H5本部缓存localStorage,sessionStorage

    HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 coo ...

  3. php连接ftp的研究&comma;自带ftp函数 &vert; fsockopen &vert; curl实现ftp的连接

    持续更新中..............

  4. OpenSSL 使用 base64 编码&sol;解码

    简述 关于 OpenSSL 的介绍及安装请参见:Windows下编译OpenSSL 下面主要介绍有关 OpenSSL 使用 base64 编码/解码. 简述 编码解码 更多参考 编码/解码 #incl ...

  5. bootstrap-datetimepicker 时间表箭头不能显示

    我使用的是bootstrap-datetimepicker+bootstrap v3,但这个插件使用的时候,并没有和V3相匹配,仍然调用的是bootstrap V2的图标,代码是: <i cla ...

  6. Yii 多表关联relations,需要与with&lpar;&rpar;方法联合使用

    1,首先多表关联是在models/xx.php的relations里配置的.而且是互配,但有区别. 格式: 'VarName'=>array('RelationType', 'ClassName ...

  7. xPool - 基于mysqlclient的mysql的c&plus;&plus;连接池 - xnhcx的个人空间 - 开源中国社区

    xPool - 基于mysqlclient的mysql的c++连接池 - xnhcx的个人空间 - 开源中国社区 xPool - 基于mysqlclient的mysql的c++连接池

  8. 1091&period; Acute Stroke &lpar;30&rpar;

    题目如下: One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given ...

  9. 【转载】Elasticsearch 5&period;x 字段折叠的使用,广度搜索

    https://elasticsearch.cn/article/132 备注,分组字段只能是 keyword或num类型,不能是text类型 在 Elasticsearch 5.x 有一个字段折叠( ...

  10. Django&plus;Vue&period;js框架快速搭建web项目

    一.vue环境搭建1.下载安装node.js.2.安装淘宝镜像cnpm,在命令窗口输入: npm install -g cnpm --registry=https://registry.npm.tao ...