-
Notifications
You must be signed in to change notification settings - Fork 0
/
ricecount.py
42 lines (32 loc) · 1.07 KB
/
ricecount.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 7-05. 모폴로지 (2) 열기와 닫기
# 열기 : 침식 후 팽창 / 닫기 : 팽창 후 침식
import sys
import numpy as np
import cv2
src = cv2.imread('ref/rice.png', cv2.IMREAD_GRAYSCALE)
if src is None:
print('Image load failed!')
sys.exit()
# src 영상에 지역 이진화 수행 (local_th.py 참고)
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
cnt1, _ = cv2.connectedComponents(dst1)
print('cnt1:', cnt1)
# cv2.MORPH_OPEN : 열기(침식 후 팽창)
dst2 = cv2.morphologyEx(dst1, cv2.MORPH_OPEN, None)
#dst2 = cv2.erode(dst1, None)
#dst2 = cv2.dilate(dst2, None)
cnt2, _ = cv2.connectedComponents(dst2)
print('cnt2:', cnt2)
cv2.imshow('src', src)
cv2.imshow('dst1', dst1)
cv2.imshow('dst2', dst2)
cv2.waitKey()
cv2.destroyAllWindows()