TI/Programowanie dla Fizyków Medycznych:Zadania openCV
Spis treści
Instalacja Open CV
Dla potrzeb tego zadania każdy powinien stworzyć własne Virtual Enviorment (wirtualne środowisko).
Otwórz terminal. Wejdź do katalogu __work_ (jest w nim dużo miejsca, którego brakuje w Twoim katalogu domowym).
- cd _work_
Wpisz komendy:
- virtualenv -p python3 ve
- source ve/bin/activate
(po tej komendzie powinno sie pojawic ve na poczatku)
- pip install --upgrade pip
- pip install opencv-python
Komendę source ve/bin/activate trzeba będzie wywołać za każdym razem, kiedy będziemy zaczynać pracę w tym wirtualnym środowisku. Wychodzi się z niego komendą:
- deactivate
A spydera w terminalu uruchamia się komendą
- spyder3
Należy uruchomić go kiedy działa virtualenv. W Tools->Preferences->Console->Advanced Settings należy wybrać Use the following Python interpreter i wpisać tam pełną ścieżkę do mojego _work_/ve/bin/python3.
Podstawowe metody w Open CV
(Tutorial można znaleźć tu: OPENCV)
Wczytanie i wyświetlenie obrazka.
import cv2
import numpy as np
img = cv2.imread('obrazek.jpg', cv2.IMREAD_COLOR)
#Uwaga! Nie RGB, tylko BGR
#jeśli ma być wczytane w skali szarości wpisz cv2.IMREAD_GRAYSCALE
#jeśli ma być wczytane w oryginalnej skali barw, to cv2.IMREAD_UNCHANGED
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
#ta linijka jest potrzebna, jeśli chcemy, by okienko było rozciągliwe
cv2.imshow('image',img)
k=cv2.waitKey(0) #czas czekania w ms, 0 - czekaj do skutku
print("Wcisnales:", k)
#Sprawdź, co zostanie wypisane, jeśli teraz zamkniesz okienko myszką
cv2.destroyAllWindows()
Na wszelki wypadek, aby zawsze została wykonana komenda zamykająca okienko, również w przypadku pojawienia się błędu w programie, warto użyć słów try: i finally:
import cv2
import numpy as np
try:
img = cv2.imread('obrazek.jpg',cv2.IMREAD_COLOR)
cv2.imshow('image',img)
k=cv2.waitKey(0)
finally:
cv2.destroyAllWindows()
Sprawdź, jakiego typu obiektem jest img?
Rysowanie
import cv2
import numpy as np
try:
img = np.zeros([512, 512,3])
cv2.imshow('image',img)
k=cv2.waitKey(0)
cv2.line(img,(0,0),(511,511),(255,0,0),1)
#tablica, poczatek, koniec, kolor, grubosc
cv2.imshow('image',img)
k=cv2.waitKey(0)
img = cv2.rectangle(img,(20,20),(50,100),(0,255,0),3)
#tablica, jeden rog, przeciwlegly rog, kolor, grubosc linii
cv2.imshow('image',img)
k=cv2.waitKey(0)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(0,100), font, 0.5,(255,255,255),1,cv2.LINE_AA)
#tablica, tekst, polozenie, font, wielkosc, kolor, grubosc linii, typ linii
cv2.imshow('image',img)
k=cv2.waitKey(0)
finally:
cv2.destroyAllWindows()
Zadanko na próbę
Napisz pętlę, w której za pomocą klawiszy będzie się zmieniało położenie i wielkość napisu, tak długo aż nie zostanie wciśnięty ENTER lub myszką zamknięte okno.
Zadanie
Obiekt: trójkąt
Zdefiniuj klasę opisującą trójkąt. Powinna mieć następujące pola:
- Współrzędne wierzchołków względem punktu odniesienia
- Współrzędne punktu odniesienia na obrazie
Powinna zawierać następujące metody:
- Konstruktor __init__, któremu jako parametry przekazywane jest początkowe położenie punktu odniesienia i wierzchołków
- Narysowanie trójkąta na obrazie przekazanym jako parametr
- Sprawdzenie, czy punkt o danych współrzędnych znajduje się wewnątrz trójkąta
- Zmiana położenia (translacja) punktu odniesienia
- Obrót trójkąta wokół punktu odniesienia o zadany kąt