点击上方"蓝色小字"关注我呀

明天就是七夕了!

如果有对象,祝早生贵子!没有对象,祝早结连理!

(搞笑一下,祝大家幸福美满吧,嘿嘿嘿)

给大家准备了一份已经写好的代码,利用python+opencv+openpyxl,opencv实现读取图片像素颜色,然后openpyxl自动填充Excel表格对应单元格背景颜色,得到一副Excel填充图画。文末代码下载链接。

先来看看效果叭(gif动图)!

opencv+python制作硬核七夕礼物-LMLPHP

把图片换成女朋友的真人图像会更逼真,会更加更好看。

然后看代码叭!

我们需要用到python以及openpyxl和opencv包,没有下载的小伙伴可以去配置一下,超级简单:

大概就是在python终端(看个人环境)执行:

下面是我安装openpyxl包的录屏,可以参考一下,也可以跳过。

配置完成后就是导入我们需要的包了,这儿不需要过多了解:


我们首先需要读取一个xlsx格式的Excel表格,需要提前在工作路径或者某绝对路径进行创建,并自定义命名,然后我们得到了一个表格对象sheet,就可以对它进行读写设置等操作了。

利用opencv将图像读取进来,之后我们就要利用for循环遍历图像的各个像素值了,但在这之前我们需要自定义一个函数,因为我们是用openpyxl包的

函数填充单元格颜色的,该函数只能设置十六进制的颜色格式:

opencv+python制作硬核七夕礼物-LMLPHP

所以我们需要自己写一个函数将RGB颜色格式转换为十六进制:

该函数实现的功能

好了,解决了颜色转换,我们就遍历像素吧!

具体大家看注释了,大概就是遍历像素并读取RGB像素值,然后传给color_transform函数进行转换,然后赋值给openpyxl的PatternFill进行Excel表格填充。

还有一步,就是保存了:

完整代码下载链接:

上面程序完毕之后,我们只是完成了单元格的填充,但我们知道,单元格不是正方形,运行完图片是扁平的:

opencv+python制作硬核七夕礼物-LMLPHP

所以还需要我们手动更改一下单元格的大小,其实openpyxl也是可以做到的,但我也是第一天用openpyxl,也不熟练,能动手就动手吧,毕竟最麻烦的已经完成了。

还有还有!在发给对象之前,一定把excel表格打开看一下,确保是这样的:

opencv+python制作硬核七夕礼物-LMLPHP

也就是缩放正常的表格,只有这样,当她滚动鼠标滚轮进行缩放,渐渐变成下图这样时,才会有惊喜嘛!

opencv+python制作硬核七夕礼物-LMLPHP

如果直接一打开就是上图,和一个照片也没什么两样,也就没那么惊喜了,是不是?

还有,别告诉你对象是用代码生成的,告诉她:

“这是我一个一个单元格填充了一个月颜色的成果,我是爱你的,么么哒,带上身份证,咱们去看电影吧~”


评论区有惊喜~


本文分享自微信公众号 - 编程学习基地(LearnBase)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

09-08 08:26