小编meh*_*h93的帖子

使用python优化opencv的骨架功能

所以我在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和带通滤波操作,然后运行骨架操作).其他代码很慢,但会完成操作.

图像很大 - 我可以裁剪一些,但我认为这还不够.我试图找到这个的优化版本,但到目前为止还没有提出任何建议.任何想法或解决方案?

python opencv image-processing

1
推荐指数
1
解决办法
3739
查看次数

标签 统计

image-processing ×1

opencv ×1

python ×1