ዝርዝር ሁኔታ:

የፊት መከታተያ መሣሪያ! Python & Arduino: 5 ደረጃዎች
የፊት መከታተያ መሣሪያ! Python & Arduino: 5 ደረጃዎች

ቪዲዮ: የፊት መከታተያ መሣሪያ! Python & Arduino: 5 ደረጃዎች

ቪዲዮ: የፊት መከታተያ መሣሪያ! Python & Arduino: 5 ደረጃዎች
ቪዲዮ: Q@A Mondays 2024, ህዳር
Anonim
Image
Image
የፊት መከታተያ መሣሪያ! Python & Arduino
የፊት መከታተያ መሣሪያ! Python & Arduino
የፊት መከታተያ መሣሪያ! Python & Arduino
የፊት መከታተያ መሣሪያ! Python & Arduino

በ Techovator0819 የእኔ የዩቲዩብ ቻናል ተጨማሪ በደራሲው ይከተሉ

IoT: የአየር ሁኔታ ሣጥን (በብጁ ማንቂያዎች እና ሰዓት ቆጣሪዎች)
IoT: የአየር ሁኔታ ሣጥን (በብጁ ማንቂያዎች እና ሰዓት ቆጣሪዎች)
IoT: የአየር ሁኔታ ሣጥን (በብጁ ማንቂያዎች እና ሰዓት ቆጣሪዎች)
IoT: የአየር ሁኔታ ሣጥን (በብጁ ማንቂያዎች እና ሰዓት ቆጣሪዎች)
ባለብዙ ተግባር አውቶማቲክ ሮቦት ‹ንብረት›
ባለብዙ ተግባር አውቶማቲክ ሮቦት ‹ንብረት›
ባለብዙ ተግባር አውቶማቲክ ሮቦት ‹ንብረት›
ባለብዙ ተግባር አውቶማቲክ ሮቦት ‹ንብረት›

ስለ: እኔ አዲስ ነገሮችን መሥራት እወዳለሁ። እንደ ጥቃቅን ተቆጣጣሪዎች ፣ ሜካኒካል ኢንጂነሪንግ ፣ አርቲፊሻል ኢንተለጀንስ ፣ የኮምፒውተር ሳይንስ እና እኔን የሚስብ ማንኛውንም ነገር እንደሚመለከቱት። እና እዚህ ሁሉንም ያገኛሉ… ተጨማሪ ስለ Techovator0819 »

ጤና ይስጥልኝ እና እዚያ ይህንን ሁሉ የሚያነቡ ሁሉ። ይህ OpenCV በሚባል የፓይዘን ቤተ -መጽሐፍት ላይ የሚሠራ የፊት መከታተያ መሣሪያ ነው። ሲቪ ማለት ‘የኮምፒውተር ራዕይ’ ማለት ነው። ከዚያ በእኔ ፒሲ እና በአርዱዲኖ UNO መካከል ተከታታይ በይነገጽ አቋቋምኩ። ስለዚህ ያ ማለት በ Python ላይ ብቻ አይሰራም።

ይህ መሣሪያ በፍሬም ውስጥ ፊትዎን ይገነዘባል ፣ ከዚያ ካሜራውን በፍሬም ውስጥ እንዲቆይ ለማድረግ የተወሰኑ ትዕዛዞችን ወደ አርዱinoኖ ይልካል! አሪፍ ይመስላል? ከዚያ ወደዚያ እንገባ።

አቅርቦቶች

1. አርዱዲኖ UNO

2. 2 x Servo Motors (ማንኛውም የ servo ሞተሮች ጥሩ ይሆናሉ ግን እኔ ታወር Pro SG90 ን እጠቀም ነበር)

3. Python ን መጫን

4. OpenCV ን መጫን

5. ድር-ካሜራ

ደረጃ 1 Python እና OpenCV ን መጫን

Python ን መጫን በቀጥታ ወደ ፊት ቀጥ ያለ ነው!

www.python.org/downloads/

በጣም የሚስማማዎትን (64 ቢት ወይም 32 ቢት) የሆነውን የ Python ስሪት (ማክ ፣ መስኮቶች ወይም ሊኑክስ) ለማውረድ ከላይ ያለውን አገናኝ መከተል ይችላሉ። ቀሪው የመጫን ሂደት ቀላል ነው እና በይነገጽ በኩል ይመራሉ።

አንዴ መጫኑን ከጨረሱ በኋላ የትእዛዝ ጥያቄዎን ይክፈቱ እና የሚከተለውን ይተይቡ

pip install opencv-python ን ይጫኑ

ያ የ openCV ቤተ -መጽሐፍትን መጫን አለበት። ችግር በሚነሳበት ጊዜ ይህንን ገጽ ማየት ይችላሉ።

አካባቢውን እና ሁሉንም ቅድመ ሁኔታዎችን ካዘጋጁ በኋላ ይህንን እንዴት በትክክል መገንባት እንደምንችል እንመልከት።

ደረጃ 2-ሃር መሰል ባህሪዎች ምንድናቸው?

ሃር መሰል ባህሪዎች የዲጂታል ምስል ባህሪዎች ናቸው። ስሙ የመጣው ከሐር ሞገዶች ነው። እነዚህ በዲጂታል ምስል ውስጥ ባህሪያትን ለመለየት የሚያገለግሉ አራት ማዕዘን ቅርፅ ያላቸው ሞገዶች ቤተሰብ ናቸው። Haar cascades በመሰረቱ ሀር መሰል ባህሪያትን በመጠቀም ነገሮችን (በእኛ ፊቶች ውስጥ) ለመለየት የሚረዳን ክላሲፋየር ነው።

በእኛ ሁኔታ ፣ ለቀላልነት ፣ ፊቶችን ለመለየት አስቀድመው የሰለጠኑ የሃር ካስኬዶችን እንጠቀማለን። ይህንን የ github ገጽ አገናኝ መከተል እና ለሃር ካሴድ የ xml ፋይል ማውረድ ይችላሉ።

1. 'haarcascade_frontalface_alt.xml' ላይ ጠቅ ያድርጉ

2. በኮድ መስኮቱ በላይኛው ቀኝ ክፍል ላይ ባለው “ጥሬ” ቁልፍ ላይ ጠቅ ያድርጉ።

3. በጽሑፍ ብቻ ወደ ሌላ ገጽ ይመራዎታል።

4. በቀኝ ጠቅ ያድርጉ እና 'አስቀምጥ እንደ..' ን ይምቱ

5. እርስዎ ሊጽፉት ከሚፈልጉት የፓይዘን ኮድ ጋር በተመሳሳይ ማውጫ ወይም አቃፊ ውስጥ ያስቀምጡት።

ደረጃ 3 በፓይዘን ውስጥ ኮድ መስጠት

ማስመጣት cv2

nump ን እንደ np አስመጣ ተከታታይ የማስመጣት ጊዜ

እኛ የምንፈልጋቸውን ሁሉንም ቤተመፃህፍት እናስመጣለን።

ard = serial. Serial ("COM3", 9600)

'አርድ' የተባለ ተከታታይ ነገር እንፈጥራለን። እንዲሁም የወደብ ስም እና BaudRate እንደ መለኪያዎች እንገልፃለን።

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

ለሃር ካሴኬዳችን ሌላ ነገር እንፈጥራለን። የ HaarCascade ፋይል ከዚህ የፓይዘን ፕሮግራም ጋር በአንድ አቃፊ ውስጥ መቆየቱን ያረጋግጡ።

vid = cv2. VideoCapture (0)

ቪዲዮን ከድር ካሜራ የሚይዝ ነገር እንፈጥራለን። መለኪያው ማለት ከፒሲዬ ጋር የተገናኘው የመጀመሪያው የድር ካሜራ ማለት ነው።

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

እውነት እያለ ፦

_ ፣ ፍሬም = vid.read ()#የአሁኑን ፍሬም ወደ ተለዋዋጭ ፍሬም ግራጫ = cv2.cvtColor (ፍሬም ፣ cv2. COLOR_BGR2GRAY)#የመቀየሪያ ክፈፍ -> ግራጫማ ምስል#የሚከተለው መስመር ፊቶችን ያገኛል። #የመጀመሪያው ልኬት በ #minSize = () ላይ የፈለጉትን ምስል በፒክሰሎች አኳያ የሚገልጽ ምስል ነው #ስለ Cascade ምደባ ፊቶች = face_cascade.detectMultiScale (ግራጫ ፣ minSize) የበለጠ ለማወቅ ከላይ ያለውን አገናኝ ጠቅ ያድርጉ። = (80 ፣ 80) ፣ ደቂቃ ጎረቤቶች = 3) ፊቶችን ለመለየት ለ #ሀ ለ loop። ለ (x ፣ y ፣ w ፣ h) በፊቶች ውስጥ: cv2. rectangle (ፍሬም ፣ (x ፣ y) ፣ (x+w ፣ y+h) ፣ (255 ፣ 0 ፣ 0) ፣ 2)#ዙሪያ አራት ማዕዘን ያወጣል ፊቱ Xpos = x+(w/2)#የፉቱን መሃል የ X አስተባባሪ ያሰላል። Ypos = y+(h/2) #Xpos> 280: #የሚከተለው የኮድ ብሎኮች ፊቱ ard.write ('L'. ኮድ ()) #ኦ ግራ ፣ ቀኝ ፣ ከላይ ወይም ታች ከጊዜው ጋር። እንቅልፍ (0.01) #የክፈፉ ማእከል። elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) ሌላ: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame)#በተለየ መስኮት ውስጥ ፍሬሙን ያሳያል። k = cv2. ሰበር

cv2.destroyAllWindow () #ሁሉንም መስኮቶች ይዘጋል

ard.close () #ተከታታይ ግንኙነቱን ይዘጋል

vid.release () #ቪዲዮን ከድር ካሜራ መቀበል ያቆማል።

ደረጃ 4 - አርዱዲኖን ፕሮግራም ማድረግ

ፍላጎቶችዎን በሚስማማ የሃርድዌርዎ ቅንብር መሠረት ፕሮግራሙን ለመቀየር ነፃነት ይሰማዎ።

#ያካትቱ

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

ባዶነት ማዋቀር () {

// አንዴ ለማሄድ የማዋቀሪያ ኮድዎን እዚህ ያስገቡ - Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); መዘግየት (1000); }

የቻር ግብዓት = ""; // ተከታታይ ግቤት በዚህ ተለዋዋጭ ውስጥ ተከማችቷል

ባዶነት loop () {

// በተደጋጋሚ ለማስኬድ ዋና ኮድዎን እዚህ ያስቀምጡ - ከሆነ (Serial.available ()) {// ማንኛውም ውሂብ በተከታታይ ቋት ግብዓት = Serial.read () ውስጥ ካለ ይፈትሻል። // (ግቤት == 'ዩ') {servoY.write (y+1) ከሆነ ውሂቡን ወደ ተለዋዋጭ ያነባል። // በግቤት y += 1 መሠረት የ servo አንግል ያስተካክላል። // የማዕዘኑን እሴት ያዘምናል} ሌላ ከሆነ (ግቤት == 'D') {servoY.write (y-1); y -= 1; } ሌላ {servoY. ጻፍ (y); } ከሆነ (ግብዓት == 'L') {servoX.write (x-1); x -= 1; } ሌላ ከሆነ (ግቤት == 'R') {servoX.write (x+1); x += 1; } ሌላ {servoX.write (x) ፤ } ግብዓት = ""; // ተለዋዋጭውን ያጸዳል} // ሂደቱ ይደጋገማል !!:)}

ደረጃ 5 መደምደሚያ

ይህ በአርዱዲኖ ፕሮጄክቶችዎ ውስጥ የኮምፒተር ራዕይን ለማካተት ዲዛይን የሚያደርጉበት አንድ ጥሩ እና በይነተገናኝ መንገድ ነው። የኮምፒተር ራዕይ በእውነቱ በጣም አስደሳች ነው። እና እርስዎ እንደወደዱት በእውነት ተስፋ አደርጋለሁ። አዎ ከሆነ በአስተያየቶቹ ውስጥ ያሳውቁኝ። እና እባክዎን ለዩቲዩብ ጣቢያዬ ይመዝገቡ። በቅድሚያ አመሰግናለሁ <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

የሚመከር: