1 Star 1 Fork 1

吴烜/图像字符化

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
img2txt.py 1.88 KB
一键复制 编辑 原始数据 按行查看 历史
吴烜 提交于 2024-11-25 08:48 +08:00 . 代码重构: 命名, 厘清
"""
@author: Viet Nguyen <nhviet1009@gmail.com>
"""
import argparse
import cv2
import numpy as np
def get_args():
parser = argparse.ArgumentParser("Image to ASCII")
parser.add_argument("--input", type=str, default="data/input.jpg", help="Path to input image")
parser.add_argument("--output", type=str, default="data/output.txt", help="Path to output text file")
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 main(opt):
if opt.mode == "simple":
字符列表 = '@%#*+=-:. '
else:
字符列表 = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. "
字符种数 = len(字符列表)
列数 = opt.num_cols
图片 = cv2.imread(opt.input)
图片 = cv2.cvtColor(图片, cv2.COLOR_BGR2GRAY)
图高, 图宽 = 图片.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')
for 行号 in range(行数):
for 列号 in range(列数):
局部图 = 图片[int(行号 * 格高) : min(int((行号 + 1) * 格高), 图高),
int(列号 * 格宽) : min(int((列号 + 1) * 格宽), 图宽)]
输出文件.write(
字符列表[min(int(np.mean(局部图) * 字符种数 / 255), 字符种数 - 1)])
输出文件.write("\n")
输出文件.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

搜索帮助