字符画是一种由字母、标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画。
静态图片
首先,我们来演示将静态图片转为字符画,功能实现主要用到的 Python 库为 OpenCV,安装使用 pip install opencv-python 命令即可。
功能实现的基本思路为:利用聚类将像素信息聚为 3 或 5 类,颜色最深的一类用数字密集度表示,阴影的一类用横杠(-)表示,明亮部分用空白表示。
主要代码实现如下:
def img2strimg(frame, K=5):
if type(frame) != np.ndarray:
frame = np.array(frame)
height, width, *_ = frame.shape
frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
frame_array = np.float32(frame_gray.reshape(-1))
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
flags = cv2.KMEANS_RANDOM_CENTERS
# 得到 labels(类别)、centroids(矩心)
compactness, labels, centroids = cv2.kmeans(frame_array, K, None, criteria, 10, flags)
centroids = np.uint8(centroids)
# labels 的数个矩心以随机顺序排列,所以需要简单处理矩心
centroids = centroids.flatten()
centroids_sorted = sorted(centroids)
# 获得不同 centroids 的明暗程度,0 为最暗
centroids_index = np

本文介绍如何使用 Python 将静态图片和 GIF 动图转化为字符画,涉及 OpenCV、imageio 和 Pillow 库。通过聚类算法处理像素,将图片转换为不同字符表示的艺术效果。
最低0.47元/天 解锁文章
722

被折叠的 条评论
为什么被折叠?



