终于等到你

众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

Apritag角点代码检测

#import apriltag
#import pupil_apriltags as apriltag     # for windows
import cv2
import numpy as np
import sys
import pandas as pd
from pupil_apriltags import Detector
import os
print('ok')
def init_detector():

    at_detector = Detector(families='tag36h11',
                           quad_decimate=1.0,
                           quad_sigma=0.0,
                           refine_edges=1,
                           decode_sharpening=0.25,
                           debug=0)
    return at_detector


def extract_tags(filename, at_detector):


    # print(filter['marker_id'])

    img = cv2.imread('./images/' + filename)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    tags = at_detector.detect(gray)
    # print(tags[0])
    # print("%d apriltags have been detected." % len(tags))

    font = cv2.FONT_HERSHEY_SIMPLEX
    df = pd.DataFrame()
    family = []
    tag_id = []
    tag_corners = []
    tag_centers = []
    image = []

    for tag in tags:
        if tag.tag_id not in [666, 777, 10]:
        # cv2.circle(img, tuple(tag.corners[0].astype(int)), 5, (0, 0, 255), -1)  # left-top
        # cv2.circle(img, tuple(tag.corners[1].astype(int)), 5, (0, 255, 0), -1)  # right-top
        # cv2.circle(img, tuple(tag.corners[2].astype(int)), 5, (255, 255, 0), -1)  # right-bottom
        # cv2.circle(img, tuple(tag.corners[3].astype(int)), 5, (255, 255, 255), -1)  # left-bottom
        # cv2.putText(img, str(tag.tag_id), tuple(tag.corners[0].astype(int)), font, 2, (0, 255, 255), 3)  # left-bottom
            #print('zzzzz')
            family.append(tag.tag_family)
            tag_id.append(tag.tag_id)
            tag_corners.append(tag.corners)
            tag_centers.append(tag.center)
            image.append(filename)

    df['family'] = family
    df['tag_id'] = tag_id
    df['tag_corners'] = tag_corners
    df['tag_centers'] = tag_centers
    df['image'] = image

    #print(df)

    return df

def GetFileList(dir):
    file_list = os.listdir(dir)
    return file_list


def write_info(df , filename):
    # if filename[:3] == 'CCD':
    #     ccd_id = filename.split('_')[0]
    #     #print(text)
    #     txt_name = ccd_id + '/' + filename + '.txt'
    # else:
    #     txt_name = 'SLR' + '/' + filename + '.txt'

    if not os.path.exists('./txt/'):
        os.makedirs('./txt/')
    txt_path = './txt' + filename + '.txt'
    #print(txt_path)
    if len(df) > 0:
        os.makedirs(os.path.dirname(txt_path), exist_ok=True)
        with open(txt_path, 'w') as f:

            f.write(str(len(df) * 4) + ' 128' + '\n')
            for i in range(len(df)):
                # print(df.iloc[i]['tag_id'])
                # print(df.iloc[i]['tag_corners'])
                for corner_id in range(len(df.iloc[i]['tag_corners'])):

                    D_value = ''
                    for z in range(64):
                        D_value = str(D_value) + ' ' + str(0)
                    for d in range(64):
                        D_value = str(D_value) + ' ' + str(0)

                    if df.iloc[i]['tag_corners'][corner_id][0] < 0:
                        df.iloc[i]['tag_corners'][corner_id][0] = 0
                    if df.iloc[i]['tag_corners'][corner_id][1] < 0:
                        df.iloc[i]['tag_corners'][corner_id][1] = 0

                    if i == len(df) -1 and  corner_id == 3:
                        line = str(df.iloc[i]['tag_corners'][corner_id][0]) + ' ' + str(
                            df.iloc[i]['tag_corners'][corner_id][1]) + ' ' + '0' + ' ' + '0' + D_value
                    else:
                        line = str(df.iloc[i]['tag_corners'][corner_id][0]) + ' ' + str(
                            df.iloc[i]['tag_corners'][corner_id][1]) + ' ' + '0' + ' ' + '0' + D_value + '\n'

                    # print(line)
                    f.write(line)

        f.close()


def write_info_p(df , filename):
    # if filename[:3] == 'CCD':
    #     ccd_id = filename.split('_')[0]
    #     #print(text)
    #     txt_name = ccd_id + '/' + filename + '.txt'
    # else:
    #     txt_name = 'SLR' + '/' + filename + '.txt'

    if not os.path.exists('./pairs/'):
        os.makedirs('./pairs/')
    txt_path = './pairs' + filename + '.txt'
    if len(df) > 2:
        os.makedirs(os.path.dirname(txt_path), exist_ok=True)
        with open(txt_path, 'w') as f:

                for i in range(len(df)):
                    # print(df.iloc[i]['tag_id'])
                    # print(df.iloc[i]['tag_corners'])
                    for corner_id in range(len(df.iloc[i]['tag_corners'])):
                        D_value = ''
                        for z in range(1):
                            D_value = str(D_value) + ' ' + str(df.iloc[i]['tag_id'])
                        for d in range(1):
                            D_value = str(D_value) + ' ' + str(corner_id)

                        if df.iloc[i]['tag_corners'][corner_id][0] < 0:
                            df.iloc[i]['tag_corners'][corner_id][0] = 0
                        if df.iloc[i]['tag_corners'][corner_id][1] < 0:
                            df.iloc[i]['tag_corners'][corner_id][1] = 0

                        if i == len(df) -1 and  corner_id == 3:
                            line = str(df.iloc[i]['tag_corners'][corner_id][0]) + ' ' + str(
                                df.iloc[i]['tag_corners'][corner_id][1]) + ' ' + '0' + ' ' + '0' + D_value
                        else:
                            line = str(df.iloc[i]['tag_corners'][corner_id][0]) + ' ' + str(
                                df.iloc[i]['tag_corners'][corner_id][1]) + ' ' + '0' + ' ' + '0' + D_value + '\n'

                        # print(line)
                        f.write(line)

        f.close()


import os

def file_name(file_dir):
    L = []
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            if os.path.splitext(file)[1] == '.JPG' or os.path.splitext(file)[1] == '.bmp':
                L.append(os.path.join(root, file))

    file_list = []

    for file in L:
        mod_file = file[8:]
        print(mod_file)
        file_list.append(mod_file)
    return file_list




posted @ 2021-07-07 16:59  gzr2018  阅读(288)  评论(0编辑  收藏  举报