基于安卓手机的辅助驾驶APP开发

Posted Gendan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于安卓手机的辅助驾驶APP开发相关的知识,希望对你有一定的参考价值。

from pycocotools.coco import COCO
import numpy as np
import skimage.io as io
import matplotlib.pyplot as plt
import os
from PIL import Image
from PIL import ImageDraw
import csv
import shutil​
def create_coco_maps(ann_handle):

coco_name_maps = {}
coco_id_maps = {}
cat_ids = ann_handle.getCatIds()
cat_infos = ann_handle.loadCats(cat_ids)
for cat_info in cat_infos:
    cat_name = cat_info[\'name\']
    cat_id = cat_info[\'id\']
    if cat_name not in coco_name_maps.keys():
        coco_name_maps[cat_name] = cat_id
    if cat_id not in coco_id_maps.keys():
        coco_id_maps[cat_id] = cat_name​
return coco_name_maps, coco_id_maps

def get_need_cls_ids(need_cls_names, coco_name_maps):

need_cls_ids = []
for cls_name in coco_name_maps.keys():
    if cls_name in need_cls_names:
        need_cls_ids.append(coco_name_maps[cls_name])
return need_cls_ids

def get_new_label_id(name, need_cls_names):

for i,need_name in enumerate(need_cls_names):
    if name == need_name:
        return i
return None

if name == \'__main__\':

# create coco ann handle
need_cls_names = [\'person\',\'bicycle\',\'car\',\'motorcycle\',\'bus\',\'truck\',\'traffic light\']
dst_img_dir = \'/dataset/coco_traffic_yolov5/images/val/\'
dst_label_dir = \'/dataset/coco_traffic_yolov5/labels/val/\'
min_side = 0.04464 # while 224*224, min side is 10. 0.04464=10/224
dataDir=\'/dataset/COCO/\'
dataType=\'val2017\'
annFile = \'{}/annotations/instances_{}.json\'.format(dataDir,dataType)
ann_handle=COCO(annFile)
# create coco [电子钱包](https://www.gendan5.com/wallet.html)maps for id and name
coco_name_maps, coco_id_maps = create_coco_maps(ann_handle)​
# get need_cls_ids
need_cls_ids = get_need_cls_ids(need_cls_names, coco_name_maps)​
# get all imgids
img_ids = ann_handle.getImgIds() # get all imgids
for i,img_id in enumerate(img_ids):
    print(\'process img: %d/%d\'%(i, len(img_ids)))
    new_info = \'\'
    img_info = ann_handle.loadImgs(img_id)[0]
    img_name = img_info[\'file_name\']
    img_height = img_info[\'height\']
    img_width = img_info[\'width\']​
    boj_infos = []
    ann_ids = ann_handle.getAnnIds(imgIds=img_id,iscrowd=None)
    for ann_id in ann_ids:
        anns = ann_handle.loadAnns(ann_id)[0]
        obj_cls = anns[\'category_id\']
        obj_name = coco_id_maps[obj_cls]
        obj_box = anns[\'bbox\'] 
        if obj_name in need_cls_names:
            new_label = get_new_label_id(obj_name, need_cls_names)
            x1 = obj_box[0]
            y1 = obj_box[1]
            w = obj_box[2]
            h = obj_box[3]
            #x_c_norm = (x1) / img_width
            #y_c_norm = (y1) / img_height
            x_c_norm = (x1 + w / 2.0) / img_width
            y_c_norm = (y1 + h / 2.0) / img_height
            w_norm = w / img_width
            h_norm = h / img_height
            if w_norm > min_side and  h_norm > min_side:
                boj_infos.append(\'%d %.4f %.4f %.4f %.4f\\n\'%(new_label, x_c_norm, y_c_norm, w_norm, h_norm))
    if len(boj_infos) > 0:
        print(\'  this img has need cls\')
        shutil.copy(dataDir + \'/\' + dataType + \'/\' + img_name, dst_img_dir + \'/\' + img_name)
        with open(dst_label_dir + \'/\' + img_name.replace(\'.jpg\', \'.txt\'), \'w\') as f:
            f.writelines(boj_infos)
    else:
        print(\'  this img has no need cls\')

以上是关于基于安卓手机的辅助驾驶APP开发的主要内容,如果未能解决你的问题,请参考以下文章

基于安卓手机的辅助驾驶APP开发

mitmproxy安装与安卓模拟器的配合使用-手机APP爬虫

基于安卓Android平台手机商城系统app

安卓手机如何开发app

基于安卓Android手机微博系统客户端app

AI实战分享 | 基于CANN的辅助驾驶应用案例