用Python编写一个种子生长法识别月球撞击坑轮廓,并返回位置坐标和大小和深度以及识别后轮廓图片的代码
时间: 2023-03-11 10:11:53 浏览: 128
可以参考下面这段代码:import cv2
import numpy as np # 读取图片
img = cv2.imread('moon.jpg')
# 转换为灰度图
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 设置种子生长参数
loDiff = 10
upDiff = 10
connectivity = 4 # 执行种子生长
flags = connectivity | cv2.FLOODFILL_FIXED_RANGE | cv2.FLOODFILL_MASK_ONLY
mask = np.zeros((img_gray.shape[0] + 2, img_gray.shape[1] + 2), np.uint8)
im_floodfill = img_gray.copy()
cv2.floodFill(im_floodfill, mask, (0, 0), 255, loDiff=loDiff, upDiff=upDiff, flags=flags) # 计算撞击坑轮廓
im_floodfill_inv = cv2.bitwise_not(im_floodfill)
im_out = img_gray | im_floodfill_inv # 计算撞击坑的位置坐标、大小和深度
contours, hierarchy = cv2.findContours(im_out, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[0]
x, y, w, h = cv2.boundingRect(cnt)
depth = w*h # 保存识别后的轮廓图片
cv2.imwrite('moon_contours.jpg', im_out)
阅读全文