久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【學(xué)園】今天程序員的每一行代碼都是未來高達(dá)身上的一顆螺絲

 高達(dá) 2020-07-30

原創(chuàng)聲明

高達(dá)模型制作技巧

微信公眾號《高達(dá)模型制作技巧》自創(chuàng)辦以來深受各個(gè)方面大力支持,眾多作者編輯譯者亦傾力付出辛苦的汗水和獨(dú)特的創(chuàng)意,。對本公眾號原創(chuàng)文章的轉(zhuǎn)載請聯(lián)系公眾號編輯獲得授權(quán)。私自轉(zhuǎn)載行為和任何不負(fù)責(zé)的摘錄行為,,本公眾號運(yùn)營主體將進(jìn)行最大程度的追責(zé),。

作者:Hydra.CasterDamon工作室

這是昨天收到的作者投稿,在iN的建議下就給大家改成了一個(gè)教程,。

先看看是什么:

利用攝像頭和舵機(jī)組建的一只人臉跟蹤大魔,。只要你出現(xiàn)在它的視野中,這只大摩頭就會一只盯著你,。

有一種 硝煙散盡 在廢墟里找到了一個(gè)大魔 只剩下頭 但眼睛還亮著的感覺……

其實(shí)要實(shí)現(xiàn)這個(gè)控制并不難,,整體上僅僅需要200多行代碼,在程序中都算作是小程序了,。即便是未來真的出現(xiàn)高達(dá),,高達(dá)的目標(biāo)追蹤功能的代碼其實(shí)也是可以從作者的項(xiàng)目中進(jìn)行擴(kuò)展的。

那么我們來看看這只大摩頭是如何制作出來的:

作者的教程:

第一次寫教程沒有啥經(jīng)驗(yàn) 有寫的不好的地方歡迎指正

這個(gè)大魔源于一個(gè)我在寫的人臉追蹤的項(xiàng)目,,做好了就像下面這個(gè),。

但是作為膠佬自然不會就這么止步,所以就想到了把他美化一下,,就想到了買一個(gè)大魔頭,,然后把它裝在里面。

接下來先教大家制作這個(gè)人臉追蹤平臺,,成本不到100元。

需要的東西有:

  • 舵機(jī)兩個(gè) 

  • 二軸云臺一個(gè) 

  • Arduino nano3開發(fā)板一個(gè) 

  • usb攝像頭一個(gè) 

  • usb線一根

網(wǎng)上買的云臺質(zhì)量不會很好,,舵機(jī)可能不能很好的卡進(jìn)去,,所以要先把舵機(jī)打磨好,然后像下圖這樣組裝好,。

舵機(jī)一共有三根線,,黃色的是信號線,紅色和褐色分別是正負(fù)極,。如下圖所示,。

我們將正負(fù)極的線剪斷,然后將兩個(gè)舵機(jī)的正極接在一起,,負(fù)極接在一起,,再剪斷一根沒用的usb線,usb線里面也會有正負(fù)極線,,對應(yīng)的將正極接在一起,,負(fù)極接在一起,。這樣就可以通過usb向舵機(jī)供電了。

再將x軸的舵機(jī)信號線接到arduino nano開發(fā)板的D8接口接到Y(jié)軸的舵機(jī)信號線上,,D9接口接到X軸的舵機(jī)信號線上,。

這樣硬件部分的連接就算完成了。

下來就是向arduino nano燒錄程序了,。

下載arduino的IDE   

 將arduino nano通過usb連接到電腦上,。做如下配置,在工具中選擇開發(fā)板,。

配置端口,,我這里是COM5,大家根據(jù)自己的實(shí)際情況選擇,。

然后點(diǎn)擊編譯,,編譯無錯(cuò)誤,上傳,。

等待上傳完成,。

最后將攝像頭連接到電腦上,打開pycharm軟件,,運(yùn)行python人臉識別代碼,。

Python會將識別到的人臉的坐標(biāo)通過串口發(fā)送給arduino nano開發(fā)板。開發(fā)板根據(jù)接收到的坐標(biāo)對舵機(jī)進(jìn)行控制,。

以上關(guān)于人臉追蹤的介紹就完成了,。

下面就是大魔頭的做舊了。

首先把大魔頭的眼睛以下的部分全部掏空,,然后打磨平整,,保證大魔頭可以正好套在云臺上。

然后在外甲加上傷痕,,我沒有電動(dòng)鋸,,所以就用了三角形的銼刀,一點(diǎn)一點(diǎn)搓出來的傷口,。隨后就是對動(dòng)力管等上漆,,這里用的田宮的噴灌,金屬淺槍鐵色,。

先在表面上一層消光,,以免裂件。然后就是漬洗,。我用了郡仕的鐵銹色滲線液進(jìn)行漬洗,。

等漬洗液干透,就可以用棉簽蘸取稀釋劑擦去多余的漬洗液了。

然后干掃,、用面相筆蘸取黑色補(bǔ)充細(xì)節(jié)掉漆,。

完成!

后面則是代碼了:

Arduino  舵機(jī)驅(qū)動(dòng)代碼:

#include <Servo.h> // 聲明調(diào)用Servo.h庫Servo myservo; // 創(chuàng)建一個(gè)舵機(jī)對象Servo myservo1; // 創(chuàng)建一個(gè)舵機(jī)對象int posx = 60; // 變量pos用來存儲舵機(jī)位置int posy = 60; // 變量pos用來存儲舵機(jī)位置int c = 0;void setup() { Serial.begin(9600); myservo.attach(9); // 將引腳9上的舵機(jī)與聲明的舵機(jī)對象連接起來 myservo1.attach(8); // 將引腳9上的8機(jī)與聲明的舵機(jī)對象連接起來 myservo.write(posx); myservo1.write(posy);// 給舵機(jī)寫入角度}
void loop() { while(Serial.available()>0)//當(dāng)有信號的時(shí)候 { char val=Serial.read(); Serial.println(val); if(val=='0'){ //左上 if(posx -3>=60){ posx = posx -3; c = 1; } if(posy -2>=0){ posy = posy -2; c = 1; } }else if(val=='1'){ //右上 if(posx +3<=120){ posx = posx +3; c = 1; } if(posy -2>=60){ posy = posy -2; c = 1; } }else if(val=='2'){ //左下 if(posx -3>=0){ posx = posx -3; c = 1; } if(posy +2<=120){ posy = posy +2; c = 1; } }else if(val=='3'){ //右下 if(posx +3<=120){ posx = posx +3; c = 1; } if(posy +2<=120){ posy = posy +2; c = 1; } }else if(val=='4'){ //上 if(posy -2>=0){ posy = posy -2; c = 1; } }else if(val=='5'){ //左 if(posx -3>=0){ posx = posx -3; c = 1; } }else if(val=='6'){ //右 if(posx +3<=120){ posx = posx +3; c = 1; } }else if(val=='7'){ //下 if(posy +2<=120){ posy = posy +2; c = 1; } } if(c ==1){ Serial.println("dong"); myservo.write(posx); myservo1.write(posy);// 給舵機(jī)寫入角度 } c = 0; Serial.println(posx); Serial.println(val); } }

上位機(jī)(也就是我們的電腦)人臉識別代碼

#!Anaconda/anaconda/python
import dlib #人臉識別的庫dlibimport numpy as np #數(shù)據(jù)處理的庫numpyimport cv2 #圖像處理的庫OpenCvfrom pyfirmata import Arduino, utilimport timeimport serial

class face_emotion():
def __init__(self): # 使用特征提取器get_frontal_face_detector self.detector = dlib.get_frontal_face_detector() # dlib的68點(diǎn)模型,使用作者訓(xùn)練好的特征預(yù)測器 self.predictor = dlib.shape_predictor("./shape_predictor_68_face_landmarks.dat")
# 建cv2攝像頭對象,這里使用電腦自帶攝像頭,,如果接了外部攝像頭,則自動(dòng)切換到外部攝像頭 self.cap = cv2.VideoCapture(0) # 設(shè)置視頻參數(shù),,propId設(shè)置的視頻參數(shù),value設(shè)置的參數(shù)值 self.cap.set(3, 480) # 截圖screenshoot的計(jì)數(shù)器 self.cnt = 0 self.ser = serial.Serial() self.ser.baudrate = 9600 # 設(shè)置波特率 self.ser.port = "COM5" # 端口是COM3 self.ser.open() # 打開串口
def learning_face(self): # cap.isOpened() 返回true/false 檢查初始化是否成功 while(self.cap.isOpened()):
# cap.read() # 返回兩個(gè)值: # 一個(gè)布爾值true/false,,用來判斷讀取視頻是否成功/是否到視頻末尾 # 圖像對象,,圖像的三維矩陣 flag, im_rd = self.cap.read()
# 每幀數(shù)據(jù)延時(shí)1ms,延時(shí)為0讀取的是靜態(tài)幀 k = cv2.waitKey(1)
# 取灰度 img_gray = cv2.cvtColor(im_rd, cv2.COLOR_RGB2GRAY)
# 使用人臉檢測器檢測每一幀圖像中的人臉,。并返回人臉數(shù)rects faces = self.detector(img_gray, 0)
# 待會要顯示在屏幕上的字體 font = cv2.FONT_HERSHEY_SIMPLEX
# 如果檢測到人臉 if len(faces) != 0:
# 對每個(gè)人臉都標(biāo)出68個(gè)特征點(diǎn) for i in range(len(faces)): # enumerate方法同時(shí)返回?cái)?shù)據(jù)對象的索引和數(shù)據(jù),,k為索引,d為faces中的對象 for k, d in enumerate(faces):
cv2.rectangle(im_rd, (d.left(), d.top()), (d.right(), d.bottom()), (0, 0, 255)) fw(self, d.top(), d.bottom(), d.left(), d.right())
# 計(jì)算人臉熱別框邊長 self.face_width = d.right() - d.left()
# 標(biāo)出人臉數(shù) cv2.putText(im_rd, "Faces: "+str(len(faces)), (20,50), font, 1, (0, 0, 255), 1, cv2.LINE_AA) else: # 沒有檢測到人臉 cv2.putText(im_rd, "No Face", (20, 50), font, 1, (0, 0, 255), 1, cv2.LINE_AA)
# 窗口顯示 cv2.imshow("camera", im_rd)
# 釋放攝像頭 self.cap.release()
# 刪除建立的窗口 cv2.destroyAllWindows()

def fw(self, t, b, l, r):
y = (b - t) / 2 + t x = (r - l) / 2 + l print(str(t)+" "+str(b)+" "+str(l)+" "+str(r)) print(" " +str(x) + " " + str(y))
if x-280>=50 and abs(y-300)<=40: print("右") self.ser.write(b"5") elif x - 280 >= 50 and y - 300 >= 40: print("右下") self.ser.write(b"2") elif x - 280 >= 50 and y - 300<=-40: print("右上") self.ser.write(b"0") elif x - 280 <= -50 and abs(y-300)<=40: print("左") self.ser.write(b"6") elif x - 280 <= -50 and y-300<=-40: print("左上") self.ser.write(b"1") elif x - 280 <= -50 and y-300 >= 40: print("左下") self.ser.write(b"3") elif abs(x - 280) <= 50 and y-300>=40: print("下") self.ser.write(b"7") elif abs(x - 280) <= 50 and y-300<=-40: print("上") self.ser.write(b"4")

if __name__ == "__main__": my_face = face_emotion() my_face.learning_face()

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多