【问题标题】:Substitute pixels of an image with other images yet retaining the image用其他图像替换图像的像素但保留图像
【发布时间】:2016-09-24 05:20:19
【问题描述】:

我看到一个女孩的图像是由她的多个图像组成的。所以我想使用 python 脚本来实现同样的事情。(我对图像处理完全陌生)

我正在为这个脚本使用 pil 库。

import sys,os
from PIL import Image
img = Image.open("DSC_0149.jpg")
pixels = img.load()
for i in range(img.size[0]):   
    for j in range(img.size[1]):
        pixels[i,j] = (i, j, 100) # I will change this to some pic image.
img.show()

我首先尝试更改保留图片的像素的颜色,但是此代码可以正常工作。

谁能指导我如何实现它。

编辑:我想用多张图片填充图片,但保留原始图片。 像这样的东西:http://www.photoshopessentials.com/photo-effects/photo-fill/,但以更好的方式。

【问题讨论】:

  • 请附上您想要的最终效果示例的图片。看起来您想要的东西与您目前用文字和代码输入的内容截然不同,以至于人们无法回答。
  • @jsbueno 请看链接photoshopessentials.com/photo-effects/photo-fill 但这不是很完美。

标签: python image python-imaging-library


【解决方案1】:

了解整个过程的最佳方法是花时间阅读相同语言的代码,大约 200 行:

https://github.com/codebox/mosaic

希望它能解决你的问题

【讨论】:

  • 这个问题是关于替换图像中的单个像素。 mosaic 能做到这一点吗?
【解决方案2】:

所以首先你需要用这个来编辑每个像素来改变颜色:

如果是rgb:

img.putpixel((10,15),(r,g,b))

更快:像素[1, 1] = (r, g, b)

否则:

Is it possible to change the color of one individual pixel in Python?

知道如何编辑每个像素后,您必须创建一个图像的小副本,调整大小如下:

复制图片:

// Not tested : Make sure it's rgb
img = Image.new( 'RGB', (img.size[0],(img.size[1]), "black") # create a new black image
pixels = img.load() # create the pixel map

for i in range(img.size[0]):    # for every pixel:
    for j in range(img.size[1]):
        pixels[i,j] = other_image_pixel[i,j] # set the colour accordingly

https://opensource.com/life/15/2/resize-images-python

对每个小图像应用颜色过滤器以匹配您将用该图像替换的区域颜色。

【讨论】:

  • 但是如果我改变每个像素的值,原始图片的形状就不会保留。我想用不同的图片来填充整个图片 RETAINING 原始图片。
  • 步骤:复制起始图像,调整副本大小,添加过滤器到子图像(复制)以适应起始图像,最后用每个子图像填充当前图像。
  • 但是如何用子图像“填充”当前图像?我不能简单地更改每个像素的值,因为这不会保留当前图像中的人脸。
  • 您将使用子图像设置(填充)放大图像的每个像素组。您不需要保留初始图像,因为您有一个小副本,组装后将代表大的。把它想象成一个拼图,其中每个拼图和平都是带有过滤器的子图像。您不必保留全局,因为您拥有将创建它的拼图的每个部分。
猜你喜欢
  • 2016-03-24
  • 2018-11-30
  • 2017-08-10
  • 1970-01-01
  • 2015-01-25
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多