首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用Python将图片转换为有趣的散点图

本篇文章介绍如何使用python将图片转换为散点图,如下面左边图片转换为右边的散点图的形式。这样可以实现一些有趣的应用。

基本思路:读入原始图片→压缩→转化为灰度图→二值化灰度图→获得灰度值为0(黑色)的点的坐标序列→按照坐标序列绘制散点图。

主要用到的库:sklearn preprocessing; skimage io,transform; matplotlib.pyplot; kimage.color rgb2gray.

代码实现:

import numpy as np

from sklearn import preprocessing

from skimage import io,transform

import matplotlib.pyplot as plt

from skimage.color import rgb2gray

import os

#读取原始图片

path='D:\\PythonStudy\\images\\'

os.makedirs(path)

img0 = io.imread(path+'\\aixin.jpg')

print('img0彩色图像的形状为:',img0.shape)

img0彩色图像的形状为: (175, 190, 3)

#显示原始图片

io.imshow(img0)

io.show()

#将彩色图像转化为灰度图像,压缩,并显示

img_gray = rgb2gray(transform.rescale(img0, 0.3))#压缩比例

io.imshow(img_gray)

io.show()

print('img_gray灰度图像的形状为:',img_gray.shape)

img_gray灰度图像的形状为: (52, 57)

#二值化灰度图像数据,threshold为二值化灰度阈值

binarizer = preprocessing.Binarizer(threshold=.45).\

fit(img_gray)

img_gray_binary=binarizer.transform(img_gray)

io.imshow(img_gray_binary)

#获得灰度值为0的元素索引

scatter_idx=np.array(np.where(img_gray_binary==0))

#绘制灰度值为0的元素散点图

plt.figure(figsize=(6,6),frameon=False)

plt.scatter(scatter_idx[1],scatter_idx[0],marker='.')#显示灰度图像

plt.show

可以看出,输出的图片与原始图片反向,需要将纵轴反向。最终的图像并不需要坐标轴,因此可以关闭坐标轴。

#图像反向,关闭坐标轴

plt.figure(figsize=(5,5),frameon=False)

plt.scatter(scatter_idx[1],scatter_idx[0],marker='.')#显示灰度图像

ax = plt.gca()

ax.invert_yaxis()#y轴反向

plt.axis('off')#关闭坐标轴

plt.show

最终的效果如下图所示。

可以通过调节原始图片的压缩比和灰度图像的二值化阈值来改变转换效果。最后再上两张转换的其它图片。

用这些图片作为头像是不是很酷?!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190109G164P100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券