如何使用cv2更改图像的颜色?

时间:2020-06-06 14:50:25

标签: python-3.x cv2

现在,我得到一个图像,并且想要更改其颜色。 然后,显示之前和之后

这就是我的写作方式

import numpy as np
import cv2

Original_img = cv2.imread('img.jpg')
New_img = Original_img

print(Original_img[0 , 20] , New_img[0 , 20])


New_img[0 , 20] = 0  #change the color of new

print( Original_img[0 , 20] , New_img[0 , 20])

但是事实证明两者都改变​​了。 但是,我只希望新的更改

输出:

[55 69 75] [55 69 75]
[0 0 0] [0 0 0]

1 个答案:

答案 0 :(得分:0)

这是一个棘手的问题。原来,您的Original_img和New_img都引用Python中的同一基础对象。您需要进行复制以创建新对象:

New_img = Original_img.copy()  # use copy function from numpy

Python列表也是如此。这是一个使用交互式Python会话的带注释的简单示例:

>>> a = [1,2,3]
>>> b = a
>>> b
[1, 2, 3]
>>> b[1] = 3.1415927   # we think we are only changing b
>>> b
[1, 3.1415927, 3]      # b is changed
>>> a
[1, 3.1415927, 3]      # a is also changed

同一示例,使用copy()

>>> from copy import copy
>>> a = [1,2,3]
>>> b = copy(a)  # now we copy a
>>> b
[1, 2, 3]
>>> b[1] = 3.1415927
>>> b
[1, 3.1415927, 3] # b is changed
>>> a
[1, 2, 3]         # a is unchanged!
相关问题