2017-09-15 87 views
0

我想根据硬编码的值设置阈值。我通过将原始图像分配给变量来完成此操作。这个变量用于阈值处理。但是,当我执行此操作时,原始图像也会受到限制。难道我做错了什么?或者有没有其他方法可以做到这一点?代码如下规定:下面提供为什么原始图像矩阵值被替换?

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 谢谢。

回答

2

imgx = img1

你基本上建立在已经存在的变量imgx参考。现在imgximg1指向相同的地址。

如果要深拷贝数组,请执行此操作。

img1 = numpy.array(imgx)

详见this post

+1

此外'imgx = img1.copy()'可以创建一个深层副本,并且与'numpy.copyTo(imgx,img1)'相同。 –