用 Python opencv和openpyxl 在 Excel 中画画
实现这个需求的基本思路是读取这张图片每一个像素的色彩值,然后给 excel 里的每一个单元格填充上颜色。本文用opencv openpyxl这两个库 ,参考另一篇博文使用了 PIL、 openpyxl这两个库
EXCEl的蒙娜丽莎画图效果:
一 、 python CV2中shape和resize返回值和参数的区别
1、在一副图像中使用shape得到一个3个类别的列表
shape[0] =图像的高
shape[1] =图像的宽
shape[2] = 图像的图像通道数量
2、在对一幅图像进行缩放时
resize(img, (w, h))中w表示宽度,h表示高度,正好与shape[0]和shape[1]相反
3、如果在resize中要对图像等比例放大或者缩小,注意制定的宽和高需要转换为整数
二、 openpyxl读写excel表格
1 、 A1 对应的为 1,1,也就是一行一列。在于像素填充时要注意转换
另外PIL库的img.resize((int(w), int(h)), Image.ANTIALIAS)压缩效果真不错:
全部代码:
import openpyxl
from openpyxl.styles import fills
import os
from openpyxl.utils import get_column_letter
import cv2
import numpy as np
MAX_WIDTH = 300
MAX_HEIGHT = 300
def resize2(img):
h, w,_ = img.shape
if w > MAX_WIDTH:
h = MAX_WIDTH