99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

3天內(nèi)不再提示

怎樣用樹莓派構(gòu)建基于面部識(shí)別的門鎖

454398 ? 來(lái)源:工程師吳畏 ? 2019-07-30 09:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

該項(xiàng)目將包括三個(gè)階段:

人臉檢測(cè)和數(shù)據(jù)收集

訓(xùn)練識(shí)別器

面部識(shí)別

在深入研究代碼之前,讓我們將電磁鎖與Raspberry Pi連接。

電路圖和說(shuō)明

Raspberry Pi的GPIO引腳可以提供3.3V的輸出,但電磁鎖需要7-12V才能工作。因此,我們需要使用外部電源和繼電器來(lái)操作鎖定。

將繼電器模塊的VCC和GND連接到Raspberry Pi的5V和GND。然后將繼電器模塊的信號(hào)引腳連接到Raspberry Pi的GPIO 26.

在繼電器模塊的另一側(cè),將負(fù)極直流電源連接到電磁門鎖的負(fù)極。將來(lái)自直流電源的正極連接到繼電器模塊的公共端,然后將常開模塊從繼電器模塊連接到電磁門鎖的正極。

面部識(shí)別電路圖。

人臉檢測(cè)的數(shù)據(jù)收集

第一個(gè)任務(wù)是收集我們要訓(xùn)練分類器的數(shù)據(jù)。我們將使用OpenCV預(yù)訓(xùn)練分類器編寫一個(gè)python代碼,每個(gè)人需要30個(gè)面。

OpenCV已經(jīng)包含許多面部,眼睛,微笑等預(yù)先訓(xùn)練的分類器。我們要去的分類器使用將檢測(cè)面部,并在GitHub上提供級(jí)聯(lián)文件。

將此文件保存在工作目錄中“haarcascade_frontalface_default.xml”。

代碼演練

現(xiàn)在讓我們編寫代碼。 首先,我們導(dǎo)入所需的包。

import cv2

from picamera.array import PiRGBArray

from picamera import PiCamera

import numpy as np

import os

import sys

然后我們初始化相機(jī)對(duì)象,這將允許我們使用Raspberry Pi相機(jī)。我們將分辨率設(shè)置為(640,480),幀速率設(shè)置為30 fps。

camera = PiCamera()

camera.resolution = (640, 480)

camera.framerate = 30

PiRGBArray() 為我們提供了一個(gè)來(lái)自未編碼RGB捕獲的三維RGB數(shù)組(行,列,顏色)。 PiRGBArray的優(yōu)勢(shì)在于它能夠?qū)aspberry Pi相機(jī)中的幀讀取為NumPy陣列,使其與OpenCV兼容。它避免了從JPEG格式到OpenCV格式的轉(zhuǎn)換,這會(huì)減慢我們的過(guò)程。

它需要兩個(gè)參數(shù):

相機(jī)對(duì)象

分辨率

rawCapture = PiRGBArray(camera, size=(640, 480))

加載用于檢測(cè)面的級(jí)聯(lián)文件。

face_cascade = cv2.CascadeClassifier(“haarcascade_frontalface_default.xml”);

接下來(lái),我們要求用戶輸入名稱。如果已存在具有該名稱的目錄,則它將以“名稱已存在”進(jìn)行響應(yīng)并退出代碼。如果沒(méi)有此名稱的目錄,它將創(chuàng)建目錄,圖像將以此名稱保存。

name = input(“What‘s his/her Name? ”)

dirName = “。/images/” + name

print(dirName)

if not os.path.exists(dirName):

os.makedirs(dirName)

print(“Directory Created”)

else:

print(“Name already exists”)

sys.exit()

為圖像創(chuàng)建目錄。

之后,我們使用 capture_continuous 從Raspberry Pi相機(jī)模塊開始讀取幀的功能。

c apture_continuous函數(shù)有三個(gè)參數(shù):

rawCapture

我們想要讀取每個(gè)幀的格式,因?yàn)镺penCV期望圖像采用BGR格式而不是RGB格式,因此我們將格式指定為BGR。

use_video_port布爾值,使其為true意味著我們將流視為視頻。

for frame in camera.capture_continuous(rawCapture, format=“bgr”, use_video_port=True):

一旦我們有了f rame,我們可以通過(guò).array屬性訪問(wèn)原始的NumPy數(shù)組。訪問(wèn)后,我們將此幀轉(zhuǎn)換為灰度。

frame = frame.array

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

然后我們調(diào)用分類器函數(shù)來(lái)檢測(cè)幀中的面。我們傳遞的第一個(gè)參數(shù)是灰度圖像。第二個(gè)參數(shù)是指定在每個(gè)圖像比例下圖像尺寸減少多少的參數(shù)。第三個(gè)參數(shù)是一個(gè)參數(shù),指定每個(gè)候選矩形應(yīng)保留多少個(gè)鄰居。數(shù)字越大,誤報(bào)率越低。

faces = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5)

上面的函數(shù)給出了面部區(qū)域的矩形坐標(biāo)。我們使用這些坐標(biāo)從圖像中提取面部并將其保存在我們?cè)陂_始時(shí)創(chuàng)建的目錄中。之后,我們展示了裁剪的面部并在原始框架上創(chuàng)建了一個(gè)矩形。

代碼將收集30張圖像。

for (x, y, w, h) in faces:

roiGray = gray[y:y+h, x:x+w]

fileName = dirName + “/” + name + str(count) + “.jpg”

cv2.imwrite(fileName, roiGray)

cv2.imshow(“face”, roiGray)

cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

count += 1

然后我們?cè)谏厦骘@示原始幀輸出窗口。 cv2.waitkey()是一個(gè)鍵盤綁定函數(shù)。它等待任何鍵盤事件的指定毫秒。它需要一個(gè)參數(shù),這個(gè)參數(shù)是以毫秒為單位的時(shí)間。如果在該時(shí)間內(nèi)按下該鍵,則程序?qū)⒗^續(xù)。傳遞0表示它將無(wú)限期地等待一個(gè)鍵。

cv2.imshow(’frame‘, frame)

key = cv2.waitKey(1)

然后我們通過(guò)在捕獲之間調(diào)用truncate(0)來(lái)清除流以準(zhǔn)備下一幀。

rawCapture.truncate(0)

人臉檢測(cè)和數(shù)據(jù)收集工作現(xiàn)已完成。我們應(yīng)該在新創(chuàng)建的目錄中有30個(gè)圖像。

我們的30張圖片保存在新創(chuàng)建的目錄中。

人臉檢測(cè)完整代碼

import cv2

from picamera.array import PiRGBArray

from picamera import PiCamera

import numpy as np

import os

import sys

camera = PiCamera()

camera.resolution = (640, 480)

camera.framerate = 30

rawCapture = PiRGBArray(camera, size=(640, 480))

faceCascade = cv2.CascadeClassifier(“haarcascade_frontalface_default.xml”)

name = input(“What’s his/her Name? ”)

dirName = “。/images/” + name

print(dirName)

if not os.path.exists(dirName):

os.makedirs(dirName)

print(“Directory Created”)

else:

print(“Name already exists”)

sys.exit()

count = 1

for frame in camera.capture_continuous(rawCapture, format=“bgr”, use_video_port=True):

if count 》 30:

break

frame = frame.array

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5)

for (x, y, w, h) in faces:

roiGray = gray[y:y+h, x:x+w]

fileName = dirName + “/” + name + str(count) + “.jpg”

cv2.imwrite(fileName, roiGray)

cv2.imshow(“face”, roiGray)

cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

count += 1

cv2.imshow(‘frame’, frame)

key = cv2.waitKey(1)

rawCapture.truncate(0)

if key == 27:

break

cv2.destroyAllWindows()

訓(xùn)練識(shí)別器

現(xiàn)在我們可以根據(jù)上一步收集的數(shù)據(jù)訓(xùn)練識(shí)別器。

我們將使用LBPH (LOCAL BINARY PATTERNS HISTOGRAMS)面部識(shí)別器,包含在OpenCV包中。我們將它加載到以下行:

recognizer = cv2.face.LBPHFaceRecognizer_create()

我們獲取當(dāng)前工作目錄的路徑,然后移動(dòng)到圖像目錄所在的目錄。

baseDir = os.path.dirname(os.path.abspath(__file__))

imageDir = os.path.join(baseDir, “images”)

《然后我們進(jìn)入每個(gè)圖像目錄并查找圖像。如果圖像存在,我們將其轉(zhuǎn)換為NumPy數(shù)組。

for root, dirs, files in os.walk(imageDir):

print(root, dirs, files)

for file in files:

print(file)

if file.endswith(“png”) or file.endswith(“jpg”):

path = os.path.join(root, file)

label = os.path.basename(root)

print(label)

if not label in labelIds:

labelIds[label] = currentId

print(labelIds)

currentId += 1

id_ = labelIds[label]

pilImage = Image.open(path).convert(“L”)

imageArray = np.array(pilImage, “uint8”)

之后,我們?cè)俅芜M(jìn)行面部檢測(cè),以確保我們有正確的圖像,然后我們準(zhǔn)備訓(xùn)練數(shù)據(jù)。

faces = faceCascade.detectMultiScale(imageArray, scaleFactor=1.1, minNeighbors=5)

for (x, y, w, h) in faces:

roi = imageArray[y:y+h, x:x+w]

xTrain.append(roi)

yLabels.append(id_)

存儲(chǔ)包含目錄名稱和標(biāo)簽ID的字典。

with open(“l(fā)abels”, “wb”) as f:

pickle.dump(labelIds, f)

f.close()

現(xiàn)在訓(xùn)練數(shù)據(jù)并保存文件。

recognizer.train(xTrain, np.array(yLabels))

recognizer.save(“trainer.yml”)

此代碼創(chuàng)建一個(gè)trainer.yml并標(biāo)記我們?cè)谧R(shí)別代碼中使用的文件。

我們?cè)谧R(shí)別代碼中使用的trainer.yml文件。

培訓(xùn)識(shí)別器的完整代碼

import os

import numpy as np

from PIL import Image

import cv2

import pickle

faceCascade = cv2.CascadeClassifier(“haarcascade_frontalface_default.xml”)

recognizer = cv2.face.LBPHFaceRecognizer_create()

baseDir = os.path.dirname(os.path.abspath(__file__))

imageDir = os.path.join(baseDir, “images”)

currentId = 1

labelIds = {}

yLabels = []

xTrain = []

for root, dirs, files in os.walk(imageDir):

print(root, dirs, files)

for file in files:

print(file)

if file.endswith(“png”) or file.endswith(“jpg”):

path = os.path.join(root, file)

label = os.path.basename(root)

print(label)

if not label in labelIds:

labelIds[label] = currentId

print(labelIds)

currentId += 1

id_ = labelIds[label]

pilImage = Image.open(path).convert(“L”)

imageArray = np.array(pilImage, “uint8”)

faces = faceCascade.detectMultiScale(imageArray, scaleFactor=1.1, minNeighbors=5)

for (x, y, w, h) in faces:

roi = imageArray[y:y+h, x:x+w]

xTrain.append(roi)

yLabels.append(id_)

with open(“l(fā)abels”, “wb”) as f:

pickle.dump(labelIds, f)

f.close()

recognizer.train(xTrain, np.array(yLabels))

recognizer.save(“trainer.yml”)

print(labelIds)

使用識(shí)別器進(jìn)行面部識(shí)別

我們?cè)谏弦还?jié)中設(shè)置的識(shí)別器現(xiàn)在可用于識(shí)別面部。它會(huì)給我們信心和標(biāo)簽ID(識(shí)別器對(duì)這場(chǎng)比賽的信心程度)。如果面部匹配,繼電器將打開。

首先我們加載包含字典的pickle文件。

with open(‘labels’, ‘rb’) as f:

dicti = pickle.load(f)

f.close()

然后我們加載將檢測(cè)面部的分類器以及預(yù)測(cè)面部和訓(xùn)練數(shù)據(jù)的識(shí)別器。

faceCascade = cv2.CascadeClassifier(“haarcascade_frontalface_default.xml”)

recognizer = cv2.face.LBPHFaceRecognizer_create()

recognizer.read(“trainer.yml”)

我們讀取幀,將其轉(zhuǎn)換為灰度,并在圖像中查找面。如果有任何面部,我們將提取面部區(qū)域并使用識(shí)別器識(shí)別圖像。

識(shí)別器將為我們提供標(biāo)簽ID和置信度。

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5)

for (x, y, w, h) in faces:

roiGray = gray[y:y+h, x:x+w]

roiColor = frame[y:y+h, x:x+w]

id_, conf = recognizer.predict(roiGray)

我們?cè)谧值渲胁檎曳峙浣o此標(biāo)簽ID的名稱。

for name, value in dict.items():

if value == id_:

print(name)

然后檢查我們是否有足夠的信心打開門鎖。如果信心小于70,門將打開。否則,它將保持關(guān)閉狀態(tài)。

if conf 《= 70:

GPIO.output(relay_pin, 1)

cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.putText(frame, name + str(conf), (x, y), font, 2, (0, 0 ,255), 2,cv2.LINE_AA)

else:

GPIO.output(relay_pin, 0)

在原始圖像中創(chuàng)建一個(gè)矩形,并將該名稱寫在矩形的頂部。

cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.putText(frame, name, (x, y), font, 2, (0, 0 ,255), 2,cv2.LINE_AA)

隨著代碼的完成,設(shè)置已準(zhǔn)備好進(jìn)行面部識(shí)別!

訓(xùn)練識(shí)別器的完整代碼

import cv2

from picamera.array import PiRGBArray

from picamera import PiCamera

import numpy as np

import pickle

import RPi.GPIO as GPIO

from time import sleep

relay_pin = [26]

GPIO.setmode(GPIO.BCM)

GPIO.setup(relay_pin, GPIO.OUT)

GPIO.output(relay_pin, 0)

with open(‘labels’, ‘rb’) as f:

dicti = pickle.load(f)

f.close()

camera = PiCamera()

camera.resolution = (640, 480)

camera.framerate = 30

rawCapture = PiRGBArray(camera, size=(640, 480))

faceCascade = cv2.CascadeClassifier(“haarcascade_frontalface_default.xml”)

recognizer = cv2.face.LBPHFaceRecognizer_create()

recognizer.read(“trainer.yml”)

font = cv2.FONT_HERSHEY_SIMPLEX

for frame in camera.capture_continuous(rawCapture, format=“bgr”, use_video_port=True):

frame = frame.array

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5)

for (x, y, w, h) in faces:

roiGray = gray[y:y+h, x:x+w]

id_, conf = recognizer.predict(roiGray)

for name, value in dict.items():

if value == id_:

print(name)

if conf 《= 70:

GPIO.output(relay_pin, 1)

cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.putText(frame, name + str(conf), (x, y), font, 2, (0, 0 ,255), 2,cv2.LINE_AA)

else:

GPIO.output(relay_pin, 0)

cv2.imshow(‘frame’, frame)

key = cv2.waitKey(1)

rawCapture.truncate(0)

if key == 27:

break

cv2.destroyAllWindows()

最后的想法

這種人臉識(shí)別系統(tǒng)不是100%準(zhǔn)確,但在良好的光線下效果很好條件。問(wèn)題是它還可以檢測(cè)圖片中的面孔 - 例如,有人可以通過(guò)手機(jī)顯示您的圖片來(lái)解鎖它。我們可以通過(guò)訓(xùn)練自己的級(jí)聯(lián)分類器來(lái)改進(jìn)這一點(diǎn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 面部識(shí)別
    +關(guān)注

    關(guān)注

    1

    文章

    375

    瀏覽量

    27213
  • 樹莓派
    +關(guān)注

    關(guān)注

    121

    文章

    2007

    瀏覽量

    107456
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    樹莓5上使用YOLO進(jìn)行物體和動(dòng)物識(shí)別-入門指南

    大家好,接下來(lái)會(huì)為大家開一個(gè)樹莓5和YOLO的專題。內(nèi)容包括四個(gè)部分:在樹莓5上使用YOLO進(jìn)行物體和動(dòng)物識(shí)別-入門指南在
    的頭像 發(fā)表于 07-17 17:16 ?35次閱讀
    在<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>5上使用YOLO進(jìn)行物體和動(dòng)物<b class='flag-5'>識(shí)別</b>-入門指南

    樹莓打造無(wú)人機(jī),你需注意的事項(xiàng)!

    能否將樹莓裝入無(wú)人機(jī)?使用樹莓打造無(wú)人機(jī)是可行的。樹莓充當(dāng)無(wú)人機(jī)的“大腦”,將飛行控制器的
    的頭像 發(fā)表于 07-14 17:49 ?393次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>樹莓</b><b class='flag-5'>派</b>打造無(wú)人機(jī),你需注意的事項(xiàng)!

    樹莓6 傳聞:發(fā)布日期與規(guī)格!

    每當(dāng)我想再為我的收藏增添一款樹莓時(shí),總會(huì)在是立即購(gòu)買還是等待硬件更強(qiáng)大的下一代之間猶豫不決。但新樹莓型號(hào)的發(fā)布往往容易被錯(cuò)過(guò),尤其是在你的信息流被病毒式傳播的貓咪視頻占據(jù)時(shí)。因此,
    的頭像 發(fā)表于 07-11 16:21 ?201次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>6 傳聞:發(fā)布日期與規(guī)格!

    20個(gè)任何人都能完成的樹莓酷炫項(xiàng)目!

    不知道如何利用你買的樹莓?這個(gè)小設(shè)備真的能當(dāng)臺(tái)式電腦嗎?能當(dāng)服務(wù)器嗎?能當(dāng)廣播電臺(tái)嗎?當(dāng)然可以!為了幫助你入門,我們精心挑選了這份樹莓
    的頭像 發(fā)表于 07-03 17:10 ?421次閱讀
    20個(gè)任何人都能完成的<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>酷炫項(xiàng)目!

    樹莓小技巧:無(wú)需鍵盤或顯示器,如何通過(guò)WiFi設(shè)置樹莓

    樹莓是一款小巧便攜的USB供電計(jì)算機(jī),可以隱藏起來(lái)用于小型項(xiàng)目,如網(wǎng)絡(luò)服務(wù)器或家庭自動(dòng)化。通常,設(shè)置樹莓需要鍵盤和顯示器來(lái)編輯和查看樹莓
    的頭像 發(fā)表于 06-26 15:41 ?306次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>小技巧:無(wú)需鍵盤或顯示器,如何通過(guò)WiFi設(shè)置<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>?

    樹莓分類器:樹莓識(shí)別不同型號(hào)的樹莓!

    在本教程系列的第一部分中,您將學(xué)習(xí)如何使用樹莓AI攝像頭來(lái)檢測(cè)不同的樹莓型號(hào)。本系列由DavidPlowman創(chuàng)建,他是樹莓
    的頭像 發(fā)表于 06-13 16:39 ?414次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>分類器:<b class='flag-5'>用</b><b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>識(shí)別</b>不同型號(hào)的<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>!

    樹莓“揪出”家里的耗電怪獸!

    在本應(yīng)用中,我們將使用樹莓設(shè)置一個(gè)CE電流監(jiān)測(cè)器,并通過(guò)網(wǎng)頁(yè)界面顯示電路的電流讀數(shù)。本項(xiàng)目使用的組件硬件組件樹莓2ModelBx112通道20安培電流監(jiān)測(cè)控制器x1項(xiàng)目背景介紹在本
    的頭像 發(fā)表于 06-04 15:33 ?716次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>樹莓</b><b class='flag-5'>派</b>“揪出”家里的耗電怪獸!

    樹莓“吉尼斯世界記錄”:將樹莓的性能發(fā)揮到極致的項(xiàng)目!

    樹莓是一款功能強(qiáng)大、體積小巧且高度可定制的設(shè)備,多年來(lái),我們見證了它被應(yīng)用于眾多領(lǐng)域。無(wú)論是將其裝入3D打印的經(jīng)典游戲機(jī)外殼,還是簡(jiǎn)單地將它隱藏起來(lái)作為家庭文件服務(wù)器,我們都報(bào)道過(guò)在社區(qū)里
    的頭像 發(fā)表于 05-22 16:53 ?640次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>“吉尼斯世界記錄”:將<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>的性能發(fā)揮到極致的項(xiàng)目!

    樹莓 Zero 打造的智能漫游車!

    使用PXFMini和樹莓Zero打造您自己的自主漫游車。本項(xiàng)目所用組件硬件組件ErleRoboticsPXFmini×1樹莓Zero×1樹莓
    的頭像 發(fā)表于 05-13 16:39 ?436次閱讀
    <b class='flag-5'>用</b> <b class='flag-5'>樹莓</b><b class='flag-5'>派</b> Zero 打造的智能漫游車!

    rpi-image-gen:樹莓軟件鏡像構(gòu)建的終極神器!

    樹莓設(shè)備上,軟件的多樣性令人印象深刻。樹莓操作系統(tǒng)雖然適用于許多場(chǎng)景,但我們深知它并非萬(wàn)能,尤其在一些特定用途的產(chǎn)品中更是如此。如果您正在開發(fā)嵌入式系統(tǒng)或工業(yè)控制器,您需要對(duì)設(shè)備
    的頭像 發(fā)表于 04-08 15:43 ?342次閱讀
    rpi-image-gen:<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>軟件鏡像<b class='flag-5'>構(gòu)建</b>的終極神器!

    驚了!這個(gè)“神器”讓樹莓秒變智能管家,圖像識(shí)別+無(wú)線投屏,太秀了!

    和BalenaCloud,讓樹莓實(shí)現(xiàn)從圖像識(shí)別到智能生活的華麗轉(zhuǎn)身!圖像分類項(xiàng)目:樹莓和B
    的頭像 發(fā)表于 03-25 09:23 ?604次閱讀
    驚了!這個(gè)“神器”讓<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>秒變智能管家,圖像<b class='flag-5'>識(shí)別</b>+無(wú)線投屏,太秀了!

    樹莓gpio有什么,樹莓gpio接口及編程方法

    一、樹莓GPIO的用途 樹莓(Raspberry Pi)是一款小巧、功能強(qiáng)大的單板計(jì)算機(jī),廣泛應(yīng)用于編程教育、物聯(lián)網(wǎng)項(xiàng)目、家庭媒體中心等領(lǐng)域。GPIO(General Purpos
    的頭像 發(fā)表于 10-22 18:09 ?2680次閱讀

    什么是樹莓?樹莓是什么架構(gòu)的

    什么是樹莓 樹莓(Raspberry Pi,簡(jiǎn)寫為RPi,別名為RasPi/RPI)是由英國(guó)“Raspberry Pi 慈善基金會(huì)”開發(fā)的一款為學(xué)習(xí)計(jì)算機(jī)編程教育而設(shè)計(jì)的微型電腦。
    的頭像 發(fā)表于 10-22 17:33 ?5833次閱讀

    樹莓gui開發(fā)什么ide

    樹莓(Raspberry Pi)是一款功能強(qiáng)大的微型計(jì)算機(jī),可以運(yùn)行多種操作系統(tǒng),如Raspbian、Ubuntu等。在樹莓派上進(jìn)行GUI(圖形用戶界面)開發(fā),可以使用多種集成開發(fā)環(huán)境(IDE
    的頭像 發(fā)表于 08-30 16:49 ?1797次閱讀

    樹莓裝ubuntu和raspbian哪個(gè)更好

    樹莓(Raspberry Pi)是一款由英國(guó)樹莓基金會(huì)開發(fā)的單板計(jì)算機(jī),廣泛應(yīng)用于教育、科研、物聯(lián)網(wǎng)等領(lǐng)域。樹莓
    的頭像 發(fā)表于 08-30 15:41 ?2837次閱讀