SERob3 (python) - OpenCV

Post Reply
davbaghdasaryan
Posts: 101
Joined: Thu Apr 09, 2020 8:08 pm

SERob3 (python) - OpenCV

Post by davbaghdasaryan »

Test for English version | Тест для русской версии

Այսօր կփորձենք SERob3 ղեկավարիչին միացնել տեսախցիկ և դրա միջոցով հետևել օբյեկտին։
Դրա համար կօգտվենք OpenCV գրադարանից։

Ի՞նչ է OpenCV ն

OpenCV- ն (Open Source Computer Vision Library) ծրագրավորման գործառույթների գրադարան է, որն ուղղված է իրական ժամանակի համակարգչային տեսլականին: Ի սկզբանե մշակված Intel- ի կողմից, այն այնուհետև աջակցվեց Willow Garage- ի, ապա Itseez- ի կողմից (որը հետագայում ձեռք բերեց Intel- ը): Գրադարանը միջհամակարգային է և անվճար օգտագործման համար `բաց աղբյուրի Apache 2 լիցենզիայով: 2011 թվականից սկսած OpenCV- ն իրական ժամանակում գործողությունների համար ունի GPU արագացում:

Ինչպե՞ս ձեռք բերել OpenCV

SERob3 նոր իմիջի վրա արդեն կա OpenCV գրադարանը, իսկ եթե անհրաժեշտ է տեղադրել հին իմիջի վրա կարող եք օգտվել հետևյալ նյութերից։
Սեղմեք այստեղ
https://www.youtube.com/watch?v=xlmJsTeZL3w
Հրամաններ
sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-100
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)
Այնուհետև մենք տալիս ենք այն պարամետրերը, ըստ որոնց պետք է ծրագիրը հետևի օբյեկտին, այսինքն կարմիր գույնը՝ երանգների միջև թվային տարածությունը (numpy գրադարանի միջոցով)
Սեղմեք այստեղ

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)
Ստեղծում ենք կանաչ առանցք (x_medium) և այն վերտիկալ ուղղում օբյեկտի մեջտեղը։
Սեղմեք այստեղ

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)
Աշխատանքը հեշտացնելու համար terminal ի վրա տպում ենք x_medium ի արժեքը։

Code: Select all

print(x_medium)
էկրանի վրա ցուցադրում ենք ստացված պատկերը։

Code: Select all

cv2.imshow('test',img)
q ստեղնը սեղմելու դեպքում ավարտում ենք ծրագիրը։

Code: Select all

    if ord('q')==cv2.waitKey(10):
        exit(0)
Արդյունքը՝
Screen Shot 2021-04-09 at 14.43.58.png
Screen Shot 2021-04-09 at 14.43.58.png (113.51 KiB) Viewed 11186 times

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)
Ծրագիրը աշխատացնելու համար (SERob3 new image) մտնում ենք terminal և գրում

Code: Select all

cd projects
cd OpenCV
sudo python3 opencv.py

khrach
Posts: 1
Joined: Thu Mar 19, 2020 12:31 pm

Re: SERob3 (python) - OpenCV

Post by khrach »

Test for English version

Today we will try to connect a camera to the SERob3 controller and follow the object through it.
Let’s use the OpenCV library.



What is OpenCV?

OpenCV (Open Source Computer Vision Library) is a library of programming functions which is focused on real-time computer vision. Originally it was developed by “Intel”, then was supported by “Willow Garage” and later by “Itseez” (it was later acquired by “Intel”).
The library is intersystem and free for use with the open-source Apache 2 license. OpenCV has had GPU acceleration for real-time operations since 2011.


How to get OpenCV

The SERob3 new image already has the OpenCV library, and if you need to paste it on the old image, you can use the following materials.
Click here
https://www.youtube.com/watch?v=xlmJsTeZL3w
Հրամաններ
sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-100
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


An example of the object following program.

Let’s create an example according to which the program must follow the red ball and direct its axis to the object.
Let’s turn to the program. Firstly, we need to include the OpenCV and numpy libraries.

Code: Select all

import cv2
import numpy as np
Then we need to set the camera parameters.
Click here

Code: Select all

cap = cv2.VideoCapture(0)

# Set camera resolution
cap.set(3, 480)
cap.set(4, 320)
Then start our endless cycle.

Code: Select all

while True:
We start importing pictures from the camera.

Code: Select all

    _, img = cap.read()
    hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
Then we set the parameters according to which the program should follow the object, that is the red color- the digital space between shades (through the numpy library).
Click here

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)
Create a green axis(x_medium) and direct it vertically to the middle of the object.
Click here

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)
To ease the work print x_medium value on the terminal.

Code: Select all

print(x_medium)
To ease the work print x_medium value on the terminal.

Code: Select all

cv2.imshow('test',img)
In the case of pushing q key, we exit the program.

Code: Select all

    if ord('q')==cv2.waitKey(10):
        exit(0)
The result:
Screen Shot 2021-04-09 at 14.43.58.png
Screen Shot 2021-04-09 at 14.43.58.png (113.51 KiB) Viewed 10938 times

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)
In order to run the program (SERob3 new image) enter the terminal and type

Code: Select all

cd projects
cd OpenCV
sudo python3 opencv.py

Tatevik Orbelyan
Posts: 50
Joined: Thu Apr 09, 2020 5:42 pm

Re: SERob3 (python) - OpenCV

Post by Tatevik Orbelyan »

khrach wrote:
Mon May 31, 2021 12:38 pm
Тест русской версии

Сегодня мы попытаемся подключить к SERob3 камеру и с ее помощью следить за объектом.
Воспользуемся библиотекой OpenCV.

Что такое OpenCV

OpenCV (Open Source Computer Vision Library) - это библиотека функций программирования, направленная на компьютерное видение в реальном времени. Первоначально разработанный Intel, он затем был поддержан Willow Garage, а затем Itseez (который впоследствии приобрел Intel). Библиотека является межсистемной и бесплатной для использования с открытым исходным кодом Apache 2. Начиная с 2011 года OpenCV имеет ускорение GPU для операций в режиме реального времени.

Как преобрести OpenCV

На новом имидже SERob3 уже есть библиотека OpenCV, а если необходимо разместить на старом имидже можно использовать следующие материал․
Нажмите для просмотра
https://www.youtube.com/watch?v=xlmJsTeZL3w
Команды
sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-100
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)
Затем мы задаем параметры, по которым программа должна следить за объектом, то есть красный цвет-цифровое пространство между оттенками (с помощью библиотеки numpy)
Нажмите для просмотра

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)
Создаем зеленую ось (x_medium) и ее направляемую к центр объекта.
Нажмите для просмотра

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)
Чтобы облегчить работу, на terminal выводим значение x_medium.

Code: Select all

print(x_medium)
Выводим получившееся изображение на экран.

Code: Select all

cv2.imshow('test',img)
При нажатии на клавишу “q” завершаем программу.

Code: Select all

    if ord('q')==cv2.waitKey(10):
        exit(0)
Результат:
Screen Shot 2021-04-09 at 14.43.58.png
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)
Для работы программы (SERob3 new image) мы входим в terminal и вводим

Code: Select all

cd projects
cd OpenCV
sudo python3 opencv.py

Post Reply