2017-07-03 50 views
0

我使用cv2Pillow在我的腳本:替代.dilate()OpenCV的

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") 

正如你所看到的,我必須OpenCVPillow之間進行切換,並保存三個圖像。我想要的是,只保存一個的結果,而不是三個

有沒有一種方法,我可以繼續枕頭,幾乎與相同的執行速度擴大圖像,而不使用cv2?

我已經嘗試過image.filter(ImageFilter.MaxFilter(size=3)),但CPU時間過長。花費太多時間的原因是,爲了達到與cv2.dilate(image, kernel, iterations=5)相同的效果,我應該至少使用image.filter(ImageFilter.MaxFilter(size=15))

+1

這個函數['PIL.ImageFilter.MaxFilter'](http://pillow.readthedocs.io/en/4.2.x/reference/ImageFilter.html#PIL。 ImageFilter.MaxFilter)? – ikkuh

+0

@ikkuh我已經嘗試過了,速度要慢很多,因爲迭代次數應該比cv2更大 –

+1

爲什麼不手動實現形態操作? –

回答

1

如果您只是爲標準庫中存在的函數尋找OpenCV替代方法,那麼您可以試試SciPy的功能(SO問題here

+0

我正在尋找枕頭替代品,因爲我想用枕頭替換我的整個腳本 –