проблема центра масс изображения маски масштаба - PullRequest
0 голосов
/ 23 сентября 2018

теперь я хочу использовать python3 cv2 lib, чтобы найти центр масс (моменты) бинарной маски, как вы можете видеть на этой той же маске, изображающей масштаб mutil-масштабирования , синий - оригинального размерамаска, а фиолетовые и зеленые - уменьшенные, я думаю, что если я продолжу уменьшать синюю маску, все маски меньших версий в конечном итоге сойдутся в центр, также сместится центр масс всех масок меньших версий, это то, что я хочу , поэтому есть возможность реализовать его в opencv python?и как мне позвонить в этот центр?

большое спасибо!

1 Ответ

0 голосов
/ 23 сентября 2018

Я думаю, вы можете получить свой center из макс. Регионов the distance map следующим образом:

left: your origin image 
mid: distmap, blur for the border, purple for the center, green for moments center
right: display in color 

enter image description here

# 2018.09.23 12:00 (CST)
import numpy as np 
import cv2 

img = cv2.imread("masks.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
th, threshed = cv2.threshold(gray, 100, 255, cv2.THRESH_OTSU|cv2.THRESH_BINARY_INV)
dist = cv2.distanceTransform(threshed, cv2.DIST_C, 3, None, cv2.CV_32F)
## Notice, I just find the first max of the max-regions in the distmap
xid = dist.argmax()
nh, nw = img.shape[:2]
cx = xid%nw
cy = xid//nw
print((cx, cy))
cv2.circle(img, (cx,cy), 5, purple, -1, cv2.LINE_AA)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
...