opencv

Bilgisayarla Görme Temelleri

Bilgisayarla Görme Temelleri
Opencv (Open Source Computer Vision Library), bilgisayarla görü için kullanılan bir Python modülüdür. OpenCV, çeşitli görevleri gerçekleştirmek için yüzlerce algoritma içeren ücretsiz, açık kaynaklı bir modüldür. Yüz tanımadan hareket algılamaya kadar her şey OpenCV kullanılarak yapılabilir. Ancak bu kılavuzda OpenCV'nin temellerine bakacağız.

İlk önce OpenCV'yi yükleyelim:

pip3 opencv-python yükleyin

Resimleri 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 aktar
resim = ö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 aktar
resim = ö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 aktar
cv2'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 aktar
cv2'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 aktar
cv2'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 aktar
yakalama = 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 aktar
yakalama = 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 aktar
yakalama = 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!

En son OpenRA Strateji Oyununu Ubuntu Linux'a yükleyin
OpenRA, klasik Command & Conquer: Red Alert gibi erken Westwood oyunlarını yeniden yaratan bir Libre/Free Gerçek Zamanlı Strateji oyun motorudur. Dağı...
Gamecube & Wii için en yeni Dolphin Emulator'ı Linux'a yükleyin
Dolphin Emulator, seçtiğiniz Gamecube & Wii oyunlarını Linux Kişisel Bilgisayarlarda (PC) oynamanıza izin verir. Ücretsiz olarak kullanılabilen ve aç...
Linux'ta GameConqueror Cheat Engine Nasıl Kullanılır
Makale, Linux'ta GameConqueror hile motorunu kullanma hakkında bir kılavuzu kapsar. Windows'ta oyun oynayan birçok kullanıcı, oyun deneyimini geliştir...