Мазмұны:
- 1 -қадам: танылған объектіге тіктөртбұрыш салу
- 2 -қадам: Объект қозғалатын жолды іздеңіз
- 3 -қадам: Екі кодты да біріктіру
Бейне: Opencv нысандарын бақылау: 3 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Жылжымалы объектілерді анықтау - бұл компьютерде көру мен суретті өңдеуде қолданылатын әдіс. Бейнеден алынған бірнеше кадрлар әр түрлі әдістермен салыстырылып, қозғалатын объектінің табылғанын анықтайды.
Жылжымалы объектілерді анықтау бейнебақылау, белсенділікті тану, жол жағдайын бақылау, әуежай қауіпсіздігі, теңіз шекарасында қорғаныс мониторингі және т.
Жылжымалы объектілерді анықтау - бұл белгілі бір жерде немесе аймақтағы объектінің физикалық қозғалысын тану. [2] Қозғалатын объектілер мен қозғалмайтын аймақ немесе аймақ арасында сегменттеу арқылы қозғалатын объектілердің қозғалысын бақылап, кейін талдауға болады. Бұған жету үшін, бейне - бұл бір кадрға салынған құрылым, жылжымалы объектіні анықтау - бұл әрбір бейне кадрда немесе қозғалыстағы мақсат бейнеде бірінші көріністі көрсеткенде ғана алдыңғы жоспарлы қозғалатын нысандарды табу.
Мен Opnecv және Python комбинациясын түске негізделген объектілерді анықтау және бақылау үшін қолданамын
1 -қадам: танылған объектіге тіктөртбұрыш салу
егер сіздің компьютеріңізде python немесе opencv болмаса, төмендегі шешілмейтіндерді орындаңыз
мұнда python коды:
nv ретінде cv2import numpy импорттаңыз
cap = cv2. VideoCapture (0)
шындық кезінде:
_, frame = cap.read () hsv = cv2.cvtColor (кадр, cv2. COLOR_BGR2HSV)
төменгі_сары = np.қызық
жоғарғы_сары = np.array ([40, 255, 255])
yellow_mask = cv2.inRange (hsv, төменгі_сары, жоғарғы_сары)
(_, контурлар, _) = cv2.findContours (сары маска, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
контурдағы контур үшін:
ауданы = cv2.contourArea (контур)
егер (ауданы> 800):
x, y, w, h = cv2.boundingRect (contour) frame = cv2.tectangle (frame, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow («қадағалау», кадр)
k = cv2.waitKey (5) & 0XFF
егер k == 27: үзіліс
cv2.destroyAllWindows ()
cap.release ()
2 -қадам: Объект қозғалатын жолды іздеңіз
жолды бақылау үшін:
i үшін диапазонда (1, len (орталық_ұпайлар)): b = кездейсоқ.randint (230, 255) g = кездейсоқ.randint (100, 255) r = кездейсоқ.рандинт (100, 255) егер math.sqrt (((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (кадр, центр_ұпайлары [i - 1], орталық_ұпайлар , (b, g, r), 4)
3 -қадам: Екі кодты да біріктіру
Мен кодты екеуін де біріктіремін
cv2import numpy импорттау жиынынан np кездейсоқ импорт
cap = cv2. VideoCapture (1)
# Объект барған барлық нүктені қадағалау үшін center_points = deque ()
шындық кезінде:
# Жақтауды оқу және аудару _, frame = cap.read () frame = cv2.flip (кадр, 1)
# Жақтауды аздап бұлдыратыңыз
blur_frame = cv2. GaussianBlur (кадр, (7, 7), 0)
# BGR -ден HSV түс форматына түрлендіру
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Анықтау үшін hsv түсінің төменгі және жоғарғы диапазонын анықтаңыз. Мұнда көк
төменгі_көк = np.аре ([100, 50, 50]) жоғарғы_көк = np.array ([140, 255, 255]) маска = cv2.inRange (hsv, төменгі_көк, жоғарғы_көк)
# Эллиптикалық ядро жасаңыз
ядро = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Морфтың ашылуы (эрозия, содан кейін кеңею)
маска = cv2.morphologyEx (маска, cv2. MORPH_OPEN, ядро)
# Барлық контурларды табыңыз
контурлар, иерархия = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
егер len (контурлар)> 0:
# Ең үлкен контурды табыңыз ең үлкен_контур = максимум (контурлар, кілт = cv2.contourArea)
# Контурдың ортасын тауып, толтырылған шеңбер сызыңыз
сәттер = cv2.moments (ең үлкен_контур) centre_of_contour = (int (сәттер ['m10'] / сәттер ['m00'])), int (сәттер ['m01'] / сәттер ['m00'])) cv2. шеңбер (кадр, центр_контуры, 5, (0, 0, 255), -1)
# Контурды шеңбермен байлаңыз
эллипс = cv2.fitEllipse (үлкен_контур) cv2.ellipse (жақтау, эллипс, (0, 255, 255), 2)
# Контурдың ортасын сақтаңыз, осылайша біз оны бақылау сызығын жүргіземіз
center_points.appendleft (центр_контуры)
# Контурдың орталық нүктелерінен сызық сызыңыз
i үшін диапазонда (1, len (орталық_ұпайлар)): b = кездейсоқ.рандинт (230, 255) g = кездейсоқ.randint (100, 255) r = кездейсоқ.рандинт (100, 255) егер math.sqrt (((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (кадр, центр_ұпайлары [i - 1], орталық нүктелер , (b, g, r), 4)
cv2.imshow ('түпнұсқа', кадр)
cv2.imshow ('маска', маска)
k = cv2.waitKey (5) & 0xFF
егер k == 27: үзіліс
cv2.destroyAllWindows ()
cap.release ()
Ұсынылған:
Raspberry Pi - Автономды Mars Rover OpenCV нысандарын бақылау: 7 қадам (суреттермен)
Raspberry Pi - Автономды Mars Rover OpenCV объектілерін бақылау: Raspberry Pi 3, резюме ашық резюме, ультрадыбыстық сенсорлар мен берілісті тұрақты ток қозғалтқыштары. Бұл ровер үйретілген кез келген нысанды бақылай алады және кез келген рельефте қозғала алады
NodeMCU көмегімен IoT негізіндегі топырақ ылғалдылығын бақылау мен бақылау жүйесі: 6 қадам
NodeMCU көмегімен IoT негізіндегі топырақтағы ылғалдылықты бақылау мен бақылау жүйесі: Бұл оқулықта біз ESP8266 WiFi модулін, яғни NodeMCU көмегімен IoT негізіндегі топырақ ылғалдылығын бақылау мен бақылау жүйесін енгізетін боламыз. Бұл жобаға қажет компоненттер: ESP8266 WiFi модулі- Amazon (334/- INR) реле модулі- Amazon (130/- INR
OpenCV мен Tensorflow көмегімен Dragonboard 410c немесе 820c нысандарын анықтау: 4 қадам
OpenCV мен Tensorflow көмегімен Dragonboard 410c немесе 820c нысандарын анықтау: Бұл нұсқаулықта объектілерді анықтау қосымшасын іске қосу үшін Python 3.5 үшін OpenCV, Tensorflow және машиналық оқыту жүйелерін орнату әдісі сипатталған
FoldTronics: жиналмалы HoneyComb құрылымдарының көмегімен интеграцияланған электроника көмегімен 3D нысандарын құру: 11 қадам
FoldTronics: HoneyComb құрылымдарын қолдана отырып, интеграцияланған электроникамен 3D нысандарын құру: Бұл оқулықта біз электрониканы 3D бүктелген объектілерге біріктіру үшін 2D кесуге негізделген өндіріс техникасы FoldTronics ұсынамыз. Негізгі идея - 2D парақты кесу плоттерінің көмегімен 3D ұялы құрылымға жиналатын етіп кесу және тесу
Xbox Controller арқылы бетті бақылау және бақылау арқылы қайырымдылық робот - Arduino: 9 қадам (суреттермен)
Xbox Controller арқылы бетті бақылау және бақылау арқылы қайыршы робот - Arduino: Біз қайыршы робот жасамақпыз. Бұл робот тітіркендіруге немесе өтіп бара жатқан адамдардың назарын аударуға тырысады. Бұл олардың беттерін анықтап, оларға лазермен оқ атуға тырысады. Егер сіз роботқа тиын берсеңіз, ол ән айтып, би билейді. Роботқа қажет болады