Python 颜色调整器仅 3d numpy

Python color adjuster 3d numpy only

我正在尝试制作一个 rgb 彩色图片编辑器,只使用 numpy。 我试过使用嵌套的 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)

也许这对你有帮助。 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;

希望对您有所帮助