Python:如何使用随机坐标逐像素显示图像

4

1. 将image.jpg加载到数组中 2. 从数组中随机选择坐标并显示具有所有属性的像素 3. 弹出使用过的坐标 4. 重复步骤#2直到数组为空

这将显示一个随机填充像素的图像。

最终结果总是原始图像,但每次填充方式都不同。

如何在Python3中实现?


https://dev59.com/Qa7la4cB1Zd3GeqPe40N#52437794 - Joe
我不是在尝试创建随机图像,而是逐个显示随机像素,这些像素一旦全部显示出来就会形成我的原始图片。因此,从表示图像的数组中随机选择一个像素并显示它。从数组中删除该坐标,并从该区域随机选择另一个像素并进行显示。如果加入延迟进行此操作,则会看到一个图像逐渐形成,由单独的像素添加到屏幕上。 - yopines
你打算使用什么技术/环境来显示它?Qt?X11? - Mark Setchell
你也可以制作一个动画GIF... - Mark Setchell
使用Ubuntu最新版和PyCharm 2019.3。 - yopines
显示剩余4条评论
1个回答

2

以下是一种实现方式...

#!/usr/bin/env python3

import numpy as np
import cv2

# Open the image and make black version, same size, to fill randomly
im = cv2.imread('paddington.png')
fade = np.zeros_like(im)

# Generate a randomly shuffled array of the coordinates
X,Y = np.where(im[...,0]>=0)
coords = np.column_stack((X,Y))
np.random.shuffle(coords)

for n, c in enumerate(list(coords)):
    # Copy one original pixel across to image we are fading in
    x, y = c
    fade[x,y] = im[x,y]
    # It takes 1ms to update the image, so we don't update after every pixel
    if n % 500 == 0:
        cv2.imshow('Fading in...', fade)
        cv2.waitKey(1)

# Image should now be completely faded in
cv2.imshow('Fading in...', fade)
cv2.waitKey()

在此输入图片描述

关键词: Python, OpenCV, 淡入, 从黑色淡入, 从白色淡入, 图像处理, 视频.


实际图像的淡出效果比这个暗示的更加平滑,我只是制作了一个动画GIF,更新速率为每秒2帧,以适应StackOverflow每张图片2MB的限制。 - Mark Setchell
这非常有效,正是我想要的。 Paddington似乎相当快地展现了自己(特点),我想知道如何使它更加随机和快一些。 我正在使用来自以下网址的大型图像:https://nirklars.files.wordpress.com/2015/02/exomoon_of_binary_red_dwarfs__2_by_nirklars-d86asrr.png 它确实很随机,但填充速度有点慢。 谢谢!!! - yopines
将500更改为2000或其他数字,这样更新的频率就会降低,但每次更新的像素数量会增加。 - Mark Setchell
我将调整各种值以优化输出。PNG 似乎比 JPG 处理得更好。 - yopines

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接