直径 2、4、または 6 のホイールのスケルトン イメージが描かれています。ポイント座標も分岐しました。
異なる車輪を検出するための 2 つの方法について考えます。
- 円内の黒い部分を数える
- 描かれた直径を数える
どちらの場合も、どのように実装できるかわかりません。
ご覧のとおり、ホイールは完全にスケルトン化されていないため、違いを検出するのが難しくなっています。
これは私がスケルトン化に使用するコードです:
まず、画像を二値化し、膨張させてからスケルトン化します。
from skimage import io
import scipy
from skimage import morphology
import cv2
from scipy import ndimage as nd
import mahotas as mah
import pymorph as pm
import pymorph
complete_path = "wheel1.jpg"
gray = cv2.imread(complete_path,0)
print(gray.shape)
cv2.imshow('graybin',gray)
cv2.waitKey()
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)
imgbnbin = thresh
print("shape imgbnbin")
print(imgbnbin.shape)
cv2.imshow('binaria',imgbnbin)
cv2.waitKey()
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(6,6))
graydilate = cv2.dilate(imgbnbin, element) #imgbnbin
graydilate = cv2.dilate(graydilate, element)
#graydilate = cv2.erode(graydilate, element)
cv2.imshow('dilate',graydilate)
cv2.waitKey()
#SKELETONIZE
out = morphology.skeletonize(graydilate>0)
skel = out.astype(float)
cv2.imshow('scikitimage',skel)
cv2.waitKey()
io.imsave('wheel.jpg', skel)
sk = skel
print(sk.shape)
元の画像: