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

cv2python读取像素点_皮皮康之Python专题4:表白赫本

Hello大家好,我是皮皮康。据说8月25日是China七夕节,嗯。。。如果你是宅男是不是也不知道如何送礼物给GF?今天咱们来点实用点的工

Hello 大家好,我是皮皮康。

据说8月25日是China七夕节,嗯。。。如果你是宅男是不是也不知道如何送礼物给GF?今天咱们来点实用点的工科生浪漫,用“Love”拼出一个人的头像!准备好开饭了吗?!

【餐前准备】

(1)女性高清图片一张(头部所占比例较高)

(2)python版本:我电脑上是3.7+

(3)CV2和Pillow库:安装方法同之前安装pandas和numpy

pip install opencv-pythonpip install Pillow

程序思路】

对照片进行处理,提取其像素信息,对其原先灰度值不做改变,然后赋给排布满文字的新图片,保存输出就完事了!!!

【Step1:调用轮子】

调用库需要图像处理进行轮子支撑:

#!/usr/bin/python#-*-coding:UTF-8 -*-import cv2from PIL import Image, ImageDraw, ImageFont

【Step2:函数设计】

定义一个Redraw的函数,将今天需要的功能全部封装在函数里,函数参数为图片和填充图片的文字信息:

def Redraw(pic, draw_text):

既然需要处理图片,首先是图片的读取,因为我们要在图片上写字,所以将图片背景设置为white:

img = cv2.imread(pic)blank = Image.new("RGB", [img.shape[1], img.shape[0]], "white")drawObj = ImageDraw.Draw(blank)

【Step3:参数调试】

图片是由像素点组成,我们先自动对原先图片进行像素记录。然后间隔一定像素填充text信息,考虑到美观等因素,这里大家可以一个个尝试。最后要给出你想使用的字体的位置信息,一般在“C:\Windows\Fonts”文件夹下:

n = 10 # pixel distancem = 9 # font sizefont_path = '你使用字体的位置' # like r'C:\Windows\Fonts\ARLRDBD.TTF'font = ImageFont.truetype(font_path, size=m) 

【Step4:Draw it!】

通过两个for循环(平面坐标x,y),依次定位到每个文字所在的色块(中间间隔n是因为文字比像素块大得多,不可能完全按照每个像素的位置和色彩来排布),代码如下:

for i in range(0, img.shape[0], n): for j in range(0, img.shape[1], n): drawObj.text([j, i],draw_text[int(j / n) % len(draw_text)],                         fill=(img[i][j][2], img[i][j][1], img[i][j][0]),font=font)

使用text( )方法填入带色彩的文字,几个参数的意义如下:

[j, i] -- location

draw_text[int(j / n) % len(draw_text)] --当前写入的那个字

fill=(img[i][j][2], img[i][j][1], img[i][j][0]) -- 代表源图片对应位置的颜色(三个分别代表RBG颜色值)

font –-填充字体信息

最后输出保存就行了:

blank.save('img_' + pic)

测试两组效果如下:

ee47310ae07aff34ff5b10d76ac4a255.png

7231fbf4c78efcdedb23fdb65c491f88.png

3b80bd9542dde63491b87cd5d09b5967.png

ba1a8a9a6010c9ab9338160ab5ab39d7.png

源码】

#!/usr/bin/python#-*-coding:UTF-8 -*-import cv2from PIL import Image, ImageDraw, ImageFont def Redraw(pic, draw_text): img = cv2.imread(pic) blank = Image.new("RGB", [img.shape[1], img.shape[0]], "white") drawObj = ImageDraw.Draw(blank) n = 10 m = 9 font_path=r'C:\Windows\Fonts\ARLRDBD.TTF' font = ImageFont.truetype(font_path, size=m) for i in range(0, img.shape[0], n): for j in range(0, img.shape[1], n): drawObj.text([j, i],draw_text[int(j / n) % len(draw_text)], fill=(img[i][j][2], img[i][j][1], img[i][j][0]),font=font) blank.save('img_' + pic) Redraw('test2.jpg', "LOVE")

来日方长】

今天主要是讲了用python的图片处理方面的库来做一些基础的图像处理工作,其实python图像处理这一块能做的东西很多,最简单的图像识别等。

来日方长,多多指教~

Best Regards,

皮皮康

【本文纯属原创,转载请注明出处】




推荐阅读
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
author-avatar
My_Qzj
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有