Այսօր կփորձենք SERob3 ղեկավարիչին միացնել տեսախցիկ և դրա միջոցով հետևել օբյեկտին։
Դրա համար կօգտվենք OpenCV գրադարանից։
Ի՞նչ է OpenCV ն
OpenCV- ն (Open Source Computer Vision Library) ծրագրավորման գործառույթների գրադարան է, որն ուղղված է իրական ժամանակի համակարգչային տեսլականին: Ի սկզբանե մշակված Intel- ի կողմից, այն այնուհետև աջակցվեց Willow Garage- ի, ապա Itseez- ի կողմից (որը հետագայում ձեռք բերեց Intel- ը): Գրադարանը միջհամակարգային է և անվճար օգտագործման համար `բաց աղբյուրի Apache 2 լիցենզիայով: 2011 թվականից սկսած OpenCV- ն իրական ժամանակում գործողությունների համար ունի GPU արագացում:
Ինչպե՞ս ձեռք բերել OpenCV
SERob3 նոր իմիջի վրա արդեն կա OpenCV գրադարանը, իսկ եթե անհրաժեշտ է տեղադրել հին իմիջի վրա կարող եք օգտվել հետևյալ նյութերից։
Սեղմեք այստեղ
Հրամաններ
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
sudo pip3 install opencv-contrib-python
Օբյեկտին հետևելու ծրագրի օրինակ
Կստեղծենք մի օրինակ ըստ որի ծրագիրը պետք է հետևի հարմիր գնդակին և իր առանցքը ուղղի օբյեկտի վրա։
Անցնենք ծրագրին։ Նախ և առաջ անհրաժեշտ է ծրագրում ներառել OpenCV և numpy գրադարանները։
Code: Select all
import cv2
import numpy as np
Սեղմեք այստեղ
Code: Select all
cap = cv2.VideoCapture(0)
# Set camera resolution
cap.set(3, 480)
cap.set(4, 320)
Code: Select all
while True:Code: Select all
_, img = cap.read()
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)Սեղմեք այստեղ
Code: Select all
lowr = np.array([161, 155, 84])
highr = np.array([179, 255, 255])
red_mask = cv2.inRange(hsv_img, lowr, highr)
_, contours, _ = cv2.findContours(red_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
contours = sorted(contours, key=lambda x:cv2.contourArea(x), reverse=True)
Սեղմեք այստեղ
Code: Select all
for cnt in contours:
(x, y, w, h) = cv2.boundingRect(cnt)
#cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
x_medium = int((x + x + w) / 2)
#y_medium = int((y + y + h) / 2)
break
cv2.line(img, (x_medium, 0), (x_medium, 480), (0, 255, 0), 2)Code: Select all
print(x_medium)Code: Select all
cv2.imshow('test',img)Code: Select all
if ord('q')==cv2.waitKey(10):
exit(0)
Code example:
Code: Select all
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
# Set camera resolution
cap.set(3, 480)
cap.set(4, 320)
while True:
_, img = cap.read()
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lowr = np.array([161, 155, 84])
highr = np.array([179, 255, 255])
red_mask = cv2.inRange(hsv_img, lowr, highr)
_, contours, _ = cv2.findContours(red_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
contours = sorted(contours, key=lambda x:cv2.contourArea(x), reverse=True)
for cnt in contours:
(x, y, w, h) = cv2.boundingRect(cnt)
#cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
x_medium = int((x + x + w) / 2)
#y_medium = int((y + y + h) / 2)
break
cv2.line(img, (x_medium, 0), (x_medium, 480), (0, 255, 0), 2)
#cv2.line(img, (500, y_medium), (x_medium, 1000), (0, 255, 0), 2)
print(x_medium)
# all the opencv processing is done here
cv2.imshow('test',img)
#cv2.imshow("mask", red_mask)
if ord('q')==cv2.waitKey(10):
exit(0)
Code: Select all
cd projects
cd OpenCV
sudo python3 opencv.py