范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Opencvpython(1)基本介绍和3种中文文字输出探讨

  1 Opencv:
  ========
  1.1 OpenCV是计算机视觉领域应用最广泛的开源工具包,基于C/C++,跨平台的。
  1.2 OpenCV最早源于Intel公司1998年的一个研究项目。
  1.3 OpenCV旨在提供一个用于计算机视觉的科研和商业应用的高性能通用库。
  1.4 并提供了Python,Matlab和Java等语言的接口。
  2 Opencv-python:
  ==============
  2.1 OpenCV的python的API接口。
  2.2 OpenCV也有两个大版本:OpenCV2和OpenCV3。
  2.3 作用:图像image、视频video、机器学习等方面有强大作用。
  2.4 只讲Python下OpenCV安装和cv2基本使用,简单入门,防止掉坑。
  3 准备:
  =====
  3.1 官网:https://opencv.org/  #官网 https://github.com/opencv/opencv  #github https://opencv-python-tutroals.readthedocs.io/en/latest/index.html #文档
  3.2 环境:
  华为笔记本电脑、深度deepin-linux操作系统、谷歌浏览器、python3.8和微软vscode编辑器。
  3.3 安装:pip install --upgrade setuptools  #升级pip pip install numpy Matplotlib  #提前安装依赖 pip install opencv-python  #这才是安装 #本机安装: sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple  opencv-python
  4 读取并显示图片:
  =============
  4.1 代码1:#导入模块,注意是cv2,不是opencv import cv2 #读取图片 img = cv2.imread("/home/xgj/Desktop/opencv-cv2/pic1.jpeg") #打印图片类型 print(type(img)) #显示图片,窗口标题名 cv2.imshow("pic1", img)  #不支持中文 cv2.waitKey(0)
  4.2 图:
  4.3 窗口大小、位置设置代码:import cv2 #读取图片 img = cv2.imread("/home/xgj/Desktop/opencv-cv2/pic1.jpeg") cv2.namedWindow("pic1",0) #窗口大小和可调节窗口设置 cv2.resizeWindow("pic1", 640, 480) #x和y,窗口的坐标位置,左上角坐标为0,0 cv2.moveWindow("pic1",200,200) #显示图片 cv2.imshow("pic1",img) cv2.waitKey(0)
  4.4 默认窗口大小和位置,设置窗口大小可调节的代码:import cv2 #读取图片 img = cv2.imread("/home/xgj/Desktop/opencv-cv2/pic1.jpeg") #默认窗口大小(估计199和188)和位置(右下角),但是窗口可调节大小 #cv2.namedWindow("pic1",cv2.WINDOW_NORMAL) cv2.namedWindow("pic1",cv2.WINDOW_GUI_NORMAL) #显示图片 cv2.imshow("pic1",img) cv2.waitKey(0)
  4.5 图:
  5 显示中文问题:
  ============
  5.1 窗口标题名中文显示问题:
  5.1.1 代码:import cv2 # cv2读取图片 img = cv2.imread("/home/xgj/Desktop/opencv-cv2/pic1.jpeg") # 名称不能有汉字 cv2.imshow("pic图片", img) # 汉字窗口标题显示乱码 cv2.waitKey (0)  #0代表永远 #cv2.waitKey (10000) # 显示 10000 ms 即 10s 后消失 cv2.destroyAllWindows()
  5.1.2 图:
  标题名:乱码,也不知道是什么码?
  5.1.3 查资料发现,网上的方法暂时不适合本机,原因是本机系统默认图片编辑器ImageMagick,显示图片:cv2.imshow("pic图", img) #不支持中文显示 #此处暂时不介绍,以后专门写一个图片编辑器ImageMagick的入门,专门将标题名的中文设置
  5.1.4 先用matplotlib来显示,代码:import cv2     import matplotlib.pyplot as plt  fig, ax = plt.subplots() fig.canvas.set_window_title("pic图")  #这里的中文设置不说了,有三种方法 #img是一个numpy.ndarray对象,默认是以BGR三通道读取图片数据(三维数组) img = cv2.imread("/home/xgj/Desktop/opencv-cv2/pic1.jpeg") # 切片 b,g,r = cv2.split(img)   #通道拆分 # 合并,恢复原图 img2 = cv2.merge([r,g,b])  #通道从新按rgb顺序合并 plt.imshow(img2)   #恢复原色 plt.show()
  5.1.5 图:
  OK,搞定!
  5.2 图片内嵌入中文字:(3种方法)
  ===========================
  5.2.1 方法一:联合PIL法,代码:from PIL import Image, ImageDraw, ImageFont import cv2 import numpy as np # cv2读取图片,名称不能有汉字 img = cv2.imread("/home/xgj/Desktop/opencv-cv2/pic1.jpeg")  # cv2和PIL中颜色的hex码的储存顺序不同 cv2img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  pilimg = Image.fromarray(cv2img) # PIL图片上打印汉字 draw = ImageDraw.Draw(pilimg) # 图片上打印 #提前下载中文字体华文仿宋hwfs.ttf,大小和编码 font = ImageFont.truetype("hwfs.ttf", 40, encoding="utf-8")  #位置,文字,颜色==红色,字体引入 draw.text((20, 20), "天高气爽", (255, 0, 0), font=font)  # PIL图片转cv2 图片 cv2charimg = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR) cv2.imshow("PIL显示中文", cv2charimg) # 汉字窗口标题显示乱码,下次再说 cv2.waitKey (0) cv2.destroyAllWindows()
  5.2.2 图:
  5.2.3 方法二 matplotlib法,代码:import matplotlib.pyplot as plt import cv2 #读取 img=cv2.imread("/home/xgj/Desktop/opencv-cv2/pic1.jpeg") img=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)#转化为RGB a,b=img.shape[:2] #取宽和高 #fig=plt.figure(figsize=(b/100,a/100))#根据图片大小设置画布的大小,很关键 #ax=fig.add_subplot(111) #等同上面 fig, ax = plt.subplots(figsize=(b/100,a/100)) #显示 ax.imshow(img) #fig.imshow(img)  #不能显示 #清除坐标轴刻度 ax.set_yticks([]) ax.set_xticks([])  #图片中的文字的位置,文字内容,字体颜色,大小设置 #注意位置40,80是x和y坐标,是fig的坐标,不是ax的坐标 ax.text(40,80,"天高气爽",color="red",size=40) plt.show()
  5.2.4 图:
  5.2.5 方法三:freetype,代码:#参考文章: #https://blog.csdn.net/wyx100/article/details/75579581 #-*- coding: utf-8 -*- import cv2 #FreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎 #pip install freetype-py  #推荐安装 #sudo pip3.8 install freetype-py  #本机安装 import copy import freetype img = cv2.imread("/home/xgj/Desktop/opencv-cv2/pic1.jpeg") text_cn = "秋高气爽freetype" #字体颜色、位置和大小定义 color = (0, 255, 0)  # Green pos = (20, 20)   text_size = 40 #可以封装函数:输入中文文字 class put_chinese_text(object):     def __init__(self, ttf):         self._face = freetype.Face(ttf)     def draw_text(self, image, pos, text, text_size, text_color):         self._face.set_char_size(text_size * 64)         metrics = self._face.size         ascender = metrics.ascender / 64.0         ypos = int(ascender)         text = text         img = self.draw_string(image, pos[0], pos[1] + ypos, text, text_color)         return img          def draw_string(self, img, x_pos, y_pos, text, color):         prev_char = 0         pen = freetype.Vector()         pen.x = x_pos << 6  # p 64         pen.y = y_pos << 6         hscale = 1.0         matrix = freetype.Matrix(int(hscale) * 0x10000, int(0.2 * 0x10000),                                   int(0.0 * 0x10000), int(1.1 * 0x10000))         cur_pen = freetype.Vector()         pen_translate = freetype.Vector()         image = copy.deepcopy(img)         for cur_char in text:             self._face.set_transform(matrix, pen_translate)             self._face.load_char(cur_char)             kerning = self._face.get_kerning(prev_char, cur_char)             pen.x += kerning.x             slot = self._face.glyph             bitmap = slot.bitmap             cur_pen.x = pen.x             cur_pen.y = pen.y - slot.bitmap_top * 64             self.draw_ft_bitmap(image, bitmap, cur_pen, color)             pen.x += slot.advance.x             prev_char = cur_char         return image          def draw_ft_bitmap(self, img, bitmap, pen, color):         x_pos = pen.x >> 6         y_pos = pen.y >> 6         cols = bitmap.width         rows = bitmap.rows         glyph_pixels = bitmap.buffer         for row in range(rows):             for col in range(cols):                 if glyph_pixels[row * cols + col] != 0:                     try:                         img[y_pos + row][x_pos + col][0] = color[0]                         img[y_pos + row][x_pos + col][1] = color[1]                         img[y_pos + row][x_pos + col][2] = color[2]                     except:                         continue #调用函数,引出中文字体hwfs,在根目录下 ft = put_chinese_text("hwfs.ttf") #在图片上写中文字 image = ft.draw_text(img, pos, text_cn, text_size, color) #显示图片,标题名 cv2.imshow("freetype", image) cv2.waitKey(0)
  5.2.6 图:
  6 备注:
  这么强大的库,中文设置还是有点麻烦,所以最好用英文。
  当然,在以后介绍人脸识别显示中文姓名时还是需要用到。
  也衷心希望下一个版本的opencv能更好的兼容中文。
  ===自己整理并分享出来===
  喜欢的人,请点赞、关注、评论、转发和收藏。

教育部明确入学新规,多地今年秋季开始实施,学区房要凉了?文香橙聊教育学区房一直以来都是家长们的噩梦,折磨着众多的家长。学区房一般都在学校的附近,也是学生到这所学校上学的一个大前提。也正因为如此,学区房的热度一直居高不下,甚至越炒越高,这实力很牛的3所大学,学生几乎不愁就业,毕业后有机会当干部文香橙聊教育大学生为就业发愁是普遍现象,但有一些大学生却是不愁就业的。同样都是大学生,之所以有的大学生不愁就业,关键在于报考的大学不同。除了军校之外,还有一些大学的大学生也是不用为退伍费50万和事业编岗位,你会怎么选?退役军人的选择很一致文香橙聊教育如果你是一名退役军人,在50万的退伍费和事业编岗位中选择一个,你会选择什么?随着社会的不断发展,国家的综合实力越来越强,发展越来越大,相应的国家的政策也越来越好。大学生初中生迎来好消息,中考升学率或将提高,家长表示很高兴文香橙聊教育随着社会的不断发展,教育的不断改革,学生的升学压力也变得越来越大,能够顺利考上高中的人数也在不断地减少。2021年是中考进行大规模改革的第一年,也是影响很多的初中生命运浙江一妈妈为让女儿长高,每天逼其跳绳3000个长不高你自己后悔近日,浙江一名女子带13岁的女儿到医院就诊,女孩因为跳绳的原因,导致膝盖疼痛。经过检查后,医生确诊女孩是患上了胫骨结节骨骺炎。这一结果让女子后悔不迭,为自己的愚蠢悔恨不已。原来,女是个狠人!河南一男子敲铁钵逼退骚扰电话,对方脑瓜子嗡嗡的近日,河南洛阳一名男子因为频繁地接到销售电话,不堪其扰的他想到了一个损招。男子在接到销售电话后,将手机放到一个铁钵中,待销售人员正在推销业务的时候,男子突然用力一敲铁钵,视频中瞬间细思极恐!江苏一店主因生意太冷清,竟在凉面中加入罂粟粉近日,江苏连云港有市民向警方反映,他怀疑一家凉面店的食材里可能含有罂粟成分。警方接警后,在该店内搜出大量含有罂粟壳成分的辣椒油及粉末,而且经过检测,也证实该店销售给客人的食物中含有河南一女子走路不慎摔倒在地,一旁抱孩子的大人反应引网友议论近日,河南驻马店的网友分享一段监控视频引发热议。视频中,一名女子从家中走出,因为地上湿滑女子脚下一滑,整个人直接摔倒在了地上,过了好一会才自己爬起来。女子摔倒时,院子里还有一名抱着社死现场!浙江一男子喝醉后在街上打太极,动作张弛有度看懵民警近日,浙江义乌一段醉酒男子在街头打太极的视频逗乐众多网友。画面显示,一名男子喝醉后在街头打起了太极,做了一套又一套的动作,看起来张弛有度又感觉非常的滑稽。民警赶到现场后看到男子的行江苏一大爷只点3元青菜,男子问其原因后,买红烧肉给大爷加餐近日,江苏苏州一名男子在餐厅看到一位在工地上干活大爷正在吃饭,大爷只点了一碗3元的青菜,就着两碗米饭吃。男子见状上前询问大爷怎么只吃青菜,干活要吃营养一点才可以。结果大爷只说了三个辽宁一学校家长开车接孩子放学,校门口马路变停车场引热议近日,辽宁沈阳市民拍摄到某学校门口这样一幕天上下了点雨,许多家长开车接孩子放学。由于车辆太多,校门口的大马路上并排停靠着五六排小车,直接把马路变成了停车场,只留一条车道上供过路汽车
我敢肯定,语数外之后,下一个有主科气质的是它还有不到一个月就放暑假了,我们的读者家长群里,大家也正在密集地讨论娃们的暑假安排。要在往年,大大小小的学科培训班早该开始摇旗呐喊趁暑假弯道超车了,今年明显安静了许多。毕竟大家也看到高考周,当土猪拱白菜遇到可为与有为,我推荐一部纪录片这周的高考,又一次引发家长对高考作文的热议,却鲜有人讨论数学的压轴大题。群里看到一个段子,据说去年就出来过,还是挺有道理的。图源网络段子归段子,其实小半爸认为,相比前几年的作文命题如果你有女儿,一定要给她看这两部好片,比什么芭比公主燃多了大家好,我是每周四和大家一起看好片的千妈。话说前段时间有一部热播的历史神剧xx宫词,我刚看了10分钟,就顿感眼睛疼脑袋大!逻辑混乱强行推动剧情,把复杂深刻的历史传奇女性人物拍成了傻海淀不允许暑假培训班授课?已辟谣!不过,你怎么看呢?前几天在家长群,疯传一张聊天截图,说是北京海淀不允许培训班暑假授课了,顿时群里就炸开了锅。暑假没有培训班上的话,孩子在家怎么安排?不少家长有点懵了好在很快海淀教委就出来辟谣了但是海这周的3条新闻太重磅了,家长们得好好想想了上周孩子们过了一个意外热闹的六一节!节日前后教育新闻一个接一个,应接不暇!其中,最热的莫过于儿童节前一天,新华社发布的3胎政策了。迅速,幽默的网友就创作出了千算万算,没想到国家给儿苏轼我为什么能这么潇洒?还不是因为我实干肯学苏轼是我国历史上罕见的文学全才,诗词文赋书画美学哲学都达到炉火纯青的艺术高度。他不仅有才,而且活得还特别潇洒惬意。他会在失意时写出一蓑烟雨任平生的洒脱,会在深夜感受小舟从此逝,江海我挖到一套剑桥宝藏教材!娃的英文口语写作都不愁了迫不及待先来亮个相!我们早在去年4月就开始横比评测,和出版社沟通抠细节,后面又马不停蹄搞定一系列引进事宜剑桥大学出版社原版教材PresentYourself表达自己那么,表达具体是腾讯实习生遗书看得我心疼,有多少孩子表面好好的,里面空空的?大家好,我是千妈。前几天,网传腾讯科兴大楼一实习生跳楼并留下遗书,引发热议。以下部分遗书内容,摘录自知乎网传腾讯科兴大楼一实习生跳楼并留遗书,有哪些问题值得关注?身边人面临类似情况美国老师怎么培养孩子的表达力,我整理了这些材料分享给你上周给大家种草一套教孩子英文口语写作演讲的教材时提到美国学校一直很重视孩子的表达能力培养,早在学前班的ShowTell活动里,老师就开始教孩子,介绍一个物品,可以从哪些方面去讲描述错过可惜!读小库不计成本出绝品,填补了中国孩子最缺的一类阅读大家好,我是千妈。今天给大家推荐的这套少儿哲学丛书,昨天主文已经聊到过,我认为是读小库所有书里最不计成本的一套珍品,因为它把内容做到了极致,却搭配了整个读小库精品系列里最难得一见的高层又对教育动手!没了课外班,家长做什么才能确保孩子不掉队?大家好,我是千妈。这段时间教育行业地震不断,暗潮涌动,相信很多爸妈都感受到了。继之前对15家教培机构(其中不乏大名鼎鼎的新东方学而思精锐教育掌门1对1等等)顶格处罚后,国家近日又宣