替代 .dilate() OpenCV
Alternative to .dilate() OpenCV
我在脚本中使用 cv2
和 Pillow
:
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
之间切换,并保存三张图片。我想要的是仅保存 一个 结果,而不是 三个 。
有没有办法,我可以继续使用 Pillow,以几乎 相同的执行速度 扩展图像,而不使用 cv2?
我已经试过了image.filter(ImageFilter.MaxFilter(size=3))
,但是太费CPU时间了。花费太多时间的原因是为了与 cv2.dilate(image, kernel, iterations=5)
具有相同的效果,我应该至少使用 image.filter(ImageFilter.MaxFilter(size=15))
如果您只是在为标准库中的函数寻找 OpenCV 替代方案,那么您可以尝试 SciPy 的函数(SO 问题 here)
我在脚本中使用 cv2
和 Pillow
:
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
之间切换,并保存三张图片。我想要的是仅保存 一个 结果,而不是 三个 。
有没有办法,我可以继续使用 Pillow,以几乎 相同的执行速度 扩展图像,而不使用 cv2?
我已经试过了image.filter(ImageFilter.MaxFilter(size=3))
,但是太费CPU时间了。花费太多时间的原因是为了与 cv2.dilate(image, kernel, iterations=5)
具有相同的效果,我应该至少使用 image.filter(ImageFilter.MaxFilter(size=15))
如果您只是在为标准库中的函数寻找 OpenCV 替代方案,那么您可以尝试 SciPy 的函数(SO 问题 here)