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]
解决方案
这是一个棘手的问题。事实证明,您的 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!
推荐阅读
- php - Wordpress 页面和模板查询
- javascript - 从场景图树循环
- typescript - ngx-facebook npm 包的 ui mathod 承诺永远不会解决或拒绝
- json - Google Cloud Vision 示例代码错误 (utf-8)
- .htaccess - https://domain dot com 到 https://www.domain dot com 无需编辑 .htaccess 文件
- php - 将 MySQLi 结果填充到 PHP 索引数组中
- php - 服务器中的 ziparchive() 问题
- django - 是否可以在 Django 中扩展站点范围的模板/引用更高目录中的模板?
- c++ - 特殊情况下的智能指针析构函数
- hazelcast - Hazelcast 节点不加入集群