如何使用 cv2 更改图像的颜色?
How can I change the color of an image by using 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]
这是一个棘手的问题。事实证明,你的 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!
现在,我得到了一张图片,我想更改它的颜色。 然后,显示之前和之后
我是这样写的
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]
这是一个棘手的问题。事实证明,你的 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!