精华内容
下载资源
问答
  • Imagine a I have an image and I want to split it and see the RGB ... How can I do it using python?解决方案My favorite approach is using scikit-image. It is built on top of numpy/scipy and images are...

    Imagine a I have an image and I want to split it and see the RGB channels. How can I do it using python?

    解决方案

    My favorite approach is using scikit-image. It is built on top of numpy/scipy and images are internally stored within numpy-arrays.

    Your question is a bit vague, so it's hard to answer. I don't know exactly what you want to do but will show you some code.

    Test-image:

    Code:

    import skimage.io as io

    import matplotlib.pyplot as plt

    # Read

    img = io.imread('Photodisc.png')

    # Split

    red = img[:, :, 0]

    green = img[:, :, 1]

    blue = img[:, :, 2]

    # Plot

    fig, axs = plt.subplots(2,2)

    cax_00 = axs[0,0].imshow(img)

    axs[0,0].xaxis.set_major_formatter(plt.NullFormatter()) # kill xlabels

    axs[0,0].yaxis.set_major_formatter(plt.NullFormatter()) # kill ylabels

    cax_01 = axs[0,1].imshow(red, cmap='Reds')

    fig.colorbar(cax_01, ax=axs[0,1])

    axs[0,1].xaxis.set_major_formatter(plt.NullFormatter())

    axs[0,1].yaxis.set_major_formatter(plt.NullFormatter())

    cax_10 = axs[1,0].imshow(green, cmap='Greens')

    fig.colorbar(cax_10, ax=axs[1,0])

    axs[1,0].xaxis.set_major_formatter(plt.NullFormatter())

    axs[1,0].yaxis.set_major_formatter(plt.NullFormatter())

    cax_11 = axs[1,1].imshow(blue, cmap='Blues')

    fig.colorbar(cax_11, ax=axs[1,1])

    axs[1,1].xaxis.set_major_formatter(plt.NullFormatter())

    axs[1,1].yaxis.set_major_formatter(plt.NullFormatter())

    plt.show()

    # Plot histograms

    fig, axs = plt.subplots(3, sharex=True, sharey=True)

    axs[0].hist(red.ravel(), bins=10)

    axs[0].set_title('Red')

    axs[1].hist(green.ravel(), bins=10)

    axs[1].set_title('Green')

    axs[2].hist(blue.ravel(), bins=10)

    axs[2].set_title('Blue')

    plt.show()

    Output:

    Comment

    Output looks good: see for example the yellow flower, which has much green and red, but not much blue which is compatible with wikipedia's scheme from here:

    展开全文
  • 为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。02 成果展示先来看看成果,原图为文章开始的图片,一图切九图朋友圈:九张图发朋友圈的时候,还有个比较有...
    db4f39a2c3952db19eeffdd4e904821b.png

    01 前言

    在日常的生活中,大家偶尔会看到朋友圈发的照片由一张被切成九张的效果,有时由一张照片被切成九张照片所带来的视觉盛宴是不一样的!

    现在许多 P 图工具里面自带了这种功能,而微信小程序里也有专门可以切图的工具。为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。

    02 成果展示

    先来看看成果,原图为文章开始的图片,一图切九图朋友圈:

    c394ce89926fd326c83544e297b25def.png

    九张图发朋友圈的时候,还有个比较有意思的事,上传时是乱序的,还需要你自己像玩拼图一样自己摆位置。

    03 思路讲解

    这个小功能的实现利用了 Python 中的一个图形处理库,Pillow。

    Pillow是由从著名的Python图像处理库PIL发展出来的一个分支,通过Pillow可以实现图像压缩和图像处理等各种操作。

    1pip install pillow # 安装 pillow 库

    大体实现思路以下几步:

    1. 读取到原图片,获取图片尺寸后,将宽高对比,生成以白色为背景的大正方形图
    2. 将大正方形图按照 3*3 比例进行切割,生成9个小正方形图
    3. 分别生成 9 张小正方形图片

    04 代码讲解

    按照上面的思路,写出代码:

    1. 填充原图形的背景,生成大正方形图

    1def fill_images(image):

    2 """ 填充正方形白色背景图片 """

    3 width, height = image.size # 获取图片的宽高

    4 side = max(width, height) # 对比宽和高哪个大

    6 # 新生成的图片是正方形的,边长取大的,背景设置白色

    7 new_image = Image.new(image.mode, (side, side), color='white')

    9 # 根据尺寸不同,将原图片放入新建的空白图片中部

    10 if width > height:

    11 new_image.paste(image, (0, int((side - height) / 2)))

    12 else:

    13 new_image.paste(image, (int((side - width) / 2), 0))

    14 return new_image

    代码中的顺序,可以理解为下面几个图形,首先在原有的照片基础上覆盖上白色背景:

    74629d177d999b09931700f0b57c20d7.png

    其次,比较宽和高的生成规则是下面两个图,我们可以将背景调成黑色,便于观察,当宽大于高的像素时,你的照片就是横着铺满正方形的,而背景图填充上下,黑色背景是不是有股电影大片的气息:

    89f603115f83126829029ec338213795.png

    当高大于宽的像素时,你的照片就是竖着铺满正方形的,而背景图填充左右:

    0efcffd9c01a3e9f8cb7f2e0e2bb159f.png

    第一步到这里就完成了,你得到的就是一张被背景颜色填满的正方形。

    2. 对大正方形进行切割

    1def cut_images(image):

    2 """ 切割大正方形图 """

    3 width, height = image.size

    4 one_third_width = int(width / 3) # 三分之一正方形线像素

    6 # 保存每一个小切图的区域

    7 box_list =

    9 """

    10 切图区域是矩形,位置由对角线的两个点(左上,右下)确定,

    11 而 crop 实际要传入四个参数(left, upper, right, lower)

    12 """

    13 for x in range(3):

    14 for y in range(3):

    15 left = x * one_third_width # 左像素

    16 upper = y * one_third_width # 上像素

    17 right = (x + 1) * one_third_width # 右像素

    18 lower = (y + 1# 下像素

    19 box = (left, upper, right, lower)

    20 box_list.append(box)

    21 image_list = [image.crop(box) for box in box_list]

    22 return image_list

    首先定位三分线:

    c82378dfe7a6c747e962b4e64e2acf92.png

    根据左上,右下两个像素点的位置,确定新的图形:

    ebbec689bf7ba71446866254ac9ddc87.png

    最后将每个小正方形的左上和右下像素点进行存储,以元组的形式写到list中,在调用 crop 函数进行图像复制。关于 crop 函数,官方文档:

    e4cfee8d8b861edb9e8631be7aad0a87.png

    3. 存储切割后的9张图片(不放代码了,比较简单)

    05 总结

    Pillow 库对图像处理操作支持非常友好,而本次的小工具核心就在于如果进行对原有图片进行切割。内嵌两次循环来逐行遍历,双重遍历的思想会经常用到,这块可以注意下。

    当然如果要是嫌源代码运行麻烦,可以打成 exe 文件来使用哟。这下又可以在朋友圈秀操作了!(比如改改背景呀,黑色背景什么的。)

    展开全文
  • 为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。02 成果展示先来看看成果,原图为文章开始的图片,一图切九图朋友圈:九张图发朋友圈的时候,还有个比较有...

    1012886060a3c682bfabcd99458f2be4.png

    01 前言

    在日常的生活中,大家偶尔会看到朋友圈发的照片由一张被切成九张的效果,有时由一张照片被切成九张照片所带来的视觉盛宴是不一样的!

    现在许多 P 图工具里面自带了这种功能,而微信小程序里也有专门可以切图的工具。为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。

    02 成果展示

    先来看看成果,原图为文章开始的图片,一图切九图朋友圈:

    c32e5b6ea7c191abaeef2805fadcbcbd.png

    九张图发朋友圈的时候,还有个比较有意思的事,上传时是乱序的,还需要你自己像玩拼图一样自己摆位置。

    03 思路讲解

    这个小功能的实现利用了 Python 中的一个图形处理库,Pillow。

    Pillow是由从著名的Python图像处理库PIL发展出来的一个分支,通过Pillow可以实现图像压缩和图像处理等各种操作。

    1pip install pillow # 安装 pillow 库

    大体实现思路以下几步:

    1. 读取到原图片,获取图片尺寸后,将宽高对比,生成以白色为背景的大正方形图
    2. 将大正方形图按照 3*3 比例进行切割,生成9个小正方形图
    3. 分别生成 9 张小正方形图片

    04 代码讲解

    按照上面的思路,写出代码:

    1. 填充原图形的背景,生成大正方形图

    1def fill_images(image):
    2 """ 填充正方形白色背景图片 """
    3 width, height = image.size # 获取图片的宽高
    4 side = max(width, height) # 对比宽和高哪个大
    6 # 新生成的图片是正方形的,边长取大的,背景设置白色
    7 new_image = Image.new(image.mode, (side, side), color='white')
    9 # 根据尺寸不同,将原图片放入新建的空白图片中部
    10 if width > height:
    11 new_image.paste(image, (0, int((side - height) / 2)))
    12 else:
    13 new_image.paste(image, (int((side - width) / 2), 0))
    14 return new_image

    代码中的顺序,可以理解为下面几个图形,首先在原有的照片基础上覆盖上白色背景:

    b552c4d5fb271fe0b9867faa582745eb.png

    其次,比较宽和高的生成规则是下面两个图,我们可以将背景调成黑色,便于观察,当宽大于高的像素时,你的照片就是横着铺满正方形的,而背景图填充上下,黑色背景是不是有股电影大片的气息:

    2605ea1ec0566b71ef46ec349ad34876.png

    当高大于宽的像素时,你的照片就是竖着铺满正方形的,而背景图填充左右:

    96e307527ed302d06b2760a58b2c4799.png

    第一步到这里就完成了,你得到的就是一张被背景颜色填满的正方形。

    2. 对大正方形进行切割

    1def cut_images(image):
    2 """ 切割大正方形图 """
    3 width, height = image.size
    4 one_third_width = int(width / 3) # 三分之一正方形线像素
    6 # 保存每一个小切图的区域
    7 box_list =
    9 """
    10 切图区域是矩形,位置由对角线的两个点(左上,右下)确定,
    11 而 crop 实际要传入四个参数(left, upper, right, lower)
    12 """
    13 for x in range(3):
    14 for y in range(3):
    15 left = x * one_third_width # 左像素
    16 upper = y * one_third_width # 上像素
    17 right = (x + 1) * one_third_width # 右像素
    18 lower = (y + 1# 下像素
    19 box = (left, upper, right, lower)
    20 box_list.append(box)
    21 image_list = [image.crop(box) for box in box_list]
    22 return image_list

    首先定位三分线:

    36bcf4d3e2946c371611ef7f5e246a59.png

    根据左上,右下两个像素点的位置,确定新的图形:

    a213c6b109e7a218db9b7e664f084c13.png

    最后将每个小正方形的左上和右下像素点进行存储,以元组的形式写到list中,在调用 crop 函数进行图像复制。关于 crop 函数,官方文档:

    73bdd8dbca2e1d814c662b9b439f7947.png

    3. 存储切割后的9张图片(不放代码了,比较简单)

    05 总结

    Pillow 库对图像处理操作支持非常友好,而本次的小工具核心就在于如果进行对原有图片进行切割。内嵌两次循环来逐行遍历,双重遍历的思想会经常用到,这块可以注意下。

    当然如果要是嫌源代码运行麻烦,可以打成 exe 文件来使用哟。这下又可以在朋友圈秀操作了!(比如改改背景呀,黑色背景什么的。)

    展开全文
  • 为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。02 成果展示先来看看成果,原图为文章开始的图片,一图切九图朋友圈:九张图发朋友圈的时候,还有个比较有...

    01 前言

    在日常的生活中,大家偶尔会看到朋友圈发的照片由一张被切成九张的效果,有时由一张照片被切成九张照片所带来的视觉盛宴是不一样的!

    现在许多 P 图工具里面自带了这种功能,而微信小程序里也有专门可以切图的工具。为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。

    02 成果展示

    先来看看成果,原图为文章开始的图片,一图切九图朋友圈:

    九张图发朋友圈的时候,还有个比较有意思的事,上传时是乱序的,还需要你自己像玩拼图一样自己摆位置。

    03 思路讲解

    这个小功能的实现利用了 Python 中的一个图形处理库,Pillow。

    Pillow是由从著名的Python图像处理库PIL发展出来的一个分支,通过Pillow可以实现图像压缩和图像处理等各种操作。

    1pip install pillow # 安装 pillow 库

    大体实现思路以下几步:读取到原图片,获取图片尺寸后,将宽高对比,生成以白色为背景的大正方形图

    将大正方形图按照 3*3 比例进行切割,生成9个小正方形图

    分别生成 9 张小正方形图片

    04 代码讲解

    按照上面的思路,写出代码:

    1. 填充原图形的背景,生成大正方形图

    1def fill_images(image):

    2 """ 填充正方形白色背景图片 """

    3 width, height = image.size # 获取图片的宽高

    4 side = max(width, height) # 对比宽和高哪个大

    6 # 新生成的图片是正方形的,边长取大的,背景设置白色

    7 new_image = Image.new(image.mode, (side, side), color='white')

    9 # 根据尺寸不同,将原图片放入新建的空白图片中部

    10 if width > height:

    11 new_image.paste(image, (0, int((side - height) / 2)))

    12 else:

    13 new_image.paste(image, (int((side - width) / 2), 0))

    14 return new_image

    代码中的顺序,可以理解为下面几个图形,首先在原有的照片基础上覆盖上白色背景:

    其次,比较宽和高的生成规则是下面两个图,我们可以将背景调成黑色,便于观察,当宽大于高的像素时,你的照片就是横着铺满正方形的,而背景图填充上下,黑色背景是不是有股电影大片的气息:

    当高大于宽的像素时,你的照片就是竖着铺满正方形的,而背景图填充左右:

    第一步到这里就完成了,你得到的就是一张被背景颜色填满的正方形。

    2. 对大正方形进行切割

    1def cut_images(image):

    2 """ 切割大正方形图 """

    3 width, height = image.size

    4 one_third_width = int(width / 3) # 三分之一正方形线像素

    6 # 保存每一个小切图的区域

    7 box_list =

    9 """

    10 切图区域是矩形,位置由对角线的两个点(左上,右下)确定,

    11 而 crop 实际要传入四个参数(left, upper, right, lower)

    12 """

    13 for x in range(3):

    14 for y in range(3):

    15 left = x * one_third_width # 左像素

    16 upper = y * one_third_width # 上像素

    17 right = (x + 1) * one_third_width # 右像素

    18 lower = (y + 1# 下像素

    19 box = (left, upper, right, lower)

    20 box_list.append(box)

    21 image_list = [image.crop(box) for box in box_list]

    22 return image_list

    首先定位三分线:

    根据左上,右下两个像素点的位置,确定新的图形:

    最后将每个小正方形的左上和右下像素点进行存储,以元组的形式写到list中,在调用 crop 函数进行图像复制。关于 crop 函数,官方文档:

    3. 存储切割后的9张图片(不放代码了,比较简单)

    05 总结

    Pillow 库对图像处理操作支持非常友好,而本次的小工具核心就在于如果进行对原有图片进行切割。内嵌两次循环来逐行遍历,双重遍历的思想会经常用到,这块可以注意下。

    当然如果要是嫌源代码运行麻烦,可以打成 exe 文件来使用哟。这下又可以在朋友圈秀操作了!(比如改改背景呀,黑色背景什么的。)

    展开全文
  • 01 前言 在日常的生活中,大家偶尔会看到朋友圈发的照片由...为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。 02 成果展示 先来看看成果,原图为文章开始的图片,一图切九图朋友...
  • 为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。02 成果展示先来看看成果,原图为文章开始的图片,一图切九图朋友圈:九张图发朋友圈的时候,还有个比较有...
  • #-*-coding:utf-8-*-‘‘‘‘‘‘importosfromPILimportImagepic_dir=r"H:\新建文件夹"forfilenameinos.listdir(path=pic_dir):iffilename.startswith("SAM"):pic_path=os.path.join(pic_dir,filename)print(...
  • 本文实例为大家分享了python批量修改图片大小的具体代码,供大家参考,具体内容如下引用的模块from PIL import ImageImage的使用def resize_image(img_path):try:mPath, ext = os.path.splitext(img_path)if astrcmp...
  • 匿名用户1级2018-05-22 回答# coding:utf-8# 为一张图片生成对应的字符集图片from PIL import Imageimport argparse# 命令行输入参数处理parser = argparse.ArgumentParser()parser.add_argument('file') # 输入文件...
  • 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析。 那么你知道如何使用Python读取Excel中的图片?又如何...
  • # 实验二 用python处理数值型数据(必做) ## 实验目的:熟悉python的基本数据结构,以及文件的输入与输出。 ## 实验环境:anaconda3 ## 实验数据: 2016年阿里天池大赛,也是中国高校第一届大数据挑战赛的数据。 ...
  • 在使用Python进行办公自动化操作时,会经常和Excel进行交互,本篇主要讲解了如何用Python读取Excel中图片以及如何用Python往Excel中写入图片,希望对Python的学习有所帮助。大家好,在使用Python进行办公自动化操作...
  • 本篇阅读时间约为 5 分钟。文/咪哥杂谈1前言在日常的生活中,大家...为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。2成果展示先来看看成果,原图为文章开始的图片,一图切九图...
  • 一:前言 ...为了熟练巩固的练习调库操作,今天就来带大家看看,如何用 Python 实现这个小功能。 二:成果展示 先来看看成果,原图为文章开始的图片,一图切九图朋友圈: 九张图发朋友圈的时候,还...
  • python封装成软件后怎么改参数打pycharm工具,新建python文件;在文件中,使用from...import导入Flask,request,jsonify请点入图片描述定个json格式的数据,包含了姓名、年龄和性别请点击输入图片描述调用Flask,使用...
  • 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析。那么你知道如何使用Python读取Excel中的图片?又如何...
  • 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析。那么你知道如何使用Python读取Excel中的图片?又如何...
  • 原标题:如何用Python读取Excel中图片?公众号: 早起Python作者:刘早起大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格...
  • 公众号: 早起Python作者:刘早起大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析。那么你知道如何使用...
  • 公众号: 早起Python作者:刘早起大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析。那么你知道如何使用...
  • 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析。那么你知道如何使用Python读取Excel中的图片?又如何...
  • 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析。那么你知道如何使用Python读取Excel中的图片?又如何...
  • 因此,通常我们加载完图片后,都是把图片转换成矩阵来进行更加复杂的操作。python中利用numpy库和scipy库来进行各种数据操作和科学计算。我们可以通过pip来直接安装这两个库pip install numpypip inst...
  • 本文一步步为你介绍,如何用Python自动判断多张图片中哪些超出阈值需要压缩,且保持宽高比。如果你想了解Python图像处理的基础知识,欢迎动手来尝试。痛点我喜欢用Markdown写文稿,然后发布到不同写作平台。我的好友...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 628
精华内容 251
关键字:

如何用python处理图片

python 订阅