Код ARUCO Оценка позы - выпуски SOLVEPNPPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Код ARUCO Оценка позы - выпуски SOLVEPNP

Сообщение Anonymous »

Я в настоящее время работаю над оценкой позы ARUCO, используя библиотеку OpenCV. Благодаря использованию последней версии OpenCV (4.8.1.78), я столкнулся с ограничениями с большинством функций, обычно используемых в учебных пособиях и репозиториях GitHub. Я пытаюсь выполнить оценку позы с использованием solvepnp. Векторы перевода и вращения, предоставленные этим методом, должны представлять позу кода ARUCO по отношению к камере. Чтобы проверить это, я отображаю эти векторы на каждом кадре. Вместо этого он отображается где -то в космосе в нижнем левом углу рам. Маркеры обнаруживаются точно, но оценка позы, похоже, не дает ожидаемых результатов. Любое понимание или руководство по разрешению этого несоответствия будет высоко оценено. < /P>

Код: Выделить всё

from utils import ARUCO_DICT, aruco_display
import cv2
import numpy as np
import matplotlib.pyplot as plt
import csv

def detect_aruco(camera, video, type, output_video_path, marker_size):
if camera:
video_capture = cv2.VideoCapture(0)
cv2.waitKey(2000)
else:
if video is None:
print("[Error] Video file location is not provided")
return

video_capture = cv2.VideoCapture(video)

if type not in ARUCO_DICT:
print(f"ArUCo tag type '{type}' is not supported")
return

aruco_dict = cv2.aruco.getPredefinedDictionary(ARUCO_DICT[type])
aruco_params = cv2.aruco.DetectorParameters()

fourcc = cv2.VideoWriter.fourcc(*'mp4v')
output_width = int(video_capture.get(cv2.CAP_PROP_FRAME_WIDTH))
output_height = int(video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
output_video = cv2.VideoWriter(output_video_path, fourcc, 20.0, (output_width, output_height))

all_tvecs = []
all_rvecs = []

while True:
ret, frame = video_capture.read()
print(ret)

if not ret:
false_count += 1
if false_count >= 2:
break  # If 'ret' is False twice consecutively, exit the loop
continue  # Skip to the next frame

# Reset false_count if 'ret' is True
false_count = 0

h, w, _ = frame.shape
width = 1000
height = int(width * (h / w))
frame = cv2.resize(frame, (width, height), interpolation=cv2.INTER_CUBIC)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

corners, ids, rejected = cv2.aruco.detectMarkers(gray, aruco_dict)
detected_markers = aruco_display(corners, ids, rejected, frame)

markerPoints = np.array([[0, 0, 0],
[marker_size, 0, 0],
[marker_size, marker_size, 0],
[0, marker_size, 0]], dtype=np.float32)

if np.all(ids is not None):
for i in range(0, len(ids)):
trash, rvec, tvec = cv2.solvePnP(markerPoints, corners[i], camera_matrix,
distortion_coefficients, False, cv2.SOLVEPNP_IPPE_SQUARE)

all_tvecs.append(tvec)
all_rvecs.append(rvec)

cv2.aruco.drawDetectedMarkers(frame, corners)
cv2.drawFrameAxes(frame, camera_matrix, distortion_coefficients, np.array(rvec), np.array(tvec), 0.1)

cv2.imshow("Image", detected_markers)

key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break

cv2.destroyAllWindows()
video_capture.release()
output_video.release()

return all_tvecs
Спасибо за любые предложения!>

Подробнее здесь: https://stackoverflow.com/questions/775 ... pnp-issues
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Функция CV2.SolvePNP Отсутствие выбросов не удалось в solvePnp.cpp: 824
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Функция CV2.SolvePNP Отсутствие выбросов не удалось в solvePnp.cpp: 824
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Функция CV2.SolvePNP Отсутствие выбросов не удалось в solvePnp.cpp: 824
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Маркер ArUco не может быть обнаружен библиотекой OpenCV ArUco в JAVA
    Anonymous » » в форуме JAVA
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Этот код не обнаруживает маркеры aruco и его идентификаторы, кто-нибудь может исправить код
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

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