Есть ли способ напрямую найти центр круга?Python

Программы на Python
Anonymous
Есть ли способ напрямую найти центр круга?

Сообщение Anonymous »


Я поместил объект в узор, похожий на мишень, где верхний слой объекта имеет круглую форму. Камера снимает изображение сверху, и я хочу напрямую найти центр и контур этого круга. Однако основной целевой шаблон часто мешает этому. Кроме того, положение камеры меняется при каждом снимке, что приводит к разным позиционным соотношениям объектов на изображениях. Как я могу точно определить центр круга в таком случае?

импортировать numpy как np импортировать cv2 как cv от ввода import Tuple нижний_зеленый = np.array([32, 69, 49]) Upper_green = np.array([84, 255, 255]) Lower_blue = np.array([0, 101, 0]) Upper_blue = np.array([37, 255, 255]) low_red = np.array([86, 90, 150]) Upper_red = np.array([180, 255, 255]) цвет = 'синий' если цвет == "красный": нижний_цвет = нижний_красный верхний_цвет = верхний_красный цвет elif == "зеленый": нижний_цвет = нижний_зеленый верхний_цвет = верхний_зеленый еще: нижний_цвет = нижний_синий верхний_цвет = верхний_синий ori_img = cv.imread("1.jpg") если ori_img равен None: печать('Нет') cv.imshow('аа',ori_img) hsv_frame = cv.cvtColor(ori_img, cv.COLOR_RGB2HSV) img = cv.inRange(hsv_frame, нижний_цвет, верхний_цвет) контуры, _ = cv.findContours(img, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE) max_contour = max(contours, key=cv.contourArea) cv.drawContours(ori_img, [max_contour], -1, (0, 255, 0), 2) моменты = cv.moments(max_contour) если моменты["m00"] != 0: cx = int(моменты["m10"] / моменты["m00"]) cy = int(моменты["m01"] / моменты["m00"]) cv.circle(ori_img, (cx, cy), 5, (0, 0, 255), -1) # Красный центроид cv.imshow('Изображение с контуром и центроидом', ori_img) cv.waitKey(0) Это фотография, которую я попробовал 1 2

Вернуться в «Python»