Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Python ve OpenCV kütüphanesi kullanılarak görüntü işleme konularını anlatan kapsamlı bir eğitim dersidir.
- Video, görüntü işleme konusunda üçüncü hafta dersinin içeriğini kapsamakta olup, ROI (Region of Interest), resim çerçeveleme, resim üzerinde şekiller çizme, görüntü piramitleri, resim boyutlandırma, video işleme ve kamera kullanımı gibi konuları ele almaktadır. Eğitmen her konuyu teorik bilgilerle başlattıktan sonra OpenCV fonksiyonlarını kullanarak pratik uygulamalar göstermektedir.
- Videoda ayrıca Matplotlib kütüphanesi ile resimleri düzenli bir şekilde sıralama, farklı kenar ekleme yöntemleri (solid, reflect, replicate, constant, isolate), Gauss piramidi oluşturma, video frame'lerinin renk uzaylarını değiştirme (BGR, GRAY, HLS, HSV, XYZ) ve webcam sorunlarına çözüm gibi detaylı teknik bilgiler de sunulmaktadır. Video, izleyicilere çeşitli ödevler vererek pratik deneyim kazandırmayı amaçlamaktadır.
- 00:01Python OpenCV ile Görüntü İşleme Dersi
- Bu hafta görüntü işleme konusunda ROI (Region of Interest), resim çerçeveleme, resim üzerinde şekiller çizme ve görüntü piramitleri konuları ele alınacak.
- Daha sonra video işlemlerine geçilecek ve video nedir, nelerden oluşur gibi konulara değinilecek.
- ROI, resim veya videoda belli bir amaçla kullanılmak üzere seçilmiş bölge veya bölgeler bütünü olarak algılanır ve görüntü işleme alanında medikal görüntüleme, araç tespiti, yüz tespiti ve nesne tespiti gibi alanlarda kullanılır.
- 03:15Resim Çerçevelendirme
- Resim çerçeveleme, resmin etrafına belli sınırlar oluşturma olayıdır ve sadece kenarlarına çizgi şeklinde uygulanabilir.
- OpenCV'de "copyMakeBorder" fonksiyonu kullanılarak çerçeveleme yapılabilir ve bu fonksiyon input, borderType ve value gibi parametreleri alır.
- BorderType, çerçeveleme türlerini belirleyen bir fonksiyondur ve farklı çerçeveleme türleri kullanılabilir.
- 05:32Resim Üzerinde Şekiller Çizme ve Görüntü Piramitleri
- OpenCV fonksiyonları sayesinde resim üzerinde düz çizgi, dikdörtgen, yuvarlak ve elips gibi şekiller çizilebilir.
- Görüntü piramitleri, bir resmin birçok boyutunun bir arada bulunmasına denir ve resmi belirli oranlarda büyütüp küçültmeyi sağlar.
- Gaussian piramit ve Laplacian piramit olmak üzere iki tür görüntü piramitleri vardır ve Gaussian piramit genellikle kullanılır.
- 08:10Gaussian Piramit İşlemi
- Gaussian piramit işlemi, resmi belirli oranlarda küçültmek için matris işlemleri kullanır.
- 5x5 boyutunda bir matris kullanılarak piksellerle çarpma işlemi yapılır ve sonuçlar 256'a bölünerek yeni bir RGB değeri elde edilir.
- Bu işlem sonucunda, orijinal resmin 4'ün 1'ine eşit kalınlığında yeni bir resim oluşturulur.
- 11:00OpenCV ile Resim İşleme
- Eğitmen, bir önceki derste Spider yüklediğini ve bu derste virtual environment'ına girerek evren ve Spider'e eriştiğini belirtiyor.
- Eğitimde "wicty" adlı bir Python dosyası ve "images" adlı bir klasör kullanılıyor.
- İlk olarak OpenCV kütüphanesini içe aktarıp, "logo.png" adlı bir resmi gösterme işlemi yapılıyor.
- 15:38Resim Boyutları ve Pixel Sayısı
- Resmin pixel boyutlarını öğrenmek için "picture" değişkenine "cv2.imread" fonksiyonu ile "istanbul.jpg" resmi yüklendi.
- "picture.size" fonksiyonu ile resmin toplam pixel sayısı (1.181.250) öğrenildi.
- "picture.shape" fonksiyonu ile resmin boyutları (525x750) ve renk kanalları (3) bilgisi elde edildi.
- 17:46ROI (Region of Interest) İşlemleri
- Resmin bir kopyası "mycopy" değişkenine "picture.copy()" fonksiyonu ile atandı.
- Köprü ROI'si için piksel işlemleri yapıldı: "roi = mycopy[175:350, 0:900]" şeklinde köprü bölgesi belirlendi.
- ROI bölgesi orijinal resme yapıştırılarak, resimde iki köprü görüntüsü elde edildi.
- 23:05Resimlerde Çerçeveleme İşlemleri
- OpenSea dokümantasyonundan yardım alınarak resimlerde çerçeveleme işlemlerinin nasıl yapılacağı gösterilecek.
- Color adlı bir resim ve logo iki adlı bir resim kullanılarak çerçeveleme işlemlerine örnek verilecek.
- Resimlerin orijinali gösterildikten sonra üzerine çerçeveleme yapılacağı belirtiliyor.
- 24:12Çerçeveleme Fonksiyonlarının Tanıtımı
- Green ve red değişkenleri RGB'den BGR'ye çevrilerek belirleniyor.
- Border fonksiyonu kullanılarak resimlere çerçeveleme yapılıyor, bu fonksiyonun parametreleri piksel kalınlığı gibi özellikler içeriyor.
- OpenCV'de farklı border türleri (border constant, border reflect, border replicate, border isolate) bulunuyor ve bunların hepsinin sonuçları incelenecek.
- 26:49Çerçeveleme Türlerinin Açıklaması
- Çerçeveleme türleri resim üzerinde çerçeve yapmak için kullanılıyor.
- Solid çerçeveleme tek bir renk üzerine düz çerçeveler yaparken, diğer türler yansıtma ve döndürme gibi farklı işlemler yapabiliyor.
- Çerçeveleme türleri farklı renklerle belirlenerek görsel olarak ayrım sağlanabiliyor.
- 27:49Veri Yapıları ve Döngülerle Çerçeveleme
- Birden fazla çerçeveleme işlemini daha düzenli ve efektif göstermek için veri yapıları kullanılıyor.
- Dikiş (dictionary) veri yapısı kullanılarak her çerçeveleme türü için özel ad ve fonksiyon bilgisi toplanıyor.
- Matplotlib kütüphanesi kullanılarak görsellerin gösterilmesi planlanıyor ve for döngüsü ile dikiş veri yapısının elemanları dolaşılarak her çerçeveleme türü ayrı ayrı gösterilecek.
- 32:01Matplotlib Kütüphanesi ile Resim Gösterimi
- Matplotlib kütüphanesi kullanılarak resimler sıralı bir şekilde gösterilebilir.
- plt.imshow komutu ile resimler gösterilebilir ve plt.title ile başlık belirlenebilir.
- plt.axis('off') komutu ile eksenler kapatılabilir ve plt.show() ile resimler ekranda görüntülenebilir.
- 33:50OpenCV ile Kenar Çerçevelerinin Etkileri
- OpenCV kütüphanesinde farklı kenar çerçeveler (border) türleri bulunmaktadır.
- "replicate" yöntemi en uçtaki pikselleri uzatır, "reflect" yöntemi resmi yansıtır.
- "constant" yöntemi ile düz bir çerçeve oluşturulabilir, "isolated" yöntemi ile farklı renkli çerçeveler elde edilebilir.
- 36:00Matplotlib Kütüphanesi Hakkında Bilgiler
- Matplotlib kütüphanesi data görselleştirmek için kullanılır ve popüler kütüphanelerden biridir.
- Matplotlib kütüphanesi olmadan bu kadar düzenli bir resim dizilimi yapılamazdı.
- Matplotlib kütüphanesi, for döngüsü ile tek bir plt.show() komutuyla birden fazla resmi göstermeyi sağlar ve kod okunabilirliğini artırır.
- 38:23Resim Boyutlandırma
- Resim boyutlandırmak için yeni çözünürlük değerleri belirlenir.
- Yeni genişlik ve yükseklik değerleri, mevcut resim boyutlarıyla oranlanarak hesaplanır.
- OpenCV kütüphanesinde cv2.namedWindow komutu ile isimli pencereler oluşturulabilir.
- 43:59Pencere Boyutlandırma ve Görüntü Piramitleri
- Pencere boyutlandırma işlemi için yeni genişlik ve yükseklik parametreleri kullanılır.
- Görüntü piramitleri, resimleri farklı boyutlarda göstererek kaliteyi artırır ve detayları belirginleştirir.
- Gauss piramidi kullanılarak resimler farklı boyutlarda gösterilebilir, bu da daha belirgin kareler ve detaylar elde etmeye yardımcı olur.
- 49:47Ödev Tanımı
- Öğrencilere bir ödev verilmiştir: kullanıcı tarafından seçilen ROI (Region of Interest) alanını alıp yeni pencerede göstermek.
- OpenCV kütüphanesindeki bir fonksiyon kullanılması önerilmiştir.
- ROI'yi farklı renk formatlarına (HSV, HLS, XYZ) dönüştürmek ve bordo eklemek gibi işlemler yapılarak kaydedilmesi istenmiştir.
- 53:26Kare Çizme İşlemi
- OpenCV'de rectangle fonksiyonu kullanılarak dikdörtgen çizilebilir.
- Rectangle fonksiyonu için input, start point, end point, border color ve fitness (kalınlık) parametreleri belirlenmelidir.
- Dikdörtgenin sol üst köşesi start point olarak, sağ alt köşesi end point olarak belirlenir.
- 56:32OpenCV ile Şekil Çizimi
- OpenCV ile dikdörtgen çizimi yapılarak fonksiyon oluşturuldu.
- Circle (daire) çizmek için cv2.circle fonksiyonu kullanılarak merkez noktası (960,450), yarıçapı 400 piksel ve renk bilgileri belirlendi.
- Text yazısı eklmek için cv2.putText fonksiyonu kullanılarak "Welcome to the image processing world!!" yazısı (600,-750) noktasına yerleştirildi.
- 1:02:20Video İşleme
- OpenCV ile video işleme için cv2.VideoCapture fonksiyonu kullanılarak "video.mp4" dosyası açıldı.
- Video okuma işlemi için while döngüsü kullanıldı ve video.read() fonksiyonu ile video frame'leri tek tek okundu.
- Video penceresinde "q" tuşuna basıldığında video durdurulacak şekilde cv2.waitKey(1) fonksiyonu kullanıldı.
- 1:07:06Video Boyutlandırma
- Video boyutunu değiştirmek için cv2.resize fonksiyonu kullanıldı.
- Video boyutu 1280x720 piksel olarak ayarlandı.
- Video normal boyutta çalışırken, "q" tuşuna basıldığında duruyor ve video bittiğinde "Video is over" mesajı ekrana yazdırılıyor.
- 1:09:20Kamera Görüntüsü Alma
- Video çalışmasını öğrendikten sonra anlık görüntü almayı deneyeceğiz.
- Kamera görüntüsü almak için "switch video capture" fonksiyonu kullanılır ve video default olarak 30 fps olarak görüntülenir.
- Ekran paylaşım nedeniyle FPS sorunları yaşanabilir, ancak internet bağlantısı iyi olduğunda yüksek FPS de sorunsuz çalışır.
- 1:10:15Kamera Seçimi ve İşlemler
- Kamera seçimi için sayı verilir; dahili kamera için 0, USB kamera için 1, 2, 3 gibi değerler kullanılır.
- Kamera görüntüsü almak için "while true" döngüsü kullanılır ve "cv2.VideoCapture" ile kamera okuma yapılır.
- "cv2.imshow" ile görüntü gösterilir ve "cv2.waitKey" ile bir milisaniye bekleme yapılır.
- 1:12:26Kamera Kapanma Sorunu ve Çözümü
- Bazı bilgisayarlarda kod durdurulduğunda webcam ışığı hala yanabilir.
- Bu sorunu çözmek için "os" kütüphanesi kullanılır ve "os.environ" ile ortam değişkenleri ayarlanır.
- Kod çalıştırıldığında kamera görüntüsü açılır ve "cv2.waitKey" ile bir milisaniye bekleme yapılır.
- 1:14:44Video İşleme
- Yeni bir bölümde video işleme yapılacaktır.
- "cv2.VideoCapture" ile video açılır ve "while true" döngüsü içinde kareler okunur.
- Video bittiğinde "break" ile döngüden çıkılır ve kareler 640x480 boyutuna yeniden boyutlandırılır.
- 1:16:43Video İşleme ve Renk Uzayları
- Eğitmen, bir videoyu frame'lerine ayırarak grafiti dönüştürme işlemi yapmayı planlıyor.
- cv2.cvtColor fonksiyonu kullanılarak frame'lerin renk uzayları değiştiriliyor: BGR, GRAY, HLS, HSV, XYZ ve RGB.
- For döngüsü kullanarak kodun okunabilirliği artırmak ve tekrarlanan işlemleri tek seferde yapmak öneriliyor.
- 1:19:40Video Döngüsü Oluşturma
- Videoyu bitirmeden başa döndürmek için frame counter değişkeni kullanılıyor.
- cv2.VideoCapture.get(cv2.CAP_PROP_FRAME_COUNT) fonksiyonu ile video toplam frame sayısı alınabiliyor.
- Frame counter belirli bir değere ulaştığında, video başa döndürülüyor ve işlem tekrar başlıyor.
- 1:24:17Dersin Sonu ve Kapanış
- Eğitmen, dersin sonuna gelindiğini ve izleyicilerin katıldıkları için teşekkür ediyor.
- Haftaya daha derin konularla birlikte çalışılacağı belirtiliyor.
- İzleyicilere iyi akşamlar ve mutlu dersler dilekleri ile ders sonlandırılıyor.