import cv2 def get_one_center(image): img = cv2.imread(image, 0) # convert the grayscale image to binary image ret, thresh = cv2.threshold(img, 127, 255, 0) # calculate moments of binary image M = cv2.moments(thresh) # calculate x,y coordinate of center cX = int(M["m10"] / M["m00"]) cY = int(M["m01"] / M["m00"]) # put text and highlight the center cv2.circle(img, (cX, cY), 5, (0, 0, 0), -1) cv2.putText(img, "centroid", (cX - 25, cY - 25), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 255), 2) # display the image cv2.imshow("Image", img) cv2.waitKey(0) def get_multi_center(image): # read image through command line img = cv2.imread(image, 0) # convert the grayscale image to binary image ret, thresh = cv2.threshold(img, 127, 255, 0) # find contours in the binary image contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) for c in contours: # calculate moments for each contour M = cv2.moments(c) # calculate x,y coordinate of center cX = int(M["m10"] / M["m00"]) cY = int(M["m01"] / M["m00"]) cv2.circle(img, (cX, cY), 5, (0, 0, 0), -1) cv2.putText(img, "centroid", (cX - 25, cY - 25), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 255), 2) # display the image cv2.imshow("Image", img) cv2.waitKey(0) get_one_center('0001.jpg') get_multi_center('0009.jpg')
Opencv-Python求单个/多个图像重心
最新推荐文章于 2022-06-26 23:11:29 发布