仅Python色彩调节器3d numpy

问题描述 投票:0回答:1

我正在尝试使用numpy制作一个rgb彩色图片编辑器。我已经尝试过使用嵌套的for循环,但是它确实很慢(超过一分钟)。我想控制嵌套数组第三维的第一个,第二个和第三个元素(r,g,b)。谢谢

这只是看数字:

%matplotlib inline
import numpy as np

img = plt.imread('galaxy.jpg')
img = np.array(img)

for i in range(len(img)):
   for j in range(len(img[i])):
       for k in (img[i][j]):
           print(k)
python numpy editor rgb photo
1个回答
0
投票

也许这可能对您有帮助。 np.ndenumerate()使您可以循环访问矩阵而无需嵌套for循环。我做了一个快速测试,就打印而言,我的第二个for循环(在下面的示例中)比三重嵌套的for循环要快一些。打印非常慢,因此取出打印语句可能有助于提高速度。至于修改这些值,我添加了r g b a变量,可以修改这些变量以缩放各种像素值。只是一个想法,但也许它可以给您更多的想法以进行扩展。另外,我也没有检查哪个索引值对应于r,g,b或a。

r = 1.0
g = 1.0
b = 1.0
a = 1.0

for index, pixel in np.ndenumerate(img): # <--- Acheives the same as your original code
    print(pixel) 

for index, pixel in np.ndenumerate(img):
    i = index[0]
    j = index[1]
    print("{} {} {} {}".format(img[i][j][0], img[i][j][1], img[i][j][2], img[i][j][3]))

for index, pixel in np.ndenumerate(img):
    i = index[0]
    j = index[1]
    imgp[i][j][0] *= r;
    imgp[i][j][1] *= g;
    imgp[i][j][2] *= b;
    imgp[i][j][3] *= a;

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.