用txt文本显示图片

#导入cv模块
import cv2 as cv
import random
import numpy as np
# # =================================存取图像=====================================
# 60号宋体字母占用字符比较
xiangsi={
    "I":198,"V":229,"L":230,"U":235,"C":236,"Y":236,"T":245,"J":248,"A":262,"X":265,"Z":270,"N":276,"G":281,"F":284,"P":303,"O":306,"E":322,"K":339,"D":357,"W":373,"R":380,"H":384,"Q":391,"B":391,"S":292,"M":432
}

I_value=180   # I映射为不同的值表示亮度,
M_value=50   # M映射为50
x=(M_value-I_value)/(xiangsi['M']-xiangsi['I'])
b=I_value-xiangsi['I']*x
#归一化,后数组递减排列
for zimu in xiangsi:
    xiangsi[zimu]=int(x*xiangsi[zimu]+b)   # 将字母表示为对应的黑度值。

print(xiangsi)

# # 直接读取单通道灰度图
gray_img = cv.imread('input.jpg', cv.IMREAD_GRAYSCALE)
gray_img = cv.resize(gray_img,(int(gray_img.shape[1]),int(gray_img.shape[0]/1.7)),interpolation=cv.INTER_CUBIC)
# cv.imshow('iker', gray_img)
# cv.waitKey(0)
print(gray_img.shape)   # 先是高度, 再是宽度
file = open('out.txt',mode='w')



for row in range(gray_img.shape[0]):
    for col in range(gray_img.shape[1]):
        pzimu=" "
        cansee=False
        for zimu in xiangsi:
            if (gray_img[row][col] > xiangsi[zimu]):
                file.write(pzimu)
                cansee=True
                break
            else:
                pzimu=zimu
        if(not cansee):file.write(pzimu)
    file.write('\n')
file.close()

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Java代码导入图片生成字符画并在txt文本显示的步骤: 1. 导入所需的Java类和库: ```java import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.ImageIO; ``` 2. 加载图片并获取其像素: ```java BufferedImage image = ImageIO.read(new File("image.jpg")); int width = image.getWidth(); int height = image.getHeight(); int[][] pixels = new int[width][height]; for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { pixels[i][j] = image.getRGB(i, j); } } ``` 3. 将像素转换为字符: ```java char[][] chars = new char[width][height]; String grayScale = "@#&$%*o!;.";// 字符集合 for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { Color color = new Color(pixels[i][j]); int gray = (color.getRed() + color.getGreen() + color.getBlue()) / 3; int index = gray * (grayScale.length() - 1) / 255; chars[i][j] = grayScale.charAt(index); } } ``` 4. 将字符写入txt文件: ```java FileWriter writer = new FileWriter("output.txt"); for (int j = 0; j < height; j++) { for (int i = 0; i < width; i++) { writer.write(chars[i][j]); } writer.write("\n"); } writer.close(); ``` 完整代码如下: ```java import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.ImageIO; public class ImageToText { public static void main(String[] args) throws IOException { BufferedImage image = ImageIO.read(new File("image.jpg")); int width = image.getWidth(); int height = image.getHeight(); int[][] pixels = new int[width][height]; for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { pixels[i][j] = image.getRGB(i, j); } } char[][] chars = new char[width][height]; String grayScale = "@#&$%*o!;."; for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { Color color = new Color(pixels[i][j]); int gray = (color.getRed() + color.getGreen() + color.getBlue()) / 3; int index = gray * (grayScale.length() - 1) / 255; chars[i][j] = grayScale.charAt(index); } } FileWriter writer = new FileWriter("output.txt"); for (int j = 0; j < height; j++) { for (int i = 0; i < width; i++) { writer.write(chars[i][j]); } writer.write("\n"); } writer.close(); } } ``` 注意:图片大小会影响生成的字符画的质量,建议使用小尺寸的图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值