Python Numpy数组运算符返回所有白色图像

Python Numpy数组运算符返回所有白色图像,python,numpy,Python,Numpy,我在灰度图像上执行了一个小的均匀量化算法。当我自己做循环时,生成的图像与预期一样(n_级别不同灰度)。这段代码和预期的一样非常慢 当我使用numpy操作符来加速代码时,我得到了不同的结果(全白色图像)。我似乎不知道为什么。。。我认为这是一个数据类型转换的问题,但我无法解决这个问题 有什么帮助吗 import cv2 import numpy as np frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) for y in range(0,

我在灰度图像上执行了一个小的均匀量化算法。当我自己做循环时,生成的图像与预期一样(n_级别不同灰度)。这段代码和预期的一样非常慢

当我使用numpy操作符来加速代码时,我得到了不同的结果(全白色图像)。我似乎不知道为什么。。。我认为这是一个数据类型转换的问题,但我无法解决这个问题

有什么帮助吗

import cv2
import numpy as np

frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
for y in range(0, h):
    for x in range(0, w):
        frame_gray[y, x] = round(frame_gray[y, x] * n_levels / 255) * 255 / n_levels

# DIFFERENT RESULT THAN
np.rint(frame_gray * n_levels / 255) * 255 / n_levels

我能够让numpy操作符像我的一样为这样的循环工作:

(np.rint((frame_gray / 255) *  n_levels)  * (255 / n_levels)).astype(np.ubyte) 

现在我得到了相同的结果,当然这要快得多,因为numpy知道它在做什么…

frame_gray.dtype得到了什么?而且,我想我看到了问题所在。添加整个代码,以便我可以重现错误。cvtColor使用uint8填充帧_灰色,这是我对灰色图像的期望。循环之后,数据类型仍然是uint8。但是,在numpry运算符之后,数组是float64。我无法解决此问题…您需要包括相关的
import
语句以及您的图像!你为什么使用两个不同的用户名?我在另一台计算机上,懒惰的我不想通过谷歌安全检查!