日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

车型识别API调用与批量分类车辆图片

發(fā)布時間:2023/12/19 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 车型识别API调用与批量分类车辆图片 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載 請注明出處https://blog.csdn.net/sc2079/article/details/82189824

9月9日更:博客資源下載:鏈接: https://pan.baidu.com/s/1AEtQL7uk4_T7TPKa1Q6kFg 提取碼: g1n8 永久有效

動機

暑假實習(xí),一位做算法的老師讓我們一行人將攝像頭拍取的車輛照片按車型分類保存。

示例如下:

這樣的圖片共有上萬張,且有多個文件夾,人工打開圖片、放大,再識別(如果不清楚車輛標志,還需上網(wǎng)查找),并Ctrl+C、Ctrl+V將其保存在相應(yīng)文件夾下,這著實讓人感到無聊與繁瑣。

因此,我就萌發(fā)了用熟知的python寫個腳本,自動化完成工作。

開始工作

上面想法很好,但是實際行動起來我還是遇到了很多問題。

首先,技術(shù)路線的選取。最簡單莫過于直接調(diào)用某云上的API接口,但是免費調(diào)用次數(shù)有限。當然,我最開始也最想采用的是走爬蟲路線。有很多網(wǎng)站可以在線上傳車輛照片并返回車型結(jié)果,我就想利用這一點解決車型識別的問題。然并卵,post請求無法響應(yīng),就想向selenium上靠,可是上傳文件對話框阻礙了我進一步操作。雖然網(wǎng)上有很多解決對話框的方法,但是礙于時間緊且方法較復(fù)雜(短時我無法實現(xiàn))等種種原因,我不得不采用了最簡單直接的方法。PS:如果有做過類似的項目(對話框)的大佬請不吝賜教!

1.環(huán)境配置

編譯環(huán)境:Python3.6,Spyder

依賴模塊:shelve,PIL,shutil

2.申請API

打開百度云圖像識別的網(wǎng)頁鏈接:https://cloud.baidu.com/product/imagerecognition,創(chuàng)建一個項目,便可以得到API調(diào)用的接口。

找到并下載車型識別Python的SDK

車型識別的示例:

""" 讀取圖片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

image = get_file_content('example.jpg')

""" 調(diào)用車輛識別 """
client.carDetect(image);

""" 如果有可選參數(shù) """
options = {}
options["top_num"] = 3
options["baike_num"] = 5

""" 帶參數(shù)調(diào)用車輛識別 """
client.carDetect(image, options)

3.指定目錄下所有車型的獲得

對API調(diào)用返回JSON數(shù)據(jù)的清洗,提取所需要的信息(取第一個)

car_info=client.carDetect(img)
try:
    car_color=car_info['color_result']
except:
    car_color='無法識別'
try:
    car_name=car_info['result'][0]['name']
    car_score=car_info['result'][0]['score']
    car_year=car_info['result'][0]['year']
except:
    car_name='非車類'
    car_score=1
    car_year='無年份信息'
car_result=[car_color,car_name,car_score,car_year,file]

獲取指定目錄下的所有車輛照片的車型

path='..'
img_path=path+'\car_img'

#調(diào)用API獲取指定目錄下所有文件的車型,并將數(shù)據(jù)保存
m_files=os.listdir(img_path)
for i in range(len(m_files)):
    results=[]
    files_path=img_path+'\'+m_files[i]
    imgs=os.listdir(files_path)
    for j in range(len(imgs)):
        #out_path,img=img_cut(m_files[i],imgs[j])
        result=get_info(out_path,img)
        results.append(result)
    data_path=path+'\'+'data'+'\'+m_files[i]
    shelf_save(results,data_path)

實際操作中,發(fā)現(xiàn)有些圖片識別不出來,便裁剪一下,保留下半部分,竟然發(fā)現(xiàn)它能識別了。因此,在上傳圖片時首先對圖片進行了裁剪。

#圖片裁剪
def img_cut(file,img):
    img_read = Image.open(path+'\car_img\'+file+'\'+img)
    a = [0,1300,3310,2600]
    box = (a)
    roi = img_read.crop(box)
    out_path = path+'\圖片處理\'+file
    if not os.path.exists(out_path):
        os.mkdir(out_path)
    roi.save(out_path+'\'+img)
    return out_path,img

我這里使用了shelve模塊將每個文件夾數(shù)據(jù)進行保存與調(diào)用

def shelf_load(path):
    shelfFile = shelve.open(path)
    results=shelfFile['results']
    shelfFile.close() 
    return results

def shelf_save(results,path):
    shelfFile = shelve.open(path)
    shelfFile['results'] = results
    shelfFile.close() 

4.根據(jù)車型分類建立文件夾

話不多說,直接上代碼

#按車型分類建立文件夾
for i in range(len(m_datas)):
    _path=path+'\data\'+m_datas[i]
    datas=shelf_load(_path)
    for j in range(len(datas)):
        ori_path=img_path+'\'+m_datas[i]+'\'+datas[j][4]
        if datas[j][1]=='非車類':           
            if not os.path.exists(path+'\results\未知'):
                os.mkdir(path+'\results\未知')
            now_path=path+'\results\未知\'+datas[j][4]
            shutil.copy(ori_path,now_path)
            continue
        for brand in brands: 
            if brand in datas[j][1]:
                if not os.path.exists(path+'\results\'+brand):
                    os.mkdir(path+'\results\'+brand)
                now_path=path+'\results\'+brand+'\'+datas[j][4]
                shutil.copy(ori_path,now_path)
                break
        if brand=='其他':
            if not os.path.exists(path+'\results\未知'):
                    os.mkdir(path+'\results\未知')
            now_path=path+'\results\未知\'+datas[j][4]
            shutil.copy(ori_path,now_path)

運行結(jié)果

由于調(diào)用次數(shù)限制,我跑了480張圖片,僅有幾張無法識別,識別率還可以。至于準確率,我簡單翻看了一些目錄下的照片,雖然有個別車型識別錯誤,但大多還可以的。這里僅展示已經(jīng)自動分類好的文件。

結(jié)語

由于時間倉促,代碼還沒整理好。另外其他細節(jié)(如存儲車型brands數(shù)組,獲得shelve數(shù)據(jù)、根文件夾下子文件下有哪些等)這里就不一一展示了。如果實在需要,過段時間我發(fā)個Github 鏈接。

總結(jié)

以上是生活随笔為你收集整理的车型识别API调用与批量分类车辆图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色吧五月天| 免费av看片| 中文字幕av免费在线观看 | 韩国妻子的朋友 | 免费暧暧视频 | 理论片高清免费理伦片 | 黄色美女视频网站 | 免费成人深夜夜行p站 | 在线免费观看污网站 | 国产一国产精品一级毛片 | 久久久无码精品亚洲无少妇 | 美女脱了内裤喂我喝尿视频 | av高清| 精品久久免费观看 | 超污视频软件 | 国产黄色观看 | 黄色长视频| 91成年人视频 | 久久av资源站 | 黄色av不卡 | 亚洲春色一区二区三区 | 欧美啪啪一区 | 在线观看黄网 | 中文字幕在线观看线人 | 国模精品视频一区二区 | 国产精品一区三区 | 久色亚洲| 日韩精品一区二区三区无码专区 | 国产欧美亚洲一区 | 18我禁在线观看 | 久久精品国产99国产精品 | 最新天堂中文在线 | 一区二区三区四区在线 | 91看片国产| 国产寡妇色xxⅹ交肉视频 | 欧美日韩久久久久 | 九色91蝌蚪| 国产成人av一区二区三区不卡 | 欧美日韩高清一区二区 国产亚洲免费看 | 亚洲成人一二三 | 天天插插 | 操欧美美女 | 亚洲精品国产成人 | 免费在线观看日韩av | 国产精品19p| 日韩伦理视频 | 成人av一区二区三区在线观看 | 污污视频在线观看网站 | 亚洲xxxxxx| 亚洲毛片网 | 欧美日韩不卡合集视频 | 一级黄色录像免费观看 | 成人在线观看免费 | 在线观看欧美一区二区三区 | 中文字幕在线观看第二页 | 九九热在线视频 | 日韩国产精品一区二区 | 92国产精品 | 人妻少妇被猛烈进入中文字幕 | 精品一区三区 | 久草视频在线免费 | 亚洲精品一区二区三区影院忠贞 | 欧美成人午夜视频 | 无套内谢少妇高潮免费 | 熟睡人妻被讨厌的公侵犯 | 亚洲va欧美 | 六月丁香激情 | 动漫裸体无遮挡 | 6699嫩草久久久精品影院 | 精品视频网站 | 亚洲综合视频在线观看 | 成人h动漫精品一区二区无码 | 精品黑人一区二区三区在线观看 | 日本不卡一区二区在线观看 | 毛片av免费看 | 性生活一区 | 亚洲一区二区三 | 亚洲欧美日韩精品在线观看 | 24小时日本在线www免费的 | 亚洲成年人在线观看 | 性中国古装videossex | 精品国产污污免费网站入口 | 国产第1页| 欧美中文字幕在线播放 | 欧美猛交免费 | 中日韩在线观看视频 | 少妇精品久久久久www | 久久高清内射无套 | 天天干天天弄 | 欧美精品极品 | 艳母日本动漫在线观看 | 悠悠av | 91免费看片 | 欧美jizz18性欧美 | 嫩草社区 | 国产成人观看 | 日本午夜影院 | 五月婷婷国产 | 国产精品免费无码 |