aruco

import cv2
import cv2.aruco as aruco
from StereoCamera_Lib import Stereo_Camera
import time
import os

# 设置ArUco字典
aruco_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)

# 设置ArUco参数
parameters = aruco.DetectorParameters_create()

if __name__ == '__main__':
    n = 0
    cap = Stereo_Camera(camera_id=[0])
    cap.camera_init()

    # 打开视频捕捉
    cap_aruco = cv2.VideoCapture(0)  # 如果要从文件中读取视频,请将参数更改为视频文件名

    while True:
        start = time.time()
        image0 = cap.rgb_image(0)

        # 将图像转换为灰度图像
        gray = cv2.cvtColor(image0, cv2.COLOR_BGR2GRAY)

        # 检测ArUco标记
        corners, ids, rejected = aruco.detectMarkers(gray, aruco_dict, parameters=parameters)

        # 在图像中绘制检测到的标记
        frame = aruco.drawDetectedMarkers(image0, corners, ids)

        # 如果检测到标记
        if ids is not None:
            # 遍历每个检测到的标记
            for i in range(len(ids)):
                # 获取标记ID
                marker_id = ids[i][0]

                # 在图像中心绘制标记ID
                x = int(corners[i][0][0][0])
                y = int(corners[i][0][0][1])
                cv2.putText(frame, str(marker_id), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)

                # 输出标记ID
                print("Detected marker with ID:", marker_id)

        cv2.imshow('ArUco Marker Detection', frame)

        # 检查按键,如果按下'q'键则退出循环
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

        try:
            print("FPS:", 1 / (time.time() - start), "/s")
        except:
            pass

    cap.release()
    cap_aruco.release()
    cv2.destroyAllWindows()

 

import cv2
import cv2.aruco as aruco
from StereoCamera_Lib import Stereo_Camera
import time
import os

# 设置ArUco字典
aruco_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)

# 设置ArUco参数
parameters = aruco.DetectorParameters_create()

if __name__ == '__main__':
    i = 1000
    n = 0
    dataset_dir = "./data"
    cap = Stereo_Camera(camera_id=[0])
    cap.camera_init()

    if not os.path.isdir(dataset_dir):
        os.mkdir(dataset_dir)

    # 打开视频捕捉
    cap_aruco = cv2.VideoCapture(0)  # 如果要从文件中读取视频,请将参数更改为视频文件名

    while True:
        start = time.time()
        image0 = cap.rgb_image(0)

        if n % 2 == 0:
            # 将图像转换为灰度图像
            gray = cv2.cvtColor(image0, cv2.COLOR_BGR2GRAY)

            # 检测ArUco标记
            corners, ids, rejected = aruco.detectMarkers(gray, aruco_dict, parameters=parameters)

            # 在图像中绘制检测到的标记
            frame = aruco.drawDetectedMarkers(image0, corners, ids)

            # 如果检测到标记
            if ids is not None:
                # 遍历每个检测到的标记
                for i in range(len(ids)):
                    # 获取标记ID
                    marker_id = ids[i][0]

                    # 在图像中心绘制标记ID
                    x = int(corners[i][0][0][0])
                    y = int(corners[i][0][0][1])
                    cv2.putText(frame, str(marker_id), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2,
                                cv2.LINE_AA)

                    # 输出标记ID
                    print("Detected marker with ID:", marker_id)

            # 显示帧
            cv2.imshow('ArUco Marker Detection', frame)

        cv2.imwrite('./data/' + str(i) + '.jpg', image0)
        print("total image:", i)
        i += 1

        n += 1

        # 检查按键,如果按下'q'键则退出循环
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

        try:
            print("FPS:", 1 / (time.time() - start), "/s")
        except:
            pass

    cap.release()
    cap_aruco.release()
    cv2.destroyAllWindows()

 

posted @ 2023-07-15 20:00  yonuyeung  阅读(88)  评论(0)    收藏  举报