Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan OpenCV kütüphanesi kullanarak Python'da görüntü işleme tekniklerini anlatan kapsamlı bir eğitim içeriğidir.
- Video, OpenCV ile çeşitli görüntü işleme tekniklerini adım adım göstermektedir. İçerik, kuşbakışı görüntü alma, mouse ile nokta seçimi, resim üzerinde çizim yapma, resim boyutlandırma, kesme, çoklu resmi birleştirme ve metin yazma gibi konuları kapsamaktadır. Eğitmen, her konuyu kod örnekleriyle destekleyerek detaylı bir şekilde anlatmaktadır.
- Eğitimde OpenCV ve NumPy kütüphanelerinin kullanımı, getPerspectiveTransform fonksiyonu, mouse tıklama olayları, çizgi, dikdörtgen ve daire çizme fonksiyonları, metin yazma işlemleri ve matris manipülasyonları gibi teknik detaylar ele alınmaktadır. Ayrıca, OpenCV'de koordinat sisteminin normal matematiksel koordinat sisteminden nasıl farklı olduğu da açıklanmaktadır.
- OpenCV ile Kuşbakışı Görüntü Alma
- OpenCV ile bir resimdeki herhangi bir bölgeye kuşbakışı bakma yöntemi öğreneceğiz.
- Resimde bir yüzey gördüğümüzde, bu yüzeyin köşe noktalarını işaretleyerek kuşbakışı bakış açısı elde edebiliriz.
- Bu dersde "secret.jpg" adlı bir resim üzerinde işlem yapacağız.
- 00:31Resim Okuma ve Nokta Belirleme
- İlk olarak "import cv2" ve "import numpy as np" kütüphanelerini içe aktarırız.
- Resmi okumak için "cv2.imread('secret.jpg')" fonksiyonunu kullanırız.
- Paint programı kullanarak resmin üzerindeki önemli noktaları belirleyeceğiz.
- 03:56Noktaları Diziye Kaydetme
- Belirlenen noktaları bir değişkende tutmak için "pts1" adında bir dizi oluşturuyoruz.
- Numpy kütüphanesinden "np.float32" fonksiyonunu kullanarak noktaları kaydediyoruz.
- Noktaları matrix şeklinde düzenliyoruz: [[907,716], [967,653], [1078,753], [1129,687]].
- 06:21Noktaları Resimde Gösterme
- Noktaları resimde göstermek için "cv2.circle" fonksiyonunu kullanıyoruz.
- Döngü (loop) ile tüm noktaları resimde göstermek için "for i in range(4)" kullanıyoruz.
- Her noktaya küçük bir daire çizerek işaretlemeyi yapıyoruz.
- 10:13İkinci Nokta Dizisi Oluşturma
- İkinci bir nokta dizisi oluşturuyoruz: "pts2".
- Bu noktaları belirlerken, genişlik (width) ve yükseklik (height) değerlerini tahmin ediyoruz.
- Örnek olarak 4x5 santimetrelik bir kart için piksel değerleri: genişlik=112, yükseklik=140.
- 13:42Perspektif Dönüşümü Uygulama
- "cv2.getPerspectiveTransform(pts1, pts2)" fonksiyonu ile perspektif dönüşüm matrisini oluşturuyoruz.
- "cv2.warpPerspective" fonksiyonu ile resmi kuşbakışı görünümüne dönüştürüyoruz.
- Sonuç olarak kağıtta yazılan metni okuyabiliyoruz.
- 17:20Uygulama Alanları
- Bir sonraki derste noktaları mouse ile seçme yöntemi öğreneceğiz.
- Bu teknik drone görüntüleri veya uydulardan alınan görüntülerde kullanılabiliyor.
- Bazı projelerde işe yarayabilecek bir fonksiyon olarak değerlendiriliyor.
- 18:11Mouse ile Resimde Nokta Seçimi
- Bu derste, mouse ile resimdeki noktaları seçme yöntemi öğreneceğiz.
- Öncelikle IDLE açılıp "import cv2" ve "import numpy as np" komutları ile gerekli kütüphaneler import edilir.
- Resim okunup göstermek için "cv2.imread" ve "cv2.imshow" fonksiyonları kullanılır.
- 19:40Mouse Tıklama Olayını Algılama
- Mouse tıklama olayını algılamak için "mousepoint" adında bir fonksiyon tanımlanır.
- Fonksiyonun parametreleri olay ve koordinatlar olup, sol tık olayını "cv2.EVENT_LBUTTONDOWN" ile kontrol eder.
- Tıklanan noktanın koordinatları ekrana yazdırılır.
- 22:30Pencere Boyutunu Ayarlama
- Büyük resimleri görüntülemek için pencere boyutunu ayarlamak için "cv2.namedWindow" fonksiyonu kullanılır.
- "cv2.setMouseCallback" fonksiyonu ile mouse tıklama olayını belirli bir pencerede algılamak sağlanır.
- Pencere boyutu değiştirilse bile, tıklanan noktanın orijinal koordinatları korunur.
- 26:03Çoklu Nokta Seçimi
- Çoklu nokta seçimi için "circles" adında bir fonksiyon tanımlanır ve koordinatlar "np.int" olarak depolanır.
- Mouse tıklamalarını saymak için "counter" değişkeni kullanılır ve her tıklamada artırılır.
- Seçilen noktalar bir dizi içinde saklanır ve döngü ile dört nokta seçilene kadar devam eder.
- 29:04Noktaları Kullanarak Ölçüm Yapma
- Seçilen noktalar kullanılarak ölçüm yapılabilir.
- Örneğin, bir pikselin bir santime denk geldiği bilgisiyle, seçilen noktalar arası mesafe hesaplanabilir.
- Noktaları doğru seçmek önemlidir, aksi takdirde yanlış sonuçlar elde edilir.
- 32:59OpenCV ile Görüntü İşleme
- OpenCV ve NumPy kütüphaneleri içe aktarılarak çerçeve genişliği 640 ve yüksekliği 480 olarak ayarlanmıştır.
- VideoCapture sınıfı kullanılarak videodan görüntü alınması sağlanmıştır.
- OpenCV ile görüntü gösterme ve bekleme işlemleri gerçekleştirilmiş, ayrıca çizgilerin kalınlığı ayarlanarak görüntü detayları azaltılmıştır.
- 47:07OpenCV'de Kesme ve Yeniden Boyutlandırma
- OpenCV'de koordinat sisteminde y ekseni aşağı doğru artarken, normal matematiksel koordinatlarda yukarı doğru artmaktadır.
- cv2.imread fonksiyonu kullanılarak "istanbul boğazı.jpg" resmi yüklenmiştir.
- cv2.resize fonksiyonu kullanılarak resmin boyutu 400x400 piksel olarak yeniden boyutlandırılmıştır.
- 52:49Resim Kırpma ve Boyutlandırma
- Resimler matrisler üzerinden oluştuğu için, kırpma işlemi için matris indeksleme kullanılmıştır.
- Resimden sadece üç köprü bölgesi alınarak kırpma işlemi gerçekleştirilmiştir.
- Kırpılan resmin orijinal boyutlarına dönüştürülmesi için cv2.resize fonksiyonu kullanılmış ve resmin boyut bilgileri otomatik olarak alınmıştır.
- 58:28Fotoğraf Boyutlandırma ve Kesme
- Fotoğrafı döndürerek sadece üç köprüyü kesme işlemi yapıldı.
- Kesilen fotoğraf orijinal boyutuna getirildi, bunun için shape ve resize fonksiyonları kullanıldı.
- Ders kapsamında fotoğrafın yeniden boyutlandırılması, matrisleri kullanarak kesilmesi ve kesilen fotoğrafın orijinaline getirilmesi öğrendi.
- 59:52Birden Fazla Resmi Tek Pencerede Gösterme
- OpenCV'de çoklu resmi tek bir pencerede nasıl gösterileceği anlatılacak.
- Matrislerle işlem yapmak için import cv2 ve import numpy kütüphaneleri eklendi.
- OpenCV'de dikey ve yatay birleştirme için vstack ve hstack fonksiyonları kullanılır.
- 1:02:12Resim Birleştirme Sorunları ve Çözümleri
- Resimlerin aynı boyutta ve aynı renk kanalında olması gerekir, aksi takdirde hata verir.
- Tek kanallı resimleri üç kanallıya çevirmek için gray2bgr kütüphanesi kullanılır.
- Çoklu resmi tek pencerede göstermek için uzun kod yerine stick_image fonksiyonu kullanılır.
- 1:04:05stick_image Fonksiyonu Kullanımı
- stick_image fonksiyonunun ilk değeri scale oranı, ikinci değeri resim dizisi, üçüncü değeri kaç satır olacağını belirtir.
- Fonksiyonun çalışma mantığı gösterildi ve tek sayılı resimler için siyah resim eklendiği anlatıldı.
- Kamera görüntülerini göstermek için while döngüsü kullanıldı.
- 1:10:42Şekil Çizimi ve Yazı Yazma
- OpenCV'de şekil çizimi ve görüntü üzerine yazı yazma konusu ele alındı.
- Numpy kütüphanesi ile 512x512 boyutunda kara bir resim oluşturuldu.
- cv2.imshow fonksiyonu ile resim gösterildi.
- 1:12:51Boş Resim Oluşturma
- Boş bir resim oluşturmak için "image" değişkenine değer atanıyor ve nokta koyarak float tipi oluşturuluyor.
- Resmin matrix'lerle çalışıldığı için "np.uint8" ile integer (tam sayı) tipi belirleniyor.
- Resmin üç kanallı olması için "3" değeri atanıyor ve renk değerleri belirlenerek mavi, yeşil ve kırmızı bölgeler ayarlanıyor.
- 1:16:17Çizgi Çizme
- Çizgi çizmek için "cv2.line" fonksiyonu kullanılıyor ve ilk parametre olarak başlangıç noktası, ikinci parametre olarak bitiş noktası belirtiliyor.
- Çizginin rengi ve kalınlığı belirleniyor, örnekte 3 kalınlığında bir çizgi çiziliyor.
- Resmin boyutunu öğrenmek için "image.shape" kullanılıyor.
- 1:17:55Dikdörtgen Çizme
- Dikdörtgen çizmek için "cv2.rectangle" fonksiyonu kullanılıyor ve başlangıç ve bitiş noktaları belirtiliyor.
- Dikdörtgenin rengi ve kalınlığı ayarlanıyor, kalınlığı "cv2.FILLED" olarak belirleyerek içi doldurulabiliyor.
- 1:19:57Daire Çizme ve Yazı Yazma
- Daire çizmek için "cv2.circle" fonksiyonu kullanılıyor, merkez noktası ve yarıçap belirtiliyor.
- Yazı yazmak için "cv2.putText" fonksiyonu kullanılıyor, yazı konumu, font, ölçek, renk ve kalınlık ayarlanıyor.
- Dersin sonunda çizgi, dikdörtgen, daire çizme, yazı yazma ve boş resim oluşturma konuları özetleniyor.