昨晚发了接受投稿文章,昨晚就有读者积极来文章啦,几轮邮件交流了修改意见后,今天就发布啦,这篇的稿费是300。

之前无聊在刷视频的时候看到这么一个有意思的视频(现在视频找不到,忘记关键字了= =),视频的内容大概是这样的:一张狗狗的侧脸照片,经过碎纸机,横的切成若干条,并且没有打乱,随后隔条分成了两份,然后把这两份各自拼接在一起,出现了两张狗狗的图片(B图和C图)。

如下图:把A图分成了B和C两张图片

A图

B图

C图

如上图A,B,C,图片上的狗狗其实是同一个,利用原图A,把A等分成若干份,分别给B,C,然后再次拼接在一起,于是形成了B,C两张图片。

如何实现?

想实现视频中的效果,你可以手工做,先打印那么一张狗狗的图片,然后裁剪,拼装,但是很麻烦而且要有耐心。会Numpy图像处理的话,我们就可以用计算机的方式来实现这个现象。

Numpy对图像的处理实际上就是对ndarray的处理。图像和ndarray又有什么关系呢?图像是可以用ndarray数组来表示。如图我们可以用plt.imread()读取一张图片的数据,返回的就是这张图片的ndarray数组。

a.shape()查看数组的形状

其中(347,500,3), 500代表图片的长度,347代表图片的宽度,3代表RGB(通道数,有些图片格式是3通道,有些图片格式是4通道)。

所以我们可以将一张图片看作一个ndarray,而numpy库可以对ndarry进行处理,主要操作就是对数组的拆分,以及数组的拼接。

准备工作:首先从某网站上下载了一张狗狗的照片= =。

我们用numpy来处理图像。注:使用numpy库来对图像进行处理。这里我们使用matplotlib.pyplot的相关方法来辅助。

主要用到的函数方法:

plt.imread:读取图像,返回ndarray的数组。

plt.imshow:显示图像。

plt.imsave:保存图像。

np.split:数组的分割,分割图像。

np.concatenate:数组的拼接,拼接图像。

ps:imread方法默认只能处理png格式的图像,如果需要处理其他格式的图像,需要安装pillow库。这里下载的图片是jpg格式的,所以在读取的时候会报错。偷懒一下,用ps打开重新用png格式保存了一下,另外直接重命名原图为png也是不行的哦。。。

第一步:导入图片

# 导入库

Import numpy as np

Import matplotlib.pyplot as plt

# 读取图像数据

a = plt.imread(u"狗狗.png")

第二步:对图像进行分割

#读取图像的width,方便对其进行拆分

width = a.shape[1]

#将图片竖着切分成若干份:将数组以列来进行切分(axis = 1),分成两组

li = np.split(a, range(10, width,10), axis=1)

#这里我们将图片分割成若干宽度为10的长条

li1 = li[::2]

#利用切片操作,设置步长为2,相当于从第一条开始,隔条取出,即取出奇数的图片

li2 = li[1::2]

#利用切片操作,设置步长为2,相当于从第二条开始,隔条取出,即取出偶数的图片

第三步:合并图像:将数组合并在一起

# 把数组合并,相当于把第一个容器中的图片拼接起来。

a1 = np.concatenate(li1,axis=1)

# 把数组合并,相当于把第二个容器中的图片拼接起来。

a2 = np.concatenate(li2,axis=1)

第四步:显示图像(放在一起显示,可以对原图和产生的两张图片进行比较)

Fig, ax = plt.subplots(3)

Fig , set_size_inches(10, 10)

#原图

ax[0].imshow(a)

#图1

ax[ 1].imshow(a1)

#图2

ax[2].imshow(a2)

plt.tight_layout()

最终的结果如图:分割的宽度越小,拼接出来的图片内越真实

切分宽度为5

切分宽度为20

大家可以试着切分更多的条数,或者打乱顺序来拼接图片来看看最终的效果,是不是很神奇呢= =。

这个技术可以运用在哪儿呢?

在图片原创欺骗上可能有些用途,其他的用途还没想到。

本文由猿人学Python原创

首发与猿人学Python公众和猿人学网站

python怎么切图片分解_巧用numpy切分图片相关推荐

  1. numpy拼接_巧用numpy切分图片

    昨晚发了接受投稿文章,昨晚就有读者积极来文章啦,几轮邮件交流了修改意见后,今天就发布啦,这篇的稿费是300. 之前无聊在刷视频的时候看到这么一个有意思的视频(现在视频找不到,忘记关键字了= =),视频 ...

  2. [python] 工作记录一、利用opencv,numpy旋转图片无黑边(轮子必须由我造!!!)

    [python] 工作记录一.利用opencv,numpy旋转图片无黑边(轮子必须由我造!!!) 1. 第三方库的安装 2. 程序目的 3. 图片理解 4. 编写代码 (1).旋转顺时针90° (2) ...

  3. 图片裁剪_如何使用word裁剪图片图形?如何使用word修整图片?

    Word中使用图片与图形的教程: 将图片添加到文档 Word支持从Internet或本地计算机插入图像.如果您能够复制图像,则可以将其粘贴到文档中.您可以使用计算机上存储的自己的图像,也可以从Inte ...

  4. xml能存图片吗_如何Get大量的图片搜索流量?(分享几大Image SEO技巧!)

    谷歌图片搜索可以给你带来大量的流量,在促进网站关键词排名的同时提升品牌的影响力. 那么, 如何让你的图片在Google image search中获得更高的排名和点击呢? 有哪些图片SEO技巧呢? 一 ...

  5. python照片转化为漫画_巧用python实现图片转换成素描和漫画格式

    [] 本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码# -*- coding: utf-8 -*- import cv2 ...

  6. python 下载图片损坏_爬虫爬取出的图片下载出错,图片文件直接损坏

    import requests import os, sys, stat from lxml import etree import time class HuangMan(): def __init ...

  7. python 登陆网站图片验证_登陆需要密码以及图片验证的网站 如知乎

    [实例简介] 登陆知乎 这样需要输入密码以及验证图片的网站 [实例截图] 无.. [核心代码] def land_zhihu(url, id, password): opener = makeMyOp ...

  8. python计算圆环的面积_巧用转化 计算圆环面积

    巧用转化,计算圆环面积 学校操场新刷了奥运五环的标志, 我与小佳想运用所学过的知识计算出其中 一个圆环的面积. 我们先确定了外圆的直径是 6 分米,内圆直径是 4 分米.然后计算出 S 外圆 = π ...

  9. python 矩阵特征值分解_讲一下numpy的矩阵特征值分解与奇异值分解

    1.特征值分解 主要还是调包: from numpy.linalg import eig 特征值分解:  A = P*B*PT 当然也可以写成 A = QT*B*Q 其中B为对角元为A的特征值的对角矩 ...

最新文章

  1. SpringCloud(第 002 篇)简单电影微服务类(消费方,而提供方为用户微服务)
  2. yii2嵌入微信公众号支付
  3. epoll的ET和LT模式
  4. 三位数的茎叶图怎么看_霍山石斛哪家好?霍山石斛怎么选择?
  5. 代码也浪漫:用Python放一场烟花秀!
  6. ACM题解系列之一:刘汝佳:《算法竞赛入门经典》(第2版)
  7. Android之android studio如何把项目分享到github并提修改的代码到Github
  8. 千兆网线8根线定义图_家中的网线断裂/不够长,如何接线才最合适?
  9. unity 使用mysql实现登录注册_用mysql实现登录注册功能
  10. VB 读取UTF-8编码文件函数
  11. centos7上安装nodejs
  12. MATLAB中ones()函数的用法
  13. Gentoo Portage树服务器(SYNC服务器)的搭建[转]
  14. c语言文字表达式,【原创】化学方程式配平算法的设计与实现( 非Naylon版)
  15. 再谈单调队列优化 背包九讲
  16. Eclipse官网地址
  17. 你知道什么是软中断吗?
  18. 化妆品展示网页设计作业 静态HTML化妆品网站 DW美妆网站模板下载 大学生简单网页作品代码 个人网页制作 学生个人网页设计作业
  19. pixel2升级android11 开电信volte失败记录
  20. Windows无法访问\\请检查名称的拼写。否则,网络可能有问题。错误代码:0x80070053网络路径键入不正确、不存在或者网络提供程序当前不可用。请尝试键入路径或与网络管理员联系

热门文章

  1. 百岁山的故事背后--笛卡尔
  2. React => js+canvas四位数字字母混合验证码(数字+大写字母+小写字母)
  3. 查看蓝牙命令linux,【转载】Linux系统下命令行连接蓝牙设备 查看查找 蓝牙
  4. Fastjson的作者,在阿里内网挨骂了!
  5. 如何使Windows 10的Alt + Tab应用程序切换器更加透明
  6. chatgpt赋能python:Python实现微信聊天记录的方法
  7. 新秀篇 ##文件输入输出的管理##
  8. 微信小程序——云音乐界面
  9. 苹果手机删掉的照片怎么找回
  10. Android使用OpenGL ES 3.0实现随手指旋转3D立方体