cv2.morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None) -> dst
src = cv2.imread('rice.png', cv2.IMREAD_GRAYSCALE)
# 지역 이진화 수행
dst1 = np.zeros(src.shape, np.uint8)
bw = src.shape[1] // 4
bh = src.shape[0] // 4
for y in range(4):
for x in range(4):
src_ = src[y*bh:(y+1)*bh, x*bw:(x+1)*bw]
dst- = dst1[y*bh:(y+1)*bh, x*bw:(x+1)*bw]
cv2.threshold(src_, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU, dst_)
cnt1, _ = cv2.connectedComponents(dst1)
dst2 = cv2.morphologyEx(dst1, cv2.MORPH_OPEN, None)
cnt2, _ = cv2.connectedComponents(dst2)
dst2에서 하단 부분까지 깔끔하게 쌀알이 검출되는 모습을 관찰할 수 있다.
cnt1
: 113,cnt2
: 99