1 Star 1 Fork 1

吴烜/图像字符化

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
img2html.py 2.29 KB
一键复制 编辑 原始数据 按行查看 历史
吴烜 提交于 2024-11-25 14:09 +08:00 . 初步完成: 生成彩色html格式
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)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhishi/ASCII-generator-rework.git
git@gitee.com:zhishi/ASCII-generator-rework.git
zhishi
ASCII-generator-rework
图像字符化
master

搜索帮助