python实战项目1-图片转字符画

本文介绍了一个Python实战项目,将图片转换为字符画。首先解析图片的RGB值,然后将这些值映射到特定字符上,最终将原始图像转化为字符表示的图像。文章提到了使用Pillow库和OpenCV的cv2模块来处理图像,并提供了相关学习提示和代码示例。
摘要由CSDN通过智能技术生成

python实战项目1-图片转字符画

思路

图片->字符:
(1)下载下来的图片
(2)分析RGB值
(3)RGB值->字符表示(中间过程可转换形成灰度值,再对应字符)

学习提示

学习使用pilow库和argparse库的使用
pillow库:关于图像的库;argparse库:命令行参数相关库
参考链接

得到RGB值

import cv2
import numpy as np
img = cv2.imread("D:\\try_try\\dlAm2.jpg", 1)

imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]

for i in range(height):
    for j in range(width):`在这里插入代码片`
        (b, g, r) = img[i, j]
        b = int(b)
        g = int(g)
        r = int(r)
        gray = r*0.299 + g*0.587 + b*0.114

注意cv2.imread()路径中写法:
1.路径中不能含有中文
2.图片文件名字不能含有中文
3.绝对路径则必须是反双斜杠
4.如果图像文件太大也会使得cv2.imread()得到NoneType

除了利用cv2模块获取图像,还可使用pillow库中的Image的open函数打开图像文件,利用size函数得到宽高,再使用getpixel得到rgb值

将RGB值对应到字符上

my_string=list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
length=len(my_string)
swap=256/length

txt+=my_string[int(gray/swap)]

最初图像->结果图像

最初图像:
在这里插入图片描述
大概结果图像:
在这里插入图片描述

完整代码


import cv2
import numpy as np
img = cv2.imread("D:\\try_try\\dlAm2.jpg", 1)

imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros([height, width], np.uint8)

my_string=list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
length=len(my_string)
swap=256/length

txt=""

for i in range(height):
    for j in range(width):
        (b, g, r) = img[i, j]
        b = int(b)
        g = int(g)
        r = int(r)
        gray = r*0.299 + g*0.587 + b*0.114
        txt+=my_string[int(gray/swap)]
    txt+='\n'
print(txt)

with open("output.txt",'w') as f:
    f.write(txt)
"""
cv2.imshow('image', dst)
cv2.waitKey(0)

"""
"""
import cv2
 
img = cv2.imread("D:\\try_try\\dlAm.jpg",1)
imgInfo = img.shape
print(imgInfo)

"""

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值