热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【opencv笔记4】杂记

目录1cv2.imwrite()中文乱码问题cv2.puttext()能在图片上打印汉字吗2灰度世界(白平衡)p

目录

1

cv2.imwrite()    中文乱码问题

cv2.puttext()  能在图片上打印汉字吗

2

灰度世界(白平衡)

plt画图

BGR彩图的统计直方图

线段



1

cv2.imwrite()    中文乱码问题

你一定尝试过了:

1 更改setting 选项             2 # -*- coding: utf-8 -*-        3 .encode( )   .......            的方案了吧,然后,没好使。。。

cv2.imwrite(filename, img)

print 出 filename 明明是正常的中文,可是输出的文件名却乱码?

            

前方高能,终于找到解决方法,开森

#cv2.imwrite(filename, img) 改为下句cv2.imencode('.jpg', img)[1].tofile(filename)

哦吼完美!

下面再来解决读取中文路径:

img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)

cv2.puttext()  能在图片上打印汉字吗

cv2.puttext 是不可以的。

r1= ['黑', 'A', '0', 'S', 'K', '0', '5']
r2= ['黑', 'A', '0', 'S', 'K', '0', '5']
r3= ['黑', 'A', '0', 'S', 'K', '0', '5']

img=cv2.resize(img,(410,90))
imgh, imgw, _ = img.shape
back = 255*np.ones((2*imgh, imgw, 3), np.uint8)
back[0:imgh, 0:imgw ] = img
img_PIL = Image.fromarray(cv2.cvtColor(back, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img_PIL)
for i in range(len(r0)):draw.text((80+40*i, 115), ''.join(r0[i]), (0, 70, 255), ImageFont.truetype("simhei.ttf", 22, encoding="utf-8"))
for i in range(len(r1)):draw.text((80+40*i, 135), ''.join(r1[i]), (0, 70, 255), ImageFont.truetype("simhei.ttf", 22, encoding="utf-8"))
for i in range(len(r2)):draw.text((80+40*i, 155), ''.join(r2[i]),(0, 70, 255), ImageFont.truetype("simhei.ttf", 22, encoding="utf-8"))
for i in range(len(res)):draw.text((80+40*i, 95), ''.join(res[i]), (0, 0, 0), ImageFont.truetype("simhei.ttf", 22, encoding="utf-8"))
back = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)cv2.imencode('.jpg', back)[1].tofile("./k/"+''.join(res)+"_{}.jpg".format(index))index+=1cv2.imshow("T",back)

                                                 

2

灰度世界(白平衡)

def grey_world(nimg): nimg = nimg.transpose(2, 0, 1).astype(np.uint32) avgB = np.average(nimg[0]) avgG = np.average(nimg[1]) avgR = np.average(nimg[2]) avg = (avgB + avgG + avgR) / 3 nimg[0] = np.minimum(nimg[0] * (avg / avgB), 255) nimg[1] = np.minimum(nimg[1] * (avg / avgG), 255) nimg[2] = np.minimum(nimg[2] * (avg / avgR), 255) return nimg.transpose(1, 2, 0).astype(np.uint8)

plt画图


BGR彩图的统计直方图

'''绘制BGR彩图的统计直方图
'''
from matplotlib import pyplot as plt
import numpy as np
import cv2
import os
path = "pp"
cc = 0
for root, dirs, files in os.walk(path):for file in files:if file[-5] is 's':continue# 读入图片img = cv2.imdecode(np.fromfile(path + "/" + file, dtype=np.uint8), cv2.IMREAD_COLOR)if img is None:print("图片读入失败, 请检查图片路径及文件名")exit()# 创建画布fig, ax = plt.subplots()# Matplotlib预设的颜色字符bgrColor = ('b', 'g', 'r')# 统计窗口间隔 , 设置小了锯齿状较为明显 最小为1 最好可以被256整除bin_win = 16# 设定统计窗口bins的总数bin_num = int(256 / bin_win)for cidx, color in enumerate(bgrColor):# cidx channel 序号# color r / g / bcHist = cv2.calcHist([img], [cidx], None, [bin_num], [0, 256])# 绘制折线图ax.plot(cHist, color=color)#绘制线段# 控制画布的窗口x坐标的稀疏程度. 最密集就设定xticks_win=1xticks_win = 4# 设定画布的范围ax.set_xlim([0, bin_num])# 设定x轴方向标注的位置ax.set_xticks(np.arange(0, bin_num, xticks_win))# 设定x轴方向标注的内容ax.set_xticklabels(list(range(0, 256, bin_win * xticks_win)), rotation=45)# 显示画面plt.show()#plt.savefig("p2/" + file[:-4] + "s.jpg")#cv2.imwrite("p2/" + file,img)

线段

x=[0,255]
y=[30,30]
ax.plot(x,y, color=color)

 


推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
author-avatar
自娱自乐GoGo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有