【发布时间】:2017-12-27 02:49:06
【问题描述】:
我使用 np.where 处理图像并将所有像素设置为 1 或 0。 我的代码很简单,如下
import os
import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio
import cv2
path='/home/aidata/segmentation_data/label'
files=os.listdir(path)
files.sort()
idx = 0
for afile in files:
print idx
idx = idx + 1
file_path=os.path.join(path,afile)
im = cv2.imread(file_path,0)
im = np.where(im != 0, 1, 0)
cv2.imwrite(file_path,im)
print 'finished'
但是,运行此代码后,我发现仍有一些像素值为 2 !?我不知道这里发生了什么,我使用 np.where(im==2) 检查这些像素的索引,它确实返回了正确的结果,但你不能只将它们更改为 1.. 有什么帮助吗? 我上传了一个原始图像的例子和从Matlab显示的部分像素值。
【问题讨论】:
-
Numpy.where 返回一个值。你需要把它分配给一些东西。
-
numpy.where函数 here 的引用。查看 Parameters 和 Returns 部分可以确认@wwii 所说的内容。 -
抱歉,我在发布代码时丢失了一些东西。我已经将值返回给图像
-
你能发布一个
im的最小例子吗? -
当然,我在问题中添加了一个示例。