为什么原始图像矩阵值会被替换?

时间:2017-09-15 19:58:29

标签: python python-3.x opencv variables image-processing

我正在尝试根据硬编码值对图像进行阈值处理。我是通过将原始图像分配给变量来实现的。此变量用于阈值处理。但是,当我执行此操作时,原始图像也会被阈值化。难道我做错了什么?或者还有其他方法吗?代码如下:

import numpy as np
from scipy.misc import imread
import matplotlib.pyplot as plt 
img1 = imread('4.2.04.tiff')
imgx = img1
imgx[img1>=150] = 0
plt.figure()
plt.imshow(np.uint8(img1))
plt.show()
plt.title('Original Image after thresholding')
plt.figure()
plt.imshow(np.uint8(imgx))
plt.title('Thresholded Image')

图片如下: Original Image

Original Image after thresholding

thresholded image 谢谢。

1 个答案:

答案 0 :(得分:2)

  

imgx = img1

您基本上是在创建对现有变量imgx的引用。现在imgximg1指向同一地址。

如果要深度复制数组,请执行此操作。

img1 = numpy.array(imgx)

有关详细信息,请参阅this post