Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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
Python .displate()OpenCV的替代方法_Python_Opencv_Pillow - Fatal编程技术网

Python .displate()OpenCV的替代方法

Python .displate()OpenCV的替代方法,python,opencv,pillow,Python,Opencv,Pillow,我正在脚本中使用cv2和枕头: image = Image.open("img1.png") #do some stuff to the image image.save("result1.png") image = cv2.imread("result1.png") kernel = np.ones((5, 5), np.uint8) dilated_image = cv2.dilate(image, kernel, iterations=3) cv2.imwrite("result2.pn

我正在脚本中使用
cv2
枕头

image = Image.open("img1.png")
#do some stuff to the image
image.save("result1.png")

image = cv2.imread("result1.png")
kernel = np.ones((5, 5), np.uint8)
dilated_image = cv2.dilate(image, kernel, iterations=3)
cv2.imwrite("result2.png", dilated_image)

final_image = Image.open("result2.png")
#do some other stuff to the image
final_image.save("final_result.png")
如您所见,我必须在
OpenCV
Pillow
之间切换,并保存三张图像。我想要的是只保存一个结果,而不是三个结果

有没有一种方法,我可以继续使用枕头,在不使用cv2的情况下,以几乎相同的执行速度扩展图像


我已经尝试了
image.filter(ImageFilter.MaxFilter(size=3))
,但它占用了太多的CPU时间。它花费太多时间的原因是,为了获得与
cv2.deplate(image,kernel,iterations=5)
相同的效果,我应该至少使用
image.filter(ImageFilter.MaxFilter(size=15))

如果您只是在为标准库中的函数寻找OpenCV替代方案,然后你可以试试SciPy的函数(所以问题)

这个函数怎么样?@ikkuh我已经试过了,而且速度要慢得多,因为迭代次数应该比CV2大。为什么不手动实现形态学操作呢?@JohnSmith在我看来,模块是最接近的——看看这个。不幸的是,它似乎只支持3x3内核“在CPU时间上不会变慢”——对此表示怀疑。OpenCV实现是手工矢量化的,粗略地看,在代码库中没有任何优化级别。而用纯Python编写的任何东西都不可能达到与之匹配的速度。正如@DanMašek所说的,使用手动实现,就没有机会达到与之匹配的速度。如果您想避免使用OpenCV,SciPy是您的最佳选择。否则,您将需要放弃一项要求。在OpenCV上复制
迭代
最简单的方法就是手动迭代Pillow函数
迭代
次。我正在寻找Pillow替代方案,因为我想用Pillow替换我的整个脚本