İlk önce OpenCV'yi yükleyelim:
pip3 opencv-python yükleyinResimleri Oku ve Göster
Öğrenmemiz gereken ilk şey görüntüleri okumak ve yazmaktır. Bir görüntü dosyasını okuma, dosyanın tam yolunu veya dosya adını girme (dosya python klasöründeyse) ve bayrak ekleme cv2 kullanılarak yapılır.oku(). Bayrak 1 (renkli bir görüntü için), 0 (gri tonlama için) veya -1 (kanallı renkli görüntü için) değerini alabilir. cv2 kullanabilirsiniz.görüntüyü göstermek için imshow() işlevi; burada iki argüman iletilir - görüntü için bir ad ve gösterilecek görüntü. Sonra, cv2'yi kullanıyoruz.klavye girişini beklemek için waitKey() işlevi; cv2 için 0.waitKey(0) işlevi, kalıcı bir bekleme süresi anlamına gelir. Öte yandan, cv2.destroyAllWindows() işlevi pencereleri kapatır.
Bu, bir resmi okuyup açacak ve siz kapatana kadar resmi açık tutacaktır:
cv2'yi içe aktarresim = özgeçmiş2.imread('LinuxLogosu.jpg', 1)
özgeçmiş2.imshow('görüntü', görüntü)
özgeçmiş2.bekleAnahtar(0)
özgeçmiş2.yokTümWindows()
Resim Yaz
cv2 kullanıyoruz.bir görüntüyü kaydetmek için imwrite() işlevi. Bu işlev iki parametre alır - görüntüyü kaydetmek için bir ad ve kaydetmek istediğiniz görüntü.
cv2'yi içe aktarresim = özgeçmiş2.imread('tanımla.jpg', -1)
özgeçmiş2.imwrite('save_image.png', resim)
Web Kamerasından Video Yakalama
Video çekmek için cv2'yi başlatarak başlıyoruz.VideoCapture() işlevi. Ardından videoyu çekmeye devam etmek için bir "while" döngüsü kullanırız. Kullanıcı çıkış tuşuna basmazken, kareleri okuyabilir ve read() ve cv2 kullanarak gösterebiliriz.imshow() işlevi. Daha sonra döngüden çıkmak için bir “break” tuşu koyarız; bu durumda 27 sayısı ESC tuşudur. Kullanıcı ESC tuşuna basarsa döngüden çıkar. Döngüden çıktıktan sonra, yakalamayı serbest bırakmak gerekir.
numpy'yi np olarak içe aktarcv2'yi içe aktar
yakalama = cv2.Video Yakalama(0)
süre(Doğru):
ret, çerçeve = yakalama.oku()
özgeçmiş2.imshow('çerçeve', çerçeve)
cv2 ise.waitKey(1) & 0xFF == 27:
kırmak
ele geçirmek.serbest bırakmak()
özgeçmiş2.yokTümWindows()
Video Dosyasını Oynatma
Bir video dosyasını oynatmak, bir web kamerasından video çekmek gibidir. Bunu yapmak için cv2.VideoCapture() işlevi kullanılır; ardından oynatmak istediğiniz video dosyasının adı işleve eklenir. Yine “while” döngüsü kullanılır ve bu durumda çıkış tuşu klavyedeki “s” tuşudur. Bu, video dosyasını açıp oynatır ve kullanıcı “s” tuşuna bastığında onu kapatır.
numpy'yi np olarak içe aktarcv2'yi içe aktar
yakalama = cv2.VideoCapture("Megamind.avi")
süre(Doğru):
ret, çerçeve = yakalama.oku()
özgeçmiş2.imshow('çerçeve', çerçeve)
cv2 ise.waitKey(1) & 0xFF == ord("s"):
kırmak
ele geçirmek.serbest bırakmak()
özgeçmiş2.yokTümWindows()
Video Dosyasını Kaydetme
Bir video dosyasını kaydetmek biraz daha fazla çalışma gerektirir. cv2.VideoWriter() işlevi toplamda 4 parametre alır - çıktı dosyası adı, FourCC kodu, saniyedeki kare sayısı ve kare boyutu. Ayrıca, cv2'yi kullanan video codec bileşeni olan FourCC kodu belirtilmelidir.VideoWriter_fourcc() işlevi. Yakalamayı kullanma.isOpened(), çerçeveyi okuyoruz ve çıktı çerçevesini yazıyoruz. cv2 kullanarak kareleri de gösterebiliriz.imshow() işlevi. Sonra cv2 kullanıyoruz.waitKey(1) & 0xFF == ord('s') bir çıkış anahtarı ayarlamak için. Bu durumda, kullanıcı “s” tuşuna basarsa, döngüden çıkar ve ardından yakalama ve çıktıyı serbest bırakır ve pencereleri kapatır.
numpy'yi np olarak içe aktarcv2'yi içe aktar
yakalama = cv2.Video Yakalama(0)
dörtcc = cv2.VideoWriter_fourcc(*'XVID')
çıktı = cv2.VideoWriter('çıktı.avi',fourcc, 30.0, (640,480))
while(yakalamak.açık()):
ret, çerçeve = yakalama.oku()
çıktı.yazmak(çerçeve)
özgeçmiş2.imshow('çerçeve',çerçeve)
cv2 ise.waitKey(1) & 0xFF == ord('s'):
kırmak
ele geçirmek.serbest bırakmak()
çıktı.serbest bırakmak()
özgeçmiş2.yokTümWindows()
Çizgiler, Daireler, Dikdörtgenler ve Metinler Çizme
Çizmeyi öğreneceğimiz ilk şey bir çizgi. Bir çizgi çizmek için cv2'yi kullanırız.satır() işlevi. İşlev 5 argüman alır - kaynak video, başlangıç noktası, bitiş noktası, renk ve çizginin kalınlığı. Aşağıdaki durumda, dikdörtgen bir kenarlık (4 çizgiden oluşan) çizmeye karar verdik:
cv2'yi içe aktaryakalama = cv2.VideoCapture('vtest.avi')
Doğru iken:
ret, çerçeve = yakalama.oku()
genişlik = int(yakalama.almak(3))
yükseklik = int(yakalama.almak(4)
satır1 = cv2.satır(çerçeve, (0,0), (0,yükseklik), (255, 255, 255),10)
satır2 = cv2.satır(satır1, (0, 0), (genişlik,0),(255, 255, 255), 10)
satır3 = cv2.satır(satır2, (0,yükseklik), (genişlik, yükseklik), (255, 255, 255), 10)
satır4 = cv2.line(line3, (genişlik, 0), (genişlik, yükseklik), (255, 255, 255), 10)
özgeçmiş2.imshow('çerçeve', satır4)
cv2 ise.waitKey(40) == ord('q'):
kırmak
ele geçirmek.serbest bırakmak()
özgeçmiş2.yokTümWindows()
Ardından, videonun üzerine hem daire hem de dikdörtgen çizeceğiz. Dikdörtgen çizmek için cv2'yi kullanırız.satıra çok benzeyen 5 argüman alan rectangle() işlevi. Bir daire çizmek için cv2 fonksiyonunu kullanırız.Ayrıca 5 argüman alan daire() - kaynak video, merkez nokta, yarıçap, renk ve kalınlık.
cv2'yi içe aktaryakalama = cv2.VideoCapture('vtest.avi')
Doğru iken:
ret, çerçeve = yakalama.oku()
genişlik = int(yakalama.almak(3))
yükseklik = int(yakalama.almak(4)
dikdörtgen = cv2.dikdörtgen(çerçeve, (150, 15), (650, 550), (0,0,0), 11)
özgeçmiş2.daire(dikdörtgen, (250, 250), 60, (0,0,0), 11)
özgeçmiş2.imshow('çerçeve', çerçeve)
cv2 ise.waitKey(40) == ord('q'):
kırmak
ele geçirmek.serbest bırakmak()
özgeçmiş2.yokTümWindows()
Şimdi elimizdeki videoya biraz metin ekleyelim. Bunu yapmak için bir yazı tipi belirlememiz gerekiyor; burada cv2'yi seçtik.FONT_HERSHEY_SIMPLEX. Yazı tipi seçildikten sonra cv2 fonksiyonunu kullanabiliriz.gerisini yapmak için putText(). CV2.putText() 8 argüman alır - kaynak video, yazmak istediğiniz metin, istediğiniz yer, yazı tipi, büyütme, renk, kalınlık ve cv2.LINE_AA (her şeyin daha iyi görünmesini sağlar).
cv2'yi içe aktaryakalama = cv2.VideoCapture('vtest.avi')
Doğru iken:
ret, çerçeve = yakalama.oku()
genişlik = int(yakalama.almak(3))
yükseklik = int(yakalama.almak(4)
yazı tipi = cv2.FONT_HERSHEY_SIMPLEX
resim = özgeçmiş2.putText(çerçeve, "VTEST.AVI", (200, 200), yazı tipi, 4, (0,0,0), 5, cv2.LINE_AA)
özgeçmiş2.imshow('çerçeve', resim)
cv2 ise.waitKey(40) == ord('q'):
kırmak
ele geçirmek.serbest bırakmak()
özgeçmiş2.yokTümWindows()
OpenCV, birinin bir yerden başlaması gereken birçok harika şeyi yapabilir. Görüntüler ve videolar oluşturmayı ve kaydetmeyi öğreniyor olabilir. Bu derste, bilgisayarla görmenin temellerini yapmayı öğrendik.
mutlu kodlama!