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()