代码拉取完成,页面将自动刷新
import argparse
import cv2
import numpy as np
def get_args():
parser = argparse.ArgumentParser("Image to ASCII")
parser.add_argument("--输入", type=str, default="data/input.jpg", help="原图文件路径")
parser.add_argument("--output", type=str, default="data/output.html", help="生成 html 文件路径")
parser.add_argument("--mode", type=str, default="complex", choices=["simple", "complex"],
help="10 or 70 different characters")
parser.add_argument("--num_cols", type=int, default=150, help="number of character for output's width")
args = parser.parse_args()
return args
def rgb_to_hex(rgb):
return '#{0:02x}{1:02x}{2:02x}'.format(*rgb)
def main(opt):
if opt.mode == "simple":
字符列表 = '@%#*+=-:. '
else:
字符列表 = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. "
字符种数 = len(字符列表)
列数 = opt.num_cols
图片 = cv2.imread(opt.输入)
图片 = cv2.cvtColor(图片, cv2.COLOR_BGR2RGB)
图高, 图宽, _ = 图片.shape
格宽 = 图宽 / opt.num_cols
格高 = 2 * 格宽
行数 = int(图高 / 格高)
if 列数 > 图宽 or 行数 > 图高:
print("Too many columns or rows. Use default setting")
格宽 = 6
格高 = 12
列数 = int(图宽 / 格宽)
行数 = int(图高 / 格高)
输出文件 = open(opt.output, 'w')
输出文件.write('<span style="font-size:20px"><pre>')
for 行号 in range(行数):
for 列号 in range(列数):
局部图 = 图片[int(行号 * 格高) : min(int((行号 + 1) * 格高), 图高),
int(列号 * 格宽) : min(int((列号 + 1) * 格宽), 图宽)]
局部平均颜色 = np.sum(np.sum(局部图, axis=0), axis=0) / (格高 * 格宽)
局部平均颜色 = tuple(局部平均颜色.astype(np.int32).tolist())
输出文件.write(
'<font color="' + rgb_to_hex(局部平均颜色) + '">'
+ 字符列表[min(int(np.mean(局部图) * 字符种数 / 255), 字符种数 - 1)]
+ '</font>')
输出文件.write("<br />")
输出文件.write('</pre></span>')
输出文件.close()
if __name__ == '__main__':
opt = get_args()
main(opt)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。