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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

从3D打印到python编程 从opencv到人脸识别 从win10到树莓派ubuntu (全教程附代码)

發布時間:2023/12/16 python 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从3D打印到python编程 从opencv到人脸识别 从win10到树莓派ubuntu (全教程附代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從3D打印到python編程,從opencv到人臉識別,從win10到樹莓派ubuntu。全教程附代碼。

  • 前言
  • 一、材料
  • 二、3D打印舵機云臺
  • 三、人臉識別 結合opencv顯示
  • 四、代碼
  • 五、RPi.gpio權限問題
  • 總結


前言

看了標題有點蒙?沒關系其實就是基于野生ubuntu20.04的樹莓派鏡像結合人臉識別庫face_recognition庫 ,opencv庫和其它庫操控SG90舵機及打印出來的舵機云臺實現的人臉識別和云臺追蹤。在過程中遇見ubuntu 引腳庫權限問題,也一并解決了。


過程不易請多多點贊啊

一、材料

樹莓派
usb攝像頭
SG90舵機兩個
杜邦線
舵機云臺(可以根據教程3d打印也可以去某寶買一個)

二、3D打印舵機云臺

這過程可謂一波三折啊,翻車不斷接下來請欣賞翻車集錦。
我的理想

現實
第一次打印成品
不能稱之為成品,根本看不出來是啥。 分析問題是切片導出時出現了問題 而且第一次的時候厚度只打了1毫米還是兩毫米。最后就是這東西。

第二次打印
看起來有點像模像樣 其實根本就不合身,把舵機放上去就像讓小孩子穿大人衣服一樣 根本不合適啊喂。

第三次成品 看起來還行 但是在長度寬度還是有1-2毫秒的偏差

這張圖可以看見舵機底部并沒有貼緊
舵機:“我被架空了”

其實這樣的建模打印我已經重復了6-7次 只是有些并沒有留下照片。
后來我換了個云臺復刻

最后成品
(攝像頭是之前使用過的 上面是熱熔膠)


事后我對這件事進行了反思 我沒有系統的學習過建模 使用的是123D來建模。而關于SG90的參數網上參差不齊,云臺并不大,1-2毫米的偏差這套材料就報廢了,所以最開始都是手動測量,本身就存在極大誤差。關于建模我肯定會進行系統的學習,如果有機會后續我也會出相關教程,請關注我的博客。
是不是好奇為什么建模技術突飛猛進?因為網上有這個舵機的3D模型我直接拿來打印了哈哈哈哈。如果有需要模型的請私信我。

三、人臉識別 結合opencv顯示

這里不得不提到這個重要的庫
face_recognition
這是它在pypi上的主頁
pypi:face_recognition
具體使用方法在主頁都有介紹

再結合opencv來調用視頻,展示視頻及結果。
這里我訓練了兩個人臉。照片是x1 y1。
然后為了對程序進行了測試
我又找來了被遮擋的人臉,戴口罩的人臉,部分人臉進行測試
發現如果對人臉有部分遮擋是無法識別的,如果是半張臉也很難識別。

四、代碼

部分代碼參考官網github的例子。
這里附上樹莓派引腳圖

代碼分為六部分
1操控舵機
2人臉訓練及識別
3人臉框選
4視頻展示
5舵機移動
6釋放資源
1 操控舵機 這里我使用的是BOARD的編碼格式 信號引腳接的12和32號引腳

def setServo(servo,angle):#每次傳舵機引腳和角度print('servo is work')print('servo:%s,oldangle%s'%(servo,angle))GPIO.setmode(GPIO.BOARD)GPIO.setwarnings(False)GPIO.setup(servo,GPIO.OUT)p=GPIO.PWM(servo,50)p.start(0)p.ChangeDutyCycle(2.5+angle/360*20)time.sleep(0.2)p.stop()GPIO.cleanup()

2人臉訓練及識別

yuan_image = face_recognition.load_image_file("y1.jpg") yuan_face_encoding = face_recognition.face_encodings(yuan_image)[0] # 訓練promis照片 promise_image = face_recognition.load_image_file("x1.jpg") promise_face_encoding = face_recognition.face_encodings(promise_image)[0] known_face_encodings = [yuan_face_encoding,promise_face_encoding ] known_face_names = ["yuan","promise" ]

這里訓練了兩個人臉并起名一個是yuan 一個是promise。

3框選人臉并顯示識別的人名

cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)

4視頻展示 這需要調用opencv

ret, frame = video_capture.read()ret=video_capture.set(3,640)ret=video_capture.set(4,480)

這是部分代碼我把視頻規定了大小。

5關于舵機運動規劃
我這里選取中間部分并取了5%的緩沖部分 每次發現偏差移動一個角度。

if 72<=left/4<=160 and right/4<=88<=160:passelse:if left/4 <=71:angleBOTTOM+=1else:angleBOTTOM-=1setServo(12,angleBOTTOM)if 54<=top/4<=120 and bottom/4<=66<=120:passelse:if top/4<=53:angleTOP-=1else:angleTOP+=1setServo(32,angleTOP)

6最后一定一定不要忘了關閉窗口釋放資源。

if cv2.waitKey(1) & 0xFF == ord('q'):break video_capture.release() cv2.destroyAllWindows()

需要完整代碼請私聊我或者對我上傳的資源進行下載。

五、RPi.gpio權限問題

如果你也是用的野生ubuntu鏡像 可能會出現運行人臉識別及操控舵機文件時
如果用

python3 filename

則報錯 RPi.GPIO無權限

如果用

python3 filename

則出現找不到視頻流的問題
這里我已經解決問題 請參考我的博客
樹莓派ubuntuRPi.GPIO庫權限問題


總結

部分圖片來源于網絡
csdn無法上傳視頻 但是本人以及驗證過 雖然在運動控制中并不是特別完美,但用來練手也是很有成就感的,如果在過程中出現問題歡迎留言或者私信我。

總結

以上是生活随笔為你收集整理的从3D打印到python编程 从opencv到人脸识别 从win10到树莓派ubuntu (全教程附代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。