gpt4 book ai didi

python - 使用 OpenCV 读取图像,改变像素并返回新图像

转载 作者:太空宇宙 更新时间:2023-11-03 21:15:41 25 4
gpt4 key购买 nike

我正在使用 Python、OpenCV 和 Numpy 读取黑白图像。然后我使用 numpy.nditer 遍历每个像素并将像素更改为 255(如果它大于 128),或者将其更改为 0。通过一些测试,我认为我做对了。我想不通的是如何使用 cv2.imshow 来“显示”修改后的图像。目前,它似乎只显示原始图像。

    import cv2
import numpy as np
image = cv2.imread('someimage', cv2.IMREAD_GRAYSCALE)

it = np.nditer(image)
for (x) in it:
if x > 128:
x = 255
else:
x = 0

cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()

感谢您的任何建议。

最佳答案

您可能需要查看 np.where 函数:

image[:] = np.where(image > 128, 255, 0)

除非绝对必要,否则你真的不应该遍历数组:

In [16]: %%timeit
....: a = np.random.randint(0, 255, (800,600))
....: a[:] = np.where(a > 128, 255, 0)
....:
10 loops, best of 3: 27.6 ms per loop

In [17]: %%timeit
....: image = np.random.randint(0, 255, (800,600))
....: it = np.nditer(image, op_flags=['readwrite'])
....: for (x) in it:
....: if x > 128:
....: x[...] = 255
....: else:
....: x[...] = 0
....:
1 loops, best of 3: 1.26 s per loop

关于python - 使用 OpenCV 读取图像,改变像素并返回新图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32239040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com