所以我在raspbian(raspberry pi 2模型B)上使用OpenCV.我正在进行视觉/图像处理,并且rasppi就是我所得到的(如果可以的话,我会使用计算机).
我需要运行一个骨架函数.我找到了以下实现:
import cv2
import numpy as np
img = cv2.imread('img.png',0)
size = np.size(img)
skeleton = np.zeros(img.shape,np.uint8)
ret,img = cv2.threshold(img,127,255,0)
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
finished = False
while(not finished):
eroded = cv2.erode(img,kernel)
temp = cv2.dilate(eroded,kernel)
temp = cv2.subtract(img,temp)
skeleton = cv2.bitwise_or(skeleton,temp)
img = eroded.copy()
zeros = size - cv2.countNonZero(img)
if zeros==size:
finished = True
cv2.imshow("skeleton",skeleton)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
当它运行时,它非常非常慢(不出所料)(我在此之前对图像进行FFT和带通滤波操作,然后运行骨架操作).其他代码很慢,但会完成操作.
图像很大 - 我可以裁剪一些,但我认为这还不够.我试图找到这个的优化版本,但到目前为止还没有提出任何建议.任何想法或解决方案?