Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用opencv python实现PIL.ImageOps.solarize?_Python_Opencv_Python Imaging Library - Fatal编程技术网

如何使用opencv python实现PIL.ImageOps.solarize?

如何使用opencv python实现PIL.ImageOps.solarize?,python,opencv,python-imaging-library,Python,Opencv,Python Imaging Library,我尝试了这个代码,但发现颜色不一样 from PIL import ImageOps from PIL import Image im = Image.open(imgpth) impil = np.array(im) imcv = cv2.imread(imgpth)[:, :, ::-1].copy() print(np.sum(imcv - impil)) impil_sol = np.array(ImageOps.solarize(im, threshold=128)) idx = i

我尝试了这个代码,但发现颜色不一样

from PIL import ImageOps
from PIL import Image
im = Image.open(imgpth)
impil = np.array(im)
imcv = cv2.imread(imgpth)[:, :, ::-1].copy()
print(np.sum(imcv - impil))

impil_sol = np.array(ImageOps.solarize(im, threshold=128))
idx = imcv > 128
imcv_sol[idx] = 255 - imcv_sol[idx]
print(np.sum(impil_sol - imcv_sol))

第一个输出为0,但第二个输出不是0。PIL.ImageOps.solarize到底做了什么?我如何使用opencv python实现它?

在您给定的代码中有一些错误和遗漏;实际上,它甚至没有编译。请注意始终提供一个适当的

第一个问题是,
imcv\u sol
没有正确初始化。第二个问题是,对的描述似乎是错误的(我强调):

将所有像素值反转到阈值上方

让我们看一下以下修改后的代码:

导入cv2#请提供所有必要的导入
作为np导入numpy#请提供所有必要的导入
从PIL导入ImageOps
从PIL导入图像
im=Image.open('path/to/your/Image.png'))
impil=np.数组(im)
imcv=cv2.imread('path/to/your/image.png')[:,:,::-1]
打印(np.总和(imcv-impil))
impil_sol=np.array(ImageOps.solarize(im,阈值=128))
imcv_sol=imcv.copy()#imcv_sol没有初始化?
idx=imcv>=128#阈值似乎也被合并,即这里是>=而不是>
imcv_sol[idx]=255-imcv[idx]
打印(np.总和(impil_sol-imcv_sol))
如果我对任何图像运行该代码,我会得到正确的输出:

0
0
如果切换到
idx=imcv>128
,则存在偏差

您可以检查我的假设,如果您查看具有给定阈值的所有像素,例如,获取
ids=impil==128
,然后检查
impil\u sol[ids]
。所有值都是
127
,因此(也)所有值为
128
的像素必须已反转,这在上述描述中没有反映出来

希望有帮助