Windows下创建好一个新的opencv环境
import cv2
import pupil_apriltags
import re
import numpy as np
cap = cv2.VideoCapture(1)
def convert_to_int(lst):
return [int(item) for item in lst]
while(1):
# get a frame
ret, frame = cap.read()
# show a frame
res = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
detector = pupil_apriltags.Detector(families='tag25h9')
camera_param=[624.6957,624.6959,327.5524,243.1645]
tags = detector.detect(res,
estimate_tag_pose=True,
camera_params=camera_param,
tag_size=0.051)
L=len(tags)
if L :print("find ok",tags[0])
id=[]
center=[]
cen=[]
Rx=[]
Ry=[]
length=[]
localx=""
localy=""
#print("tagslen=",len(tags))
if len(tags) :
print("tagslen=",len(tags))
for i in range(len(tags)):
tag=tags[i]
id.append(tag.tag_id)
cen.append(int(tag.center[0]))
cen.append(int(tag.center[1]))
if tag.pose_t[0]<-0.001:localx='L'
elif tag.pose_t[0]>0.001:localx='R'
else:localx='True'
if tag.pose_t[1]<-0.001:localy='U'
elif tag.pose_t[1]>0.001:localy='D'
else:localy='True'
Rx.append(str(tag.pose_t[0]))
Ry.append(str(tag.pose_t[1]))
length.append(str(tag.pose_t[2])+'m')
center.append(cen)
txt1=str(id)+"length: "+str(length)
txt2="center: "+str(center)
txt3="localx: "+localx+" "+"dx: "+str(Rx)
txt4="localy: "+localy+" "+"dy: "+str(Ry)
fontScale=0.5
color=(255,0,0)
print(tags)
cv2.putText(frame, txt1, (10,50), cv2.FONT_HERSHEY_SIMPLEX, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)
cv2.putText(frame, txt2, (10,80), cv2.FONT_HERSHEY_SIMPLEX, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)
cv2.putText(frame, txt3, (10,100), cv2.FONT_HERSHEY_SIMPLEX, fontScale*1.5, color, thickness=None, lineType=None, bottomLeftOrigin=None)
cv2.putText(frame, txt4, (10,120), cv2.FONT_HERSHEY_SIMPLEX, fontScale*1.5, color, thickness=None, lineType=None, bottomLeftOrigin=None)
# True, (0, 255, 0), 2)
cv2.imshow("capture", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
#退出
break
cap.release()
cv2.destroyAllWindows()