python - 为什么要替换原始图像矩阵值?

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

最佳答案

imgx = img1



您基本上是在创建对已经存在的变量imgx的引用。现在,imgximg1指向相同的地址。

如果要深度复制数组,请执行此操作。
img1 = numpy.array(imgx)
有关详细信息,请参见this post

关于python - 为什么要替换原始图像矩阵值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46246713/

相关文章:

python - Pony ORM 中的 ORing 过滤器在一起

python - 如何以 block 的形式旋转现有数据框?

android - TensorFlow + AndroidScanner - 找不到 "libopencv_java3.so"

c++ - 如何在 Windows 上编译 mergevec.cpp?

python - 从 C++ dll 到 Python 的指针 vector 上返回指针

python - 将 csv 文件导入到列表列表中

python - 我需要创建一个函数,将整数转换为二进制,并在 python 中使用一组位数

python - 如何从文本文件中去除标点符号

python-3.x - Altair 交互式线图,单击右侧图标时使线弹出并突出显示

python - 为 opencv python 包安装 gstreamer 支持