c语言opencv显示图片,C/C++知识点之利用OpenCV给图像添加中文标注

本文主要向大家介绍了C/C++知识点之利用OpenCV给图像添加中文标注,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

OpenCV不支持汉字输出,参考了网上的相关内容,将解决步骤简要记录如下:

1、从 http://download.savannah.gnu.org/releases/freetype/ 下载FreeType库,windows下,根据自己用的编译器版本,打开相应的工程文件。比如,我用的VS2008,则打开目录 \builds\win32\vc2008 下的工程文件,编译成功,关闭工程退出。

2、编译成功后,在工具->选项->C++目录中添加freetype下的include文件夹以及lib文件夹,将objs\win32\vc2008中的库文件添加到当前工程的附加依赖项中。

3、参考opencv中文论坛这篇帖子: http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=2083&hilit=汉字 直接copy前两个源码文件,保存为CvxText.h和CvxText.cpp,分别添加到当前工程中。

4、接下来就可以直接调用函数了,最简单的例子:

IplImage *img = cvLoadImage("test.jpg", 1);

CvxText text("simsun.ttf");//这个是系统自带的宋体字体文件,可以选别的

const char *msg = "汉字";

float p = 0.5;

text.setFont(NULL, NULL, NULL, &p);   // 透明处理(第二个参数可以设置字体大小旋转等)

text.putText(img, msg, cvPoint(100, 150), CV_RGB(255,0,0));

这样就可以往图像test.jpg中坐标为(100,150)的位置添加红色的“汉字”二字啦。

//-----------------------------------------------------------------------------

注意:需要显示的图片一定是IplImage的 下面是Opencv Mat与Iplimage的相互转换:

1、将Mat转换为IplImage

//! converts header to IplImage; no data is copied

operator IplImage() const;

举例:Mat img;

IplImage *src;

src=&IplImage(img);

2、将IplImage转换为Mat

//! converts old-style IplImage to the new matrix; the data is not copied by default

Mat(const IplImage* img, bool copyData=false);

//-----------------------------------------------------------------------------------------------

CvxText.h 代码:

// CvxText.h

#ifndef OPENCV_CVX_TEXT_2007_08_31_H

#define OPENCV_CVX_TEXT_2007_08_31_H

#include

#include FT_FREETYPE_H

#include

class CvxText

{<

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值