cvPutText opencv中汉字的输出
c语言printf打印汉字的用法
c语言printf打印汉字的用法C语言中使用printf函数打印汉字的用法
在C语言中,我们可以使用printf函数来打印输出汉字。
下面是使用printf函
数打印汉字的简单示例:
1. 首先,确保你的代码文件以UTF-8编码保存,以支持汉字字符的输入和输出。
2. 使用"%s"格式化说明符打印字符串时,需要将汉字字符保存在一个字符数组中,确保数组的大小足够容纳汉字字符。
3. 示例代码如下所示:
```c
#include <stdio.h>
int main() {
char chinese[] = "你好,世界!"; // 包含汉字的字符数组
printf("%s\n", chinese); // 使用"%s"格式化说明符打印汉字
return 0;
}
```
在上面的示例中,我们定义了一个名为chinese的字符数组,其中保存了一个
包含汉字的字符串。
然后,我们使用printf函数和"%s"格式化说明符来打印这个字
符数组。
注意事项:
- 请确保正确设置你的编译环境以支持UTF-8编码和打印汉字。
- 如果你在终端中输出乱码,请检查终端的字符编码设置是否为UTF-8。
- 在一些特殊情况下(例如Windows的命令行窗口),可能需要使用特殊函数或库来支持汉字的打印,请参考相关文档和资料进行调整。
通过上述示例,你可以在C语言中使用printf函数打印汉字。
记住适当设置编码和环境参数,以确保正确打印和显示汉字字符。
PythonOpenCV实现图片上输出中文
PythonOpenCV实现图⽚上输出中⽂OpenCV中在图⽚上输出中⽂⼀般需要借助FreeType库实现。
FreeType库是⼀个完全免费(开源)的、⾼质量的且可移植的字体引擎,它提供统⼀的接⼝来访问多种字体格式⽂件。
但使⽤FreeType需要下载库并重新编译,过程⿇烦⼀点。
在Python中,可以借助PIL(Python Imaging Library)模块实现,相对简单很多,需要做的只是对图像进⾏OpenCV格式和PIL格式的相互转换。
# -*- coding: utf-8 -*-import cv2import numpyfrom PIL import Image, ImageDraw, ImageFontif __name__ == '__main__':img_OpenCV = cv2.imread('01.jpg')# 图像从OpenCV格式转换成PIL格式img_PIL = Image.fromarray(cv2.cvtColor(img_OpenCV, cv2.COLOR_BGR2RGB))# 字体字体*.ttc的存放路径⼀般是: /usr/share/fonts/opentype/noto/ 查找指令locate *.ttcfont = ImageFont.truetype('NotoSansCJK-Black.ttc', 40)# 字体颜⾊fillColor = (255,0,0)# ⽂字输出位置position = (100,100)# 输出内容str = '在图⽚上输出中⽂'# 需要先把输出的中⽂字符转换成Unicode编码形式if not isinstance(str, unicode):str = str.decode('utf8')draw = ImageDraw.Draw(img_PIL)draw.text(position, str, font=font, fill=fillColor)# 使⽤PIL中的save⽅法保存图⽚到本地# img_PIL.save('02.jpg', 'jpeg')# 转换回OpenCV格式img_OpenCV = cv2.cvtColor(numpy.asarray(img_PIL),cv2.COLOR_RGB2BGR)cv2.imshow("print chinese to image",img_OpenCV)cv2.waitKey()cv2.imwrite('03.jpg',img_OpenCV)输出效果:字体 *.ttc的存放路径⼀般是: /usr/share/fonts/opentype/noto/可以使⽤locate指令查找本机上已经下载的字体:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
OpenCv-freetype模块的编译(支持中文输出到图片)
OpenCv-freetype模块的编译(⽀持中⽂输出到图⽚)opencv的函数putText⽆法正确显⽰中⽂。
⽤freetype模块可以加载字体,⽀持中⽂显⽰。
在opencv-contrib⾥模块有freetype,但是在window系统⾥直接⽤cmake编译,⽆法显⽰出freetype模块。
⽹上查询资料好多都在MAC和Linux上配置。
查询了内外⽹,终于找到⽅法,可以在Window上编译通过。
朋友们,如果没有编译成功,评论我把编译好的共享。
1.编译安装freetype下载地址:默认Configure,Generate,OpenProject. 需要⽣成Debug和Release. 记得ALL_BUILD后INSTALL.系统变量添加变量FREETYPE_DIR,⽬录为C:/Program Files/freetype2.编译安装harfbuzz仓库地址:初次Configure后,钩选HB_HAVE_FREETYE,再次Configure.设置好如下值系统变量添加变量HARFBUZZ_DIR,⽬录为C:/Program Files/harfbuzz3.修改modules/freetype/CMakeLists.txt替换如下内容set(the_description "FreeType module. It enables to draw strings with outlines and mono-bitmaps/gray-bitmaps.")find_package(Freetype REQUIRED)# find_package(HarfBuzz) is not included in cmakeset(HARFBUZZ_DIR "$ENV{HARFBUZZ_DIR}" CACHE PATH "HarfBuzz directory")find_path(HARFBUZZ_INCLUDE_DIRSNAMES hb-ft.h PATH_SUFFIXES harfbuzzHINTS ${HARFBUZZ_DIR}/include)find_library(HARFBUZZ_LIBRARIESNAMES harfbuzzHINTS ${HARFBUZZ_DIR}/lib)find_package_handle_standard_args(HARFBUZZDEFAULT_MSG HARFBUZZ_LIBRARIES HARFBUZZ_INCLUDE_DIRS)if(NOT FREETYPE_FOUND)message(STATUS "freetype2: NO")else()message(STATUS "freetype2: YES")endif()if(NOT HARFBUZZ_FOUND)message(STATUS "harfbuzz: NO")else()message(STATUS "harfbuzz: YES")endif()if(FREETYPE_FOUND AND HARFBUZZ_FOUND)ocv_define_module(freetype opencv_core opencv_imgproc PRIVATE_REQUIRED ${FREETYPE_LIBRARIES} ${HARFBUZZ_LIBRARIES} WRAP python) ocv_include_directories(${FREETYPE_INCLUDE_DIRS} ${HARFBUZZ_INCLUDE_DIRS})else()ocv_module_disable(freetype)endif()4.编译安装OpenCv初次Configure后,选择contrib模块路径,同时把模块集合在opencv_world上,可以如下勾选。
opencv-putText绘字
opencv-putText绘字 cv::Mat src(500, 500, CV_8UC3, cv::Scalar(0,0,0));std::string text = "Hello World!";cv::putText(src,text, cv::Point(10,50), cv::FONT_HERSHEY_PLAIN,4, cv::Scalar(255,0,0),3);/*参数1:待绘制的图像参数2:待绘制的⽂字参数3:⽂本框的左下⾓参数4:字体⽀持的字体见下图参数5:尺⼨因⼦,值越⼤⽂字越⼤参数6:线条的颜⾊参数7:线条宽度参数8:线型(4邻域或8邻域,默认8邻域)参数9:bool bottomLeftOrigin = false // true='origin at lower left'*/cv::imshow("src", src);cv::Mat src(500, 500, CV_8UC3, cv::Scalar(255,0,0));std::string text = "Hello World!";int baseline;cv::Size text_size = cv::getTextSize(text, 3, 2, 2, &baseline);//获取⽂本框的长宽/*参数1:待绘制的⽂字参数2: int fontFace: ⽂字字体类型参数3:double fontScale: 字体缩放系数参数4:int thickness: 字体笔画线宽参数5:CV_OUT int* baseLine: ⽂字最底部y坐标*/cv::putText(src, text, cv::Point(10, 50), 3, 2, cv::Scalar(0, 255, 255), 2, 8, 0);std::cerr << text_size << std::endl;std::cerr << baseline << std::endl;cv::imshow("src", src);绘制中⽂解压后把两个⽂件复制到⼯程中添加头⽂件和源⽂件导⼊头⽂件:#include "puttextzh.h"cv::Mat src(500, 500, CV_8UC3, cv::Scalar(0,0,0));putTextZH(src, "欢迎你使⽤中⽂", cv::Point(10,50), cv::Scalar(255,0,0),30, "⿊体", true,true);/*参数1:待绘制的图像参数2:待绘制的⽂字参数3:⽂本框的左下⾓参数4:字体颜⾊参数5:字体⼤⼩,值越⼤⽂字越⼤参数6:字体(默认使⽤Arial字体,也可以设置成操作系统中已经安装的字体,如“宋体”、“微软雅⿊”、“Times New Roman”等;默认显⽰⾮斜体、⾮下划线)参数7:是否斜体参数8:是否有下划线*/cv::imshow("src", src);。
opencv 图像上添加文字
openCV字体和文字cvFont最后一种形式的绘图是绘制文字。
当然,文字创建了一套自己的复杂格式,但是,在这类事情上,OpenCV一如既往地更关心提供一个简单的"一招解决问题"的方案,这个方案只适用于一些简单应用,而不适用于一个稳定的和完整的应用(这将降低由其他库提供的功能)。
OpenCV有一个主要的函数,叫cvPutText()。
这个函数可以在图像上输出一些文本。
参数text所指向的文本将打印到图像上,参数origin指定文本框左下角位置,参数color指定文本颜色。
1.void cvPutText(2. CvArr* img,3. const char* text,4. CvPoint origin,5. const CvFont* font,6.7. CvScalar color8.);概括地说,获取CvFont*指针的方式就是调用函数cvInitFont()。
该函数采用一组参数配置一些用于屏幕输出的基本个特定字体。
如果熟悉其他环境中的GUI编程,势必会觉得cvInitFont似曾相识,但只需更少的参数。
为了建立一个可以传值给cvPutText()的CvFont,首先必须声明一个CvFont变量,然后把它传递给cvInitFont()。
1.void cvInitFont(2. CvFont* font,3. int font_face,4. double hscale,5. double vscale,6. double shear = 0,7. int thickness = 1,8. int line_type = 89.);观察本函数与其他相似函数的不同。
正如工作在OpenCV环境下的cvCreateImage()。
调用cvInitFont()时,初始化一个已经准备好的CvFont结构(这意味着你创建了一个变量,并传给cvInitFont()函数一个指向新建的变量指针),而不是像cvCreateImage()那样创建一个结构并返回指针。
cvPutText opencv中汉字的输出
cvPutText opencv中汉字的输出OPENCV 不支持汉字输出,但可以修改其代码,支持汉字。
字符输出在nitFont、cvPutText、cvGetSize三个函数中,文件在cxcore\src\cxdrawing.cpp函数介绍:void cvlnitFont(CvFont*font,int font_face,double hscale,double vscale,double shear,int thickness,int line_type);/*font表示被初始化的字体结构体。
font_face字体名称标识符,目前仅支持CV_FONT_HERSHEY_SIMPLEX等少数几种字体。
hscale表示字体宽度的放大系数,例如0.5f表示宽度为原来的一半,shear字体豹裁瘦的斜率,1表示字体倾斜45度。
thickness表示字体笔划的粗细程度。
line_type表示字体笔划的类型,具体参见cvLine。
*/void cvPutText(CvArr *img,char+text,CvPoint org,CvFont *font,CvScalar color);/*img表示图像。
这里要严格的ASCII字符,不能接受像GB2312等双字节编码。
org表示第1个字符左下角的坐标。
font表示字体结构体。
color表示文本的字体颜色。
*/字符编码:ASCII(一个字节),GB2313(两个字节),Unicode(两个字节).unicode兼容ASCII,不兼容GB,需要ANSI-C语言来转换.思想如下:1,解析汉字的编码;2,根据汉字编码装载汉字的形状;3,输出汉字的形状。
1,从char --> wchar_t2,采用TrueType 字库。
利用开源的FreeType库来处理字库。
具体如下:用FreeType的API提取一个字符的过程如下:{FT_Library m_library;//字库FT_Face m face;//字体//打开字库文件,创建一个字体FT_Init_FreeType(&m_library);FT_New_Face(m_library,"TrueType.ttf,0,&m_face);∥根据字符的编码得到字符的索引位置//根据字符在字库中索引得到字库轮廓//根据字符的轮廓渲染字符的二值位图FT_UInt glyph_index=FT_Get_Char_Index(m_face,'中');FT_Load_Glyph(m_face,glyph_index,FT_LOAD_DEFAULT);FT_RenderGlyph(m_face->glyph,FT_RENDER_MODE_MONO);//释放FreeType库管理的资源FT_Done_Face(m_face);FT_Done_FreeType(m_library);}3, 显示字型对应的是字型的位图(m_face->glyph->bitmap),直接把字符对应的位图像素绘制到影像中即可。
c++ opencv freetype 中文文本
c++ opencv freetype 中文文本OpenCV是一个开源计算机视觉库,提供了丰富的图像处理和计算机视觉算法。
而FreeType则是一种开源的字体渲染引擎,用于将字体数据转换为高质量的位图。
结合这两个工具,我们可以在C++中使用OpenCV和FreeType来渲染中文文本。
要在OpenCV中渲染中文文本,需要以下几个步骤:1.安装OpenCV和FreeType库:首先,需要在计算机上安装OpenCV和FreeType库。
可以从官方网站下载并按照安装说明进行安装。
2.加载字体文件:为了渲染中文文本,首先需要加载一个中文字体文件。
可以从各种资源获取中文字体文件,然后通过FreeType库加载到内存中。
```C++FT_Library ft;FT_Face face;//初始化FreeType库FT_Init_FreeType(&ft);//加载字体文件FT_New_Face(ft, "font.ttf", 0, &face);```3.设置字体参数:在渲染之前,可以设置一些字体的参数,如字号、加粗、斜体等。
```C++//设置字号和DPIFT_Set_Char_Size(face, 0, 20 * 64, 72, 72);//设置字体参数FT_Set_Pixel_Sizes(face, 0, 40);face->style_flags |= FT_STYLE_FLAG_BOLD;```4.渲染文本:接下来,可以使用FreeType库将中文文本渲染到OpenCV的图像中。
渲染过程通常包括计算字符的字形、度量字形的尺寸、生成字形位图等步骤。
```C++//设置渲染参数FT_Load_Char(face, '中', FT_LOAD_RENDER);FT_GlyphSlot g = face->glyph;FT_Bitmap bitmap = g->bitmap;//创建OpenCV图像cv::Mat image(bitmap.rows, bitmap.width, CV_8UC1, bitmap.buffer);//渲染字符到图像cv::imshow("Rendered Text", image);```以上是一个简单的使用OpenCV和FreeType库渲染中文文本的示例。
OpenCV-文字绘制cv::putText
OpenCV-文字绘制cv::putText作者:翟天保Steven版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处函数原型void putText( InputOutputArray img, const String& text, Point org,int fontFace, double fontScale, Scalar color,int thickness = 1, int lineType = LINE_8,bool bottomLeftOrigin = false );参数说明1.InputOutputArray类型的img,输入图像也是输出图像,如Mat类型。
2.const String&类型的text,所要绘制的文字。
3.Point类型的org,文字的位置,第一个数值表示文字最左侧的位置,第二个数值表示文字居中线距离图像的长度。
4.int类型的fontFace,文字字体,我最喜欢的是FONT_HERSHEY_SCRIPT_SIMPLEX,手写体。
5.double类型的fontScale,文字大小。
6.Scalar类型的color,文字颜色。
7.int类型的thickness,文字线条宽度。
8.int类型的line_type,绘制线的类型,-1就是FILLED(填满),4是LINE_4(4连通域),8是LINE_8(8连通域),LINE_AA(抗锯齿线)。
9.bool类型的bottomLeftOrigin,标识原点位置,若为true,则表示图像左下角为原点,OpenCV中原点位置一般为左上角。
测试代码#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){cv::Mat src = imread("girl.jpg");cv::Mat result = src.clone();cv::putText(result, "Angel", cv::Point(0, 500), FONT_HERSHEY_SCRIPT_SIMPLEX, 20, cv::Scalar(255, 255, 0), 20, 16);imshow("original", src);imshow("result", result);waitKey(0);return 0;}测试效果图1 原图图2 文字y方向距离示意图图3 效果图文本绘制还是经常用到的,不过OpenCV默认只能绘制英文或数字,中文只能采用其他方式绘制,比如freetype开源库,或者用window库自带的一些函数写,但是这些一般都只能绘制在3通道8位图中,比如CV_8UC3;像我经常处理的图像都是CV_32FC1,float类型,就只能用putT ext,没有现成的绘制中文的库,后期有时间可能会研究研究写一个~如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!。
c语言想要输出汉字怎么办
c语言想要输出汉字怎么办
在C语言中输出汉字,你需要确保你的编译器和环境支持多字节字符集(通常是UTF-8),并且你的源代码文件也是以这个字符集保存的。
然后,你可以直接使用汉字字符串来输出。
以下是一个简单的示例,展示如何在C语言中输出汉字:
c复制代码
#include<stdio.h>
int main() {
printf("你好,世界!\n");
return0;
}
在这个示例中,我们使用了printf函数来输出一个包含汉字的字符串。
确保你的编译器和环境支持UTF-8编码。
如果你使用的是GCC 编译器,通常情况下它都支持UTF-8。
如果你使用的是其他编译器或IDE,你可能需要查看其文档来了解如何配置以支持UTF-8。
此外,如果你在Windows系统上编程,并且遇到编码问题,你可能还需要确保你的源代码文件的编码与你的控制台或终端的编码一致。
你可以在文本编辑器的保存选项中查看和设置文件的编码。
总之,C语言本身并不限制输出汉字或其他非ASCII字符。
关键是确保你的编译器、环境和源代码文件都正确配置了字符编码。
puttext函数
putText函数
"puttext" 函数通常用于图形编程中,用于将文本渲染到屏幕上的指定位置。
下面是一些常见编程语言中的示例解释和用法:
1.在C语言中,您可以使用"puttext"函数来将文本从存储区复制到屏幕上的
指定位置。
具体的实现可能会涉及到使用图形库或控制台库,如graphics.h 和conio.h。
上述示例使用了图形库中的函数,例如initgraph 初始化图形系统,setcolor 设置文本颜色,settextstyle 设置文本样式,outtextxy 将文本输出到指定位置。
2.在Python中,没有内置的"puttext"函数。
但是,您可以使用第三方库(例
如Pygame)来实现相似的功能。
在Pygame中,您可以使用pygame.font.Font类创建字体对象,然后使用该对象的render方法将文本渲染到屏幕上的指定位置。
上述示例使用了Pygame库来创建一个窗口,并使用render方法渲染文本到屏幕上的指定位置。
请注意,这些示例仅为了演示目的,具体的实现可能因您使用的编程语言、库和平台而有所不同。
您可以根据自己的需求和环境适配相应的函数和库。
javaopencv puttext中文
一、介绍Java OpenCV库Java OpenCV是一个基于Java语言开发的计算机视觉库,可以用来进行图像处理、模式识别、物体跟踪、人脸检测等操作。
它提供了丰富的图像处理函数和算法,方便开发者进行图像处理和计算机视觉相关的应用开发。
二、putText函数的介绍putText函数是Java OpenCV库中的一个重要函数,它可以在图像上绘制文本。
开发者可以指定文本内容、位置、字体、大小、颜色等参数,将文本添加到图像中,从而实现图像标注、文字叠加等效果。
三、putText函数的基本用法1. 导入相关的库和包在使用putText函数之前,首先需要导入相关的库和包,确保能够正确使用Java OpenCV库中的函数和类。
2. 加载图像使用Java OpenCV库中的imread函数加载待处理的图像,获得图像的Mat对象。
可以通过指定图像的路径来加载图像文件。
3. 设置文本参数设置待绘制文本的内容、位置、字体、大小、颜色等参数。
可以通过指定矩形的左上角坐标和文本内容来设置文本位置和内容。
4. 绘制文本使用putText函数在图像上绘制文本,将文本添加到图像中。
可以根据之前设置的文本参数,将文本绘制到图像的指定位置。
5. 显示结果将处理后的图像通过imshow函数显示出来,查看添加文本后的效果。
四、putText函数的参数说明1. 输入图像putText函数第一个参数是输入图像,即待处理的图像Mat对象。
2. 文本内容putText函数第二个参数是文本内容,即待绘制的文本字符串。
3. 文本位置putText函数第三个参数是文本位置,即文本在图像中的位置。
可以通过指定矩形的左上角坐标来设置文本位置。
4. 字体putText函数第四个参数是字体,即绘制文本所使用的字体。
可以通过指定字体的名称和风格来设置字体。
5. 字体大小putText函数第五个参数是字体大小,即绘制文本所使用的字体大小。
6. 文本颜色putText函数第六个参数是文本颜色,即绘制文本所使用的颜色。
对pythonopencv添加文字cv2.putText的各参数介绍
对pythonopencv添加⽂字cv2.putText的各参数介绍如下所⽰:cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3)各参数依次是:图⽚,添加的⽂字,左上⾓坐标,字体,字体⼤⼩,颜⾊,字体粗细其中字体可以选择FONT_HERSHEY_SIMPLEXPython: cv.FONT_HERSHEY_SIMPLEXnormal size sans-serif fontFONT_HERSHEY_PLAINPython: cv.FONT_HERSHEY_PLAINsmall size sans-serif fontFONT_HERSHEY_DUPLEXPython: cv.FONT_HERSHEY_DUPLEXnormal size sans-serif font (more complex than FONT_HERSHEY_SIMPLEX)FONT_HERSHEY_COMPLEXPython: cv.FONT_HERSHEY_COMPLEXnormal size serif fontFONT_HERSHEY_TRIPLEXPython: cv.FONT_HERSHEY_TRIPLEXnormal size serif font (more complex than FONT_HERSHEY_COMPLEX)FONT_HERSHEY_COMPLEX_SMALLPython: cv.FONT_HERSHEY_COMPLEX_SMALLsmaller version of FONT_HERSHEY_COMPLEXFONT_HERSHEY_SCRIPT_SIMPLEXPython: cv.FONT_HERSHEY_SCRIPT_SIMPLEXhand-writing style fontFONT_HERSHEY_SCRIPT_COMPLEXPython: cv.FONT_HERSHEY_SCRIPT_COMPLEXmore complex variant of FONT_HERSHEY_SCRIPT_SIMPLEXFONT_ITALICPython: cv.FONT_ITALICflag for italic font字体⼤⼩,数值越⼤,字体越⼤字体粗细,越⼤越粗,数值表⽰线占有直径像素个数void cv::putText(InputOutputArray img,const String & text,Point org,int fontFace,double fontScale,Scalar color,int thickness = 1,int lineType = LINE_8,bool bottomLeftOrigin = false)Python:img =cv.putText(img, text, org, fontFace,fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])以上这篇对python opencv 添加⽂字 cv2.putText 的各参数介绍就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
图像处理和识别中常用的OpenCV函数
图像处理和图像识别中常用的OpenCV函数(2010-12-10 15:03:03)转载1、cvLoadImage:将图像文件加载至内存;2、cvNamedWindow:在屏幕上创建一个窗口;3、cvShowImage:在一个已创建好的窗口中显示图像;4、cvWaitKey:使程序暂停,等待用户触发一个按键操作;5、cvReleaseImage:释放图像文件所分配的内存;6、cvDestroyWindow:销毁显示图像文件的窗口;7、cvCreateFileCapture:通过参数设置确定要读入的AVI文件;8、cvQueryFrame:用来将下一帧视频文件载入内存;9、cvReleaseCapture:释放CvCapture结构开辟的内存空间;10、cvCreateTrackbar:创建一个滚动条;11、cvSetCaptureProperty:设置CvCapture对象的各种属性;12、cvGetCaptureProperty:查询CvCapture对象的各种属性;13、cvGetSize:当前图像结构的大小;14、cvSmooth:对图像进行平滑处理;15、cvPyrDown:图像金字塔,降采样,图像缩小为原来四分之一;16、cvCanny:Canny边缘检测;17、cvCreateCameraCapture:从摄像设备中读入数据;18、cvCreateVideoWriter:创建一个写入设备以便逐帧将视频流写入视频文件;19、cvWriteFrame:逐帧将视频流写入文件;20、cvReleaseVideoWriter:释放CvVideoWriter结构开辟的内存空间;21、CV_MAT_ELEM:从矩阵中得到一个元素;22、cvAbs:计算数组中所有元素的绝对值;23、cvAbsDiff:计算两个数组差值的绝对值;24、cvAbsDiffS:计算数组和标量差值的绝对值;25、cvAdd:两个数组的元素级的加运算;26、cvAddS:一个数组和一个标量的元素级的相加运算;27、cvAddWeighted:两个数组的元素级的加权相加运算(alpha运算);28、cvAvg:计算数组中所有元素的平均值;29、cvAvgSdv:计算数组中所有元素的绝对值和标准差;30、cvCalcCovarMatrix:计算一组n维空间向量的协方差;31、cvCmp:对两个数组中的所有元素运用设置的比较操作;32、cvCmpS:对数组和标量运用设置的比较操作;33、cvConvertScale:用可选的缩放值转换数组元素类型;34、cvCopy:把数组中的值复制到另一个数组中;35、cvCountNonZero:计算数组中非0值的个数;36、cvCrossProduct:计算两个三维向量的向量积(叉积);37、cvCvtColor:将数组的通道从一个颜色空间转换另外一个颜色空间;38、cvDet:计算方阵的行列式;39、cvDiv:用另外一个数组对一个数组进行元素级的除法运算;40、cvDotProduct:计算两个向量的点积;41、cvEigenVV:计算方阵的特征值和特征向量;42、cvFlip:围绕选定轴翻转;43、cvGEMM:矩阵乘法;44、cvGetCol:从一个数组的列中复制元素;45、cvGetCols:从数据的相邻的多列中复制元素;46、cvGetDiag:复制数组中对角线上的所有元素;47、cvGetDims:返回数组的维数;48、cvGetDimSize:返回一个数组的所有维的大小;49、cvGetRow:从一个数组的行中复制元素值;50、cvGetRows:从一个数组的多个相邻的行中复制元素值;51、cvGetSize:得到二维的数组的尺寸,以CvSize返回;52、cvGetSubRect:从一个数组的子区域复制元素值;53、cvInRange:检查一个数组的元素是否在另外两个数组中的值的范围内;54、cvInRangeS:检查一个数组的元素的值是否在另外两个标量的范围内;55、cvInvert:求矩阵的逆;56、cvMahalonobis:计算两个向量间的马氏距离;57、cvMax:在两个数组中进行元素级的取最大值操作;58、cvMaxS:在一个数组和一个标量中进行元素级的取最大值操作;59、cvMerge:把几个单通道图像合并为一个多通道图像;60、cvMin:在两个数组中进行元素级的取最小值操作;61、cvMinS:在一个数组和一个标量中进行元素级的取最小值操作;62、cvMinMaxLoc:寻找数组中的最大最小值;63、cvMul:计算两个数组的元素级的乘积(点乘);64、cvNot:按位对数组中的每一个元素求反;65、cvNormalize:将数组中元素进行归一化;66、cvOr:对两个数组进行按位或操作;67、cvOrs:在数组与标量之间进行按位或操作;68、cvReduce:通过给定的操作符将二维数组简为向量;69、cvRepeat:以平铺的方式进行数组复制;70、cvSet:用给定值初始化数组;71、cvSetZero:将数组中所有元素初始化为0;72、cvSetIdentity:将数组中对角线上的元素设为1,其他置0;73、cvSolve:求出线性方程组的解;74、cvSplit:将多通道数组分割成多个单通道数组;75、cvSub:两个数组元素级的相减;76、cvSubS:元素级的从数组中减去标量;77、cvSubRS:元素级的从标量中减去数组;78、cvSum:对数组中的所有元素求和;79、cvSVD:二维矩阵的奇异值分解;80、cvSVBkSb:奇异值回代计算;81、cvTrace:计算矩阵迹;82、cvTranspose:矩阵的转置运算;83、cvXor:对两个数组进行按位异或操作;84、cvXorS:在数组和标量之间进行按位异或操作;85、cvZero:将所有数组中的元素置为0;86、cvConvertScaleAbs:计算可选的缩放值的绝对值之后再转换数组元素的类型;87、cvNorm:计算数组的绝对范数,绝对差分范数或者相对差分范数;88、cvAnd:对两个数组进行按位与操作;89、cvAndS:在数组和标量之间进行按位与操作;90、cvScale:是cvConvertScale的一个宏,可以用来重新调整数组的内容,并且可以将参数从一种数据类型转换为另一种;91、cvT:是函数cvTranspose的缩写;92、cvLine:画直线;93、cvRectangle:画矩形;94、cvCircle:画圆;95、cvEllipse:画椭圆;96、cvEllipseBox:使用外接矩形描述椭圆;97、cvFillPoly、cvFillConvexPoly、cvPolyLine:画多边形;98、cvPutText:在图像上输出一些文本;99、cvInitFont:采用一组参数配置一些用于屏幕输出的基本个特定字体;100、cvSave:矩阵保存;101、cvLoad:矩阵读取;102、cvOpenFileStorage:为读/写打开存储文件;103、cvReleaseFileStorage:释放存储的数据;104、cvStartWriteStruct:开始写入新的数据结构;105、cvEndWriteStruct:结束写入数据结构;106、cvWriteInt:写入整数型;107、cvWriteReal:写入浮点型;108、cvWriteString:写入字符型;109、cvWriteComment:写一个XML或YAML的注释字串;110、cvWrite:写一个对象;111、cvWriteRawData:写入多个数值;112、cvWriteFileNode:将文件节点写入另一个文件存储器;113、cvGetRootFileNode:获取存储器最顶层的节点;114、cvGetFileNodeByName:在映图或存储器中找到相应节点;115、cvGetHashedKey:为名称返回一个惟一的指针;116、cvGetFileNode:在映图或文件存储器中找到节点;117、cvGetFileNodeName:返回文件的节点名;118、cvReadInt:读取一个无名称的整数型;119、cvReadIntByName:读取一个有名称的整数型;120、cvReadReal:读取一个无名称的浮点型;121、cvReadRealByName:读取一个有名称的浮点型;122、cvReadString:从文件节点中寻找字符串;123、cvReadStringByName:找到一个有名称的文件节点并返回它;124、cvRead:将对象解码并返回它的指针;125、cvReadByName:找到对象并解码;126、cvReadRawData:读取多个数值;127、cvStartReadRawData:初始化文件节点序列的读取;128、cvReadRawDataSlice:读取文件节点的内容;129、cvGetModuleInfo:检查IPP库是否已经正常安装并且检验运行是否正常;130、cvResizeWindow:用来调整窗口的大小;131、cvSaveImage:保存图像;132、cvMoveWindow:将窗口移动到其左上角为x,y的位置;133、cvDestroyAllWindow:用来关闭所有窗口并释放窗口相关的内存空间;134、cvGetTrackbarPos:读取滑动条的值;135、cvSetTrackbarPos:设置滑动条的值;136、cvGrabFrame:用于快速将视频帧读入内存;137、cvRetrieveFrame:对读入帧做所有必须的处理;138、cvConvertImage:用于在常用的不同图像格式之间转换;139、cvErode:形态腐蚀;140、cvDilate:形态学膨胀;141、cvMorphologyEx:更通用的形态学函数;142、cvFloodFill:漫水填充算法,用来进一步控制哪些区域将被填充颜色;143、cvResize:放大或缩小图像;144、cvPyrUp:图像金字塔,将现有的图像在每个维度上都放大两倍;145、cvPyrSegmentation:利用金字塔实现图像分割;146、cvThreshold:图像阈值化;147、cvAcc:可以将8位整数类型图像累加为浮点图像;148、cvAdaptiveThreshold:图像自适应阈值;149、cvFilter2D:图像卷积;150、cvCopyMakeBorder:将特定的图像轻微变大,然后以各种方式自动填充图像边界;151、cvSobel:图像边缘检测,Sobel算子;152、cvLaplace:拉普拉斯变换、图像边缘检测;153、cvHoughLines2:霍夫直线变换;154、cvHoughCircles:霍夫圆变换;155、cvRemap:图像重映射,校正标定图像,图像插值;156、cvWarpAffine:稠密仿射变换;157、cvGetQuadrangleSubPix:仿射变换;158、cvGetAffineTransform:仿射映射矩阵的计算;159、cvCloneImage:将整个IplImage结构复制到新的IplImage中;160、cv2DRotationMatrix:仿射映射矩阵的计算;161、cvTransform:稀疏仿射变换;162、cvWarpPerspective:密集透视变换(单应性);163、cvGetPerspectiveTransform:计算透视映射矩阵;164、cvPerspectiveTransform:稀疏透视变换;165、cvCartToPolar:将数值从笛卡尔空间到极坐标(极性空间)进行映射;166、cvPolarToCart:将数值从极性空间到笛卡尔空间进行映射;167、cvLogPolar:对数极坐标变换;168、cvDFT:离散傅里叶变换;169、cvMulSpectrums:频谱乘法;170、cvDCT:离散余弦变换;171、cvIntegral:计算积分图像;172、cvDistTransform:图像的距离变换;173、cvEqualizeHist:直方图均衡化;174、cvCreateHist:创建一新直方图;175、cvMakeHistHeaderForArray:根据已给出的数据创建直方图;176、cvNormalizeHist:归一化直方图;177、cvThreshHist:直方图阈值函数;178、cvCalcHist:从图像中自动计算直方图;179、cvCompareHist:用于对比两个直方图的相似度;180、cvCalcEMD2:陆地移动距离(EMD)算法;181、cvCalcBackProject:反向投影;182、cvCalcBackProjectPatch:图块的方向投影;183、cvMatchTemplate:模板匹配;184、cvCreateMemStorage:用于创建一个内存存储器;185、cvCreateSeq:创建序列;186、cvSeqInvert:将序列进行逆序操作;187、cvCvtSeqToArray:复制序列的全部或部分到一个连续内存数组中;188、cvFindContours:从二值图像中寻找轮廓;189、cvDrawContours:绘制轮廓;190、cvApproxPoly:使用多边形逼近一个轮廓;191、cvContourPerimeter:轮廓长度;192、cvContoursMoments:计算轮廓矩;193、cvMoments:计算Hu不变矩;194、cvMatchShapes:使用矩进行匹配;195、cvInitLineIterator:对任意直线上的像素进行采样;196、cvSampleLine:对直线采样;197、cvAbsDiff:帧差;198、cvWatershed:分水岭算法;199、cvInpaint:修补图像;200、cvGoodFeaturesToTrack:寻找角点;201、cvFindCornerSubPix:用于发现亚像素精度的角点位置;202、cvCalcOpticalFlowLK:实现非金字塔的Lucas-Kanade稠密光流算法;203、cvMeanShift:mean-shift跟踪算法;204、cvCamShift:camshift跟踪算法;205、cvCreateKalman:创建Kalman滤波器;206、cvCreateConDensation:创建condensation滤波器;207、cvConvertPointsHomogenious:对齐次坐标进行转换;208、cvFindChessboardCorners:定位棋盘角点;209、cvFindHomography:计算单应性矩阵;210、cvRodrigues2:罗德里格斯变换;211、cvFitLine:直线拟合算法;212、cvCalcCovarMatrix:计算协方差矩阵;213、cvInvert:计算协方差矩阵的逆矩阵;214、cvMahalanobis:计算Mahalanobis距离;215、cvKMeans2:K均值;216、cvCloneMat:根据一个已有的矩阵创建一个新矩阵;217、cvPreCornerDetect:计算用于角点检测的特征图;218、cvGetImage:CvMat图像数据格式转换成IplImage图像数据格式;219、cvMatMul:两矩阵相乘;。
opencv textrecognitionmodel使用
opencv textrecognitionmodel使用OpenCV中的TextRecognitionModel是一个用于文本识别的高级API。
它支持基于CNN+RNN+CTC的算法,并提供了CTC的贪婪解码方法。
在使用TextRecognitionModel之前,需要设置词汇和解码类型。
以下是使用OpenCV TextRecognitionModel进行文本识别的一般步骤:1.导入必要的库和模块:pythonimport cv2import numpy as np2.加载训练好的模型:python# 加载模型文件model_file = "path/to/your/model_file.prototxt"config_file = "path/to/your/config_file.prototxt"text_recognition_model =cv2.dnn.TextRecognitionModel(model_file, config_file)3.设置词汇和解码类型:python# 设置词汇vocabulary = "your_vocabulary_here"# 根据实际情况设置词汇text_recognition_model.setVocabulary(vocabulary)# 设置解码类型,例如"CTC-greedy"decode_type = "CTC-greedy"text_recognition_model.setDecodeType(decode_type)4.读取输入图像并进行预处理:python# 读取输入图像input_image = cv2.imread("path/to/your/input_image.jpg")# 预处理输入图像,例如调整大小、归一化等# 预处理的具体步骤取决于模型的要求preprocessed_image = preprocess_input_image(input_image)5.进行文本识别:python# 将预处理后的图像传递给TextRecognitionModel进行识别recognition_result =text_recognition_model.recognize(preprocessed_image)# 输出识别结果print("Recognized text:", recognition_result)请注意,以上代码仅提供了使用OpenCV TextRecognitionModel进行文本识别的一般步骤和示例。
puttext参数
puttext参数PutText是OpenCV中一个非常有用的函数,用于在图像上添加文字。
它可以被用于许多领域,例如计算机视觉、图像处理和机器学习等。
PutText函数的语法如下:```cppvoid cv::putText(cv::InputOutputArray img, const cv::String& text, cv::Point org, int fontFace,double fontScale, cv::Scalar color, int thickness=1, int lineType=LINE_8,bool bottomLeftOrigin=false)```参数说明:- `img`:输入输出数组,表示要添加文字的图像。
- `text`:需要添加的文本。
- `org`:文本开始的左下角坐标。
- `fontFace`:字体类型,例如`cv2.FONT_HERSHEY_SIMPLEX`。
- `fontScale`:字体大小。
- `color`:文字的颜色。
- `thickness`:线条宽度。
- `lineType`:线条类型。
- `bottomLeftOrigin`:设置为`true`时,坐标系开始点为图像左下角。
设置为`false`时,坐标系开始点为左上角。
下面我们将详细介绍PutText函数各个参数的使用。
## img`img`参数指定了目标图像,这个参数是必须的,否则PutText函数没有工作对象。
## text`text`参数指定了要添加的文本。
文本可以是字符串或数字。
如果我们要添加数字或整数,我们可以使用`std::to_string()`函数将数字转换为字符串格式。
例如,如果我们要添加数字,代码如下:上面的代码将数字1234转换为字符串格式,并将其放置在图像`img`上,字体为`cv::FONT_HERSHEY_SIMPLEX`,颜色为红色,线条宽度为2。
opencv中文教程
opencv中文教程OpenCV 是一个开源的计算机视觉库,支持许多图像和视频处理功能。
它是一种强大的工具,可用于图像增强、特征提取、目标检测等应用。
OpenCV 提供了丰富的函数和类,使得图像处理变得简单且高效。
下面是一些常用的功能和函数的示例:1. 图像读取和显示```import cv2img = cv2.imread("image.jpg") # 读取图像cv2.imshow("Image", img) # 显示图像cv2.waitKey(0) # 等待按键cv2.destroyAllWindows() # 关闭窗口```2. 图像灰度化```import cv2img = cv2.imread("image.jpg")gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转为灰度图像cv2.imshow("Gray Image", gray_img)cv2.waitKey(0)cv2.destroyAllWindows()```3. 图像边缘检测```import cv2import numpy as npimg = cv2.imread("image.jpg", 0)edges = cv2.Canny(img, 100, 200) # 边缘检测cv2.imshow("Edges", edges)cv2.waitKey(0)cv2.destroyAllWindows()```4. 目标检测```import cv2img = cv2.imread("image.jpg")cascade =cv2.CascadeClassifier("haarcascade_frontalface_default.xml") # 使用人脸识别级联分类器gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = cascade.detectMultiScale(gray_img, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # 检测人脸for (x, y, w, h) in faces:cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) # 绘制矩形框cv2.imshow("Detected Faces", img)cv2.waitKey(0)cv2.destroyAllWindows()```这些只是 OpenCV 的一小部分功能,它还提供了许多其他功能,如图像滤波、形态学操作、图像匹配等。
OpenCV+python文字识别
OpenCV+python⽂字识别# Author:Winter Liu is coming!import cv2 as cvimport numpy as npimport pytesseract# 预处理,⾼斯滤波(⽤处不⼤),4次开操作# 过滤轮廓唯⼀def contour_demo(img):gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)gray = cv.GaussianBlur(gray, (5, 5), 1)ref, thresh = cv.threshold(gray, 127, 255, cv.THRESH_BINARY)kernel = np.ones((9, 9), np.uint8)thresh = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel, iterations=4)contours, hierachy = cv.findContours(thresh, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) print(len(contours))return contoursdef capture(img):contours = contour_demo(img)# 轮廓唯⼀,以后可以扩展contour = contours[0]# 求周长,可在后⾯的转换中使⽤周长和⽐例print(cv.arcLength(contour,True))img_copy = img.copy()# 使⽤approxPolyDP,将轮廓转换为直线,22为精度(越⾼越低),TRUE为闭合approx = cv.approxPolyDP(contour, 22, True)# print(approx.shape)# print(approx)# cv.drawContours(img_copy, [approx], -1, (255, 0, 0), 15)n = []# ⽣产四个⾓的坐标点for x, y in zip(approx[:, 0, 0], approx[:, 0, 1]):n.append((x, y))p1 = np.array(n, dtype=np.float32)# 对应点p2 = np.array([(0, 0), (0, 1500), (1000, 1500), (1000, 0)], dtype=np.float32)M = cv.getPerspectiveTransform(p1, p2) # 变换矩阵# 使⽤透视变换result = cv.warpPerspective(img_copy, M, (0, 0))# 重新截取result = result[:1501, :1001]cv.imwrite(r"C:\PycharmProjects\OpenCV\pic\ocr.png", result)return result# 图像识别代码,需要预先下载安装开源⼯具包 pytesseract,配置环境变量# pip install pytesseract# 修改“C:\Python\Python37\Lib\site-packages\pytesseract\pytesseract.py”中“cmd”为绝对路径def ocr_img(img):gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 图像清晰度越⾼结果越精确,时间更长text = pytesseract.image_to_string(gray)print(text)src = cv.imread(r"C:\PycharmProjects\OpenCV\pic\page.jpg")res = capture(src)ocr_img(res)cv.waitKey(0)cv.destroyAllWindows()。
cv2 puttext用法
cv2 puttext用法cv2.putText()是OpenCV库中的一个函数,用来在图像上绘制文本。
它的用法如下:cv2.putText(image, text, org, font, fontScale, color, thickness, lineType)参数及其含义:- image:要在其上绘制文本的图像。
- text:要绘制的文本内容。
- org:文本左下角的坐标,即文本的起始位置。
- font:文本字体,可通过cv2.FONT_HERSHEY_XXX设置字体样式,如cv2.FONT_HERSHEY_SIMPLEX、cv2.FONT_HERSHEY_PLAIN等。
- fontScale:文本缩放比例大小。
- color:文本颜色,可通过BGR值设置,如(255, 0, 0)表示蓝色。
- thickness:文本字体线宽。
- lineType:文本边缘线类型,可选参数,默认为cv2.LINE_8。
使用示例:```import cv2image = cv2.imread('image.jpg')text = "Hello, OpenCV!"org = (50, 50)font = cv2.FONT_HERSHEY_SIMPLEXfontScale = 1color = (255, 0, 0)thickness = 2lineType = cv2.LINE_8cv2.putText(image, text, org, font, fontScale, color, thickness, lineType)cv2.imshow('image', image)cv2.waitKey(0)cv2.destroyAllWindows()```这段代码将在图像上绘制了文本"Hello, OpenCV!",起始位置为(50, 50),字体样式为cv2.FONT_HERSHEY_SIMPLEX,颜色为蓝色,线宽为2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cvPutText opencv中汉字的输出
OPENCV 不支持汉字输出,但可以修改其代码,支持汉字。
字符输出在nitFont、cvPutText、cvGetSize三个函数中,文件在cxcore\src\cxdrawing.cpp
函数介绍:
void cvlnitFont(CvFont*font,int font_face,double hscale,double vscale,double shear,int thickness,int line_type);
/*font表示被初始化的字体结构体。
font_face字体名称标识符,目前仅支持CV_FONT_HERSHEY_SIMPLEX等少数几种字体。
hscale表示字体宽度的放大系数,例如0.5f表示宽度为原来的一半,shear字体豹裁瘦的斜率,1表示字体倾斜45度。
thickness表示字体笔划的粗细程度。
line_type表示字体笔划的类型,具体参见cvLine。
*/
void cvPutText(CvArr *img,char+text,CvPoint org,CvFont *font,CvScalar color);
/*img表示图像。
这里要严格的ASCII字符,不能接受像GB2312等双字节编码。
org表示第1个字符左下角的坐标。
font表示字体结构体。
color表示文本的字体颜色。
*/
字符编码:ASCII(一个字节),GB2313(两个字节),Unicode(两个字节).unicode兼容ASCII,不兼容GB,需要ANSI-C语言来转换.
思想如下:
1,解析汉字的编码;2,根据汉字编码装载汉字的形状;3,输出汉字的形状。
1,从char --> wchar_t
2,采用TrueType 字库。
利用开源的FreeType库来处理字库。
具体如下:
用FreeType的API提取一个字符的过程如下:{
FT_Library m_library;//字库
FT_Face m face;//字体
//打开字库文件,创建一个字体
FT_Init_FreeType(&m_library);
FT_New_Face(m_library,"TrueType.ttf,0,&m_face);
∥根据字符的编码得到字符的索引位置
//根据字符在字库中索引得到字库轮廓
//根据字符的轮廓渲染字符的二值位图
FT_UInt glyph_index=FT_Get_Char_Index(m_face,'中');
FT_Load_Glyph(m_face,glyph_index,FT_LOAD_DEFAULT);
FT_RenderGlyph(m_face->glyph,FT_RENDER_MODE_MONO);
//释放FreeType库管理的资源
FT_Done_Face(m_face);
FT_Done_FreeType(m_library);
}
3, 显示
字型对应的是字型的位图(m_face->glyph->bitmap),直接把字符对应的位图像素绘制到影像中即可。
影像中每个像素的颜色可以通过OpenCV中的cvSet2D函数设置。
实现代码如下:
void drawCharaeter(Ipllmage *image,FT_Face *face)
{
//处理Ipllmage影像的origin标志和ROI结构
yphSIot slot=m_face->gly
FT_GlyphSiot slot = m_face->glyph;
int rows=slot->bitmap.rows;
int cols=slot->bitmap.width;
for(int i=0;i<rows;++i){
for(intj=o;j<cols;++j){
int off=i*slot->bitmap.pitch+j/8;
int flag=slot->bitmap[off]&(0xc0>>(j%8));
cvSet2D(img,i,j,CV_RGB(255,255,255));
}。