電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>用Raspberry Pi的視覺識別事物

用Raspberry Pi的視覺識別事物

2022-12-26 | zip | 0.30 MB | 次下載 | 免費

資料介紹

描述

這篇文章包含制作您自己的圖像分析器的說明。

硬件要求

  • 樹莓派
  • 樹莓派相機
  • 字符型液晶顯示器
  • 跳線
  • 面包板
  • 電位計(如果您的 LCD 支持對比度調(diào)整)
  • 按鈕

請檢查下面的示意圖以獲取接線圖。

軟件要求

我們將在按下按鈕時拍攝照片,然后將該圖像上傳到 Dropbox。然后,我們將從 Dropbox 獲取可共享鏈接,并使用該照片鏈接調(diào)用 Microsoft Computer Vision API。API 調(diào)用返回的結(jié)果將顯示在字符 LCD 上。

安裝依賴項

Adafruit Python CharLCD 庫

從以下 Github 鏈接獲取 LCD 庫。

https://github.com/adafruit/Adafruit_Python_CharLCD  

CD 到下載的文件夾并運行以下命令。

sudo python3 setup.py install   

要求

sudo pip3 install requests   

投遞箱

登錄您的保管箱帳戶并創(chuàng)建一個應用程序來存儲捕獲的圖像。您還需要一個訪問令牌。以下鏈接可能會有所幫助。

通過鍵入以下命令安裝 dropbox python 客戶端庫

sudo pip3 install dropbox   

獲取計算機視覺 API(訂閱)密鑰以進行 API 調(diào)用

您可以通過訪問以下鏈接獲取免費訂閱密鑰。在撰寫本文時,Microsoft 允許每月進行 5000 次免費交易

Python 3 代碼

導入依賴項

import RPi.GPIO as GPIO  
import picamera  
import Adafruit_CharLCD as LCD  
import os.path  
import time  
import requests  
import dropbox  
import json   

調(diào)用 API 的變量

使用您之前獲得的密鑰更新 subscription_key 變量。

subscription_key = 'YOUR_Subscription_KEY'  
# URL will be mentioned when you obtain your  
url = "https://westcentralus.api.cognitive.microsoft.com/vision/v1.0/analyze"   

Dropbox 的訪問令牌

access_token = 'YOUR_ACCESS_TOKEN'   

樹莓派開發(fā)板

GPIO.setmode(GPIO.BCM)   

按鈕設置

btn = 16  
GPIO.setup(btn, GPIO.IN, pull_up_down=GPIO.PUD_UP)   

驅(qū)動 LCD 的變量

對應的 Raspberry Pi GPIO 引腳用于 LCD 上的寄存器選擇、指令和數(shù)據(jù)寄存器。稍后我們將使用這些變量來初始化 LCD。

lcd_rs = 4  
lcd_en = 17  
lcd_d4 = 25  
lcd_d5 = 24  
lcd_d6 = 23  
lcd_d7 = 18   

LCD 的尺寸,如果您有 16x2 的字符 LCD,則將 lcd_columns 變量修改為 16,將 lcd_rows 修改為 2。由于我使用的是 20x4 LCD,因此我將使用以下值。

lcd_columns = 20  
lcd_rows = 4   

初始化

通過調(diào)用 Dropbox、Adafruit 和 picamera 庫提供的構(gòu)造方法來初始化 Dropbox、LCD 和相機。如果您的 LCD 支持背光,那么您可以傳入一個附加參數(shù) backlight = 1 或 backlight = 0 來打開或關(guān)閉它。

# Initilaize Dropbox  
dbx = dropbox.Dropbox(access_token)  
# Initialize the LCD using the pins above by calling the construct method of Adafruit LCD library  
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows)  
# Initialize the camera  
cam = picamera.PiCamera()   

主函數(shù)

main() 函數(shù)是程序啟動時第一個被調(diào)用的函數(shù)。它等待按鈕按下,當按下按鈕時,它調(diào)用其他函數(shù)來捕獲圖像,將其上傳到保管箱,獲取上傳的圖像鏈接,然后最后調(diào)用 predict_contents() 函數(shù),該函數(shù)調(diào)用 Vision API 并在 LCD 上顯示結(jié)果。當用戶再次按下按鈕時,在最后一步調(diào)用 main() 函數(shù)以執(zhí)行相同的步驟。

def main():  
  while True:  
    cam.capture('image.jpg')  
    display_message('Uploading..')  
    upload_image()  
    display_message('Generating Image', 'link..')  
    image_url = get_image_url()  
    display_message('Analysing..')  
    predict_contents(image_url)  
    main()   

下面將更詳細地描述此處使用的每個函數(shù)。

display_message() 函數(shù)

display_function() 函數(shù)利用 Adafruit LCD 庫提供的 message() 函數(shù)。調(diào)用它時最多可以傳入四個字符串,它會在新行上顯示每個字符串。但是,如果您只傳入 line1 參數(shù),它將在多行中顯示消息。lcd.clear()將清除 LCD 上的任何現(xiàn)有文本 lcd.home() 并將光標移至第 1 行和第 1 列。

def display_message(line1 = '', line2 = '', line3 = '', line4 = ''):  
  lcd.clear() # Clear the display  
  lcd.home() # Bring cursor to row 1 and column 1  
  if(line1 != '' and line2 == '' and line3 == '' and line4 == ''):  
    lcd.message(line1)  
  else:  
    lcd.message(line1 + '\n' + line2 + '\n' + line3 + '\n' + line4)  

upload_image() 函數(shù)

這段代碼在命名的工作目錄中獲取先前捕獲的圖像image.jpg并將其上傳到 dropbox。

def upload_image():  
  remote_file = '/image.jpg'  
  f = open(local_file, 'rb')  
  dbx.files_upload(f.read(), remote_file, mode=dropbox.files.WriteMode.overwrite)   

get_image_url() 函數(shù)

此函數(shù)向 Dropbox 發(fā)出發(fā)布請求,以獲取我們在上一步上傳的圖像的可共享鏈接。然后將結(jié)果轉(zhuǎn)換為 JSON。image_url.replace('www', 'dl')以便可以下載。此步驟是必要的,否則圖像會在 Dropbox Web 應用程序中打開。此處使用之前從 Dropbox 獲取的訪問令牌對請求進行身份驗證。

def get_image_url():  
  headers = {  
    'Authorization': 'Bearer ' + access_token,  
    'Content-Type': 'application/json'  
  }  
  data = {  
    "path": "/image.jpg"  
  }  
  r = requests.post('https://api.dropboxapi.com/2/sharing/create_shared_link', headers=headers, data=json.dumps(data))  
  image_url = r.json()['url']  
  image_url = image_url.replace('www', 'dl')  
  return image_url   

predict_contents(image_url) 函數(shù)

該函數(shù)將之前獲取的圖片鏈接作為參數(shù)傳入計算機視覺API。訂閱密鑰用于對請求進行身份驗證,visualFeatures參數(shù)包含有關(guān)我們要在圖像中分析哪些特征的詳細信息。Vision API 應用機器學習來識別圖像并返回結(jié)果。標題最好用一個句子概括圖像,標簽包含有關(guān)圖像中有哪些特征的信息。前 8 個最有信心的標簽顯示在 LCD 上的標題后。

def predict_contents(image_url):  
  params   = {'visualFeatures': 'Description'}  
  data     = {'url': image_url}  
  response = requests.post(url, headers=headers, params=params, json=data)  
  response.raise_for_status()  
  image_desc = response.json()['description']['captions'][0]['text']  
  image_tags = response.json()['description']['tags']  
  display_message(image_desc)  
  time.sleep(5)  
  display_message('{}, {},'.format(image_tags[0], image_tags[1]), '{}, {},'.format(image_tags[2], image_tags[3]), '{}, {},'.format(image_tags[4], image_tags[5]), '{}, {}'.format(image_tags[6], image_tags[7]),)  
  time.sleep(10)   

我們應用程序的起點

這是我們調(diào)用main()函數(shù)并在程序停止時顯示“程序停止”的地方。

try:  
  main()  
finally:  
  display_message('Program Stopped.')   

運行應用程序

最后,我們到了啟動程序并享受拍照的樂趣。https://github.com/dsdilpreet/blog/blob/master/recognize-things-with-raspberry-pi-vision

從 github 下載文件,打開終端并 cd 進入下載文件所在的文件夾并運行以下命令。

python3 app.py   

帶有示例圖片和結(jié)果鏈接的原始帖子

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費