OpenCV: Kodlarla Computer Vision Temelleri- “Yeni Başlayanlar Kılavuzu“

Bayram EKER
15 min readNov 28, 2022

--

Computer Vision, yapay zekadaki belki de en ilgi çekici ve büyüleyici kavramdır. Bilgisayarla Görme, bilgisayarların veya herhangi bir yazılımın çevredeki görselleştirmelerin üst düzey bir anlayışını nasıl öğrenebileceğiyle ilgilenen disiplinler arası bir alandır. Bu kavramsal perspektifi elde ettikten sonra, görevleri otomatikleştirmek veya istenen eylemi gerçekleştirmek harika bir şey olsa gerek.

İnsan beyninin aşina olduğu görevler, etkili sonuçlar elde etmek için bu işler üzerinde özel olarak eğitilmeleri gerektiğinden bilgisayarlar için o kadar sezgisel değildir. Bu süreç, verilerin gerçek dünyadan alınması, elde edilen verilerin uygun bir formatta işlenmesi, işlenen görüntülerin analiz edilmesi ve son olarak karmaşık görevi çok yüksek doğrulukla gerçekleştirmesi için modelin öğretilmesi ve eğitilmesi gibi karmaşık adımları içerir.

Bilgisayar vizyonunu daha sezgisel olduğunu anlamak için bir örnek ele alalım. Bir bilgisayara çeşitli renkleri ayırt etmeyi öğretmeniz gerektiğini varsayalım. Kırmızı, mavi ve yeşil olmak üzere aşağıdaki renklere sahip üç nesneniz olduğunu ve bu renkleri buna göre farklılaştırmak istediğinizi düşünün. İnsan beyninin gerçekleştirmesi için son derece basit bir görevdir, ancak bilgisayarın gerçekleştirmesi oldukça karmaşık bir görevdir.

Yukarıda bahsedilen görev, “Computer Vision” kullanılarak gerçekleştirilebilecek en temel eylemlerden biridir. Dijital dünyadaki görüntülerin nasıl çalıştığını öğrenmeliyiz ve aynı zamanda görüntüyü ve bu yığılmış katmanların tam olarak nasıl çalıştığını anlamaya çalışacağız. . OpenCV modülünün temellerini de derinlemesine öğreneceğiz. Son olarak, bu kütüphane ile bazı uygulamalı temel düzey projeleri de uygulayacağız. Bu yüzden, daha fazla uzatmadan, temel bilgisayarla görme becerilerinde ustalaşmak için gereken tüm kaynakları anlamaya başlayalım.

Görselleri İnceleyelim:

Bu üç rengin; yani kırmızı, yeşil ve mavi bileşimi, hemen hemen tüm diğer renkleri oluşturmak için kullanılabilir. Bunları doğru oranda karıştırmak istediğimiz rengi elde etmemizi sağlar. Bu kavram, yıllar önce katot ışınlı televizyonlardan beri var olmuştur. Peki bu tam olarak nasıl çalışıyor?

Bu renklerin her biri 8 bitlik bir tam sayı değerine sahiptir. Bu, bunların bir matrisinin 0 ile 255 arasında değişebileceği anlamına gelir. Bunun nedeni 2 üzeri 8’in 256 olması ve 0–255 değer aralığında 256 değer vardır. Bu renklerin her biri bu aralıkta bir değere sahip olacak ve 3 Boyutlu bir resme sahip olduğumuz için, bunların her birini birbiri üzerine yığabiliriz. Bu biraz daha karmaşık bir örnek olabilir, bu yüzden sadece siyah beyazdan oluşan ve anlaşılması daha kolay olan gri tonlamalı görüntülere geçelim.

Yukarıda gösterilen bu gri tonlamalı gösterim, görüntülerin bilgisayarla görmede nasıl çalıştığını kavramak ve daha iyi anlamak için iyi bir başlangıç ​​noktasıdır. Aşağıdaki şekilde siyahtan beyaza geçtiği noktada renk değerinin 0’dan 255’e geçtiğini rahatça görebiliriz.. 255 değerinden sonra, tamamen siyah bir gölgeden tamamen beyaz bir gölgeye geçiyoruz.

Bu sadece bir renk. 0'daki gri tonlamalı görüntü siyah değerine ve 255'teki gri tonlamalı görüntü beyaz değerine sahiptir. Yalnızca kanal sayısı = 1 olan gri tonlamalı görüntü desenini kullanarak, aşağıda gösterilen görüntü gibi karmaşık görüntüler elde edebiliyoruz.

Şimdi kırmızı, yeşil ve mavi olmak üzere üç renge sahip olduğunuzu ve bunları üst üste yığdığınızda, istediğiniz RGB renklerinin mükemmel resmi elde edebileceğinizi hayal edin. Üç kanalla elde edebildiğimiz görüntüye bakalım ve renklerin desenlerindeki önemli artışı görelim.

Yukarıdaki görüntü, üç rengin ayrı ayrı bir araya getirildiği halidir. Yukarıdaki resmin bir kırmızı, bir yeşil ve bir mavi görüntüsüne sahip olduğunu ve bunların hepsinin 3 Boyutlu bir matrise yerleştirildiğini ve bu da bize yukarıdaki gerekli görüntüyü istenen şekilde verdiğini unutmayın. Umarım bu açıklama size bilgisayarla görmedeki görüntülerle nasıl çalışacağınız hakkında basit bir fikir verir. Görüntülerin nasıl çalıştığına dair bu basit anlayışla karşılaşacağımız sonraki birkaç modeli anlayabilirsiniz. Şimdi, bazı bilgisayarla görme görevlerini gerçekleştirmek için python’da bulunan OpenCV modülüne dalalım.

OpenCV ve Computer Vision

Artık görüntülerin nasıl çalıştığına dair kısa bir anlayışa sahip olduğumuza göre, openCV kitaplığı ve bu modülün bilgisayarla görme görevlerini gerçekleştirmek için nasıl kullanılacağı hakkında daha fazla bilgi edinmeye devam edebiliriz. OpenCV modülü, karmaşık makine öğrenimi, derin öğrenme ve bilgisayarla görme görevlerinin yürütülmesi için açık ara en iyi modüldür. İnşa edilmekte olan modellerin analizi ve performansı için basitlik ve yüksek standartlar sunar. Açık kaynaklı bir kitaplıktır ve karmaşık gerçek zamanlı uygulamaları gerçekleştirmek için NumPy gibi diğer python modülleriyle entegre edilebilir. Çok çeşitli programlama dilleri için desteklenir ve Windows, Linux ve MacOS gibi çoğu platformda dikkat çekici şekilde çalışır.

Opencv modülünün kurulum süreci oldukça basittir. Python için openCV’yi kurmanın yanı sıra modülü bir anaconda sanal ortamında oluşturmanın her ikisinden de bahsetmiştim. Size en uygun yöntemi seçmekten çekinmeyin.

Kurulum:

OpenCV’nin basit kurulum işlemi, komut isteminde aşağıdaki komut kullanılarak yapılabilir.

pip install opencv-python 

Anaconda ortamını kullanıyorsanız, sanal ortamınızda kitaplık açma modülünü oluşturmak için aşağıdaki yükleme işlemini de kullanmayı seçersiniz. Anaconda komut terminaline aşağıdaki komutu yazın.

conda install --channel "conda-forge" package

Kurulum prosedürünü tamamladıktan sonra, çalışmaya odaklanabiliriz. Bugün, bilgisayarla görmenin temel olarak üç temel yönüne bakacağız:

  1. Bir resmi okumak, yazmak ve görüntülemek.
  2. OpenCV ile çizim
  3. Web Kamerasına Erişim

Öyleyse, daha fazla uzatmadan, bu üç temel kavramla başlayalım.

1. Resmi Okuma, Yazma ve Görüntüleme:

Bu üç görevi arka arkaya yapacağız. Görüntülerin okunması, gösterilmesi ve yazılması bilgisayar görüşünün önemli bir parçasıdır. Opencv ile ilgili daha önce bahsedilen avantajların yanı sıra en iyi yanı, size çeşitli görüntü formatlarına da erişim hakkı vermesidir. Böylece, herhangi bir sorunla karşılaşmadan tüm bu görüntü formatları üzerinde çalışabiliriz. Bu bölümün geri kalanı için lena.png resim formatını kullanacağım.

Aynı görseli indirebilir ve takip edebilirsiniz. Resmi indirin ve python dosyanızla aynı klasöre veya dizine yerleştirin. Bu, ilgili görüntülerin uzantısal olarak sürekli eklemeye gerek kalmadan doğrudan görüntüye erişmemize yardımcı olacaktır. Görüntüleri python dosyanızla aynı konuma yerleştirdikten sonra, onlara erişmeye ve opencv modülü tarafından sağlanan çeşitli işlevler üzerinde çalışmaya başlayabiliriz. Görüntüleri buna göre içe aktararak ve okuyarak başlayalım.

  • Görüntünün Okunması ve Görüntülenmesi:

Herhangi bir bilgisayarla görme görevindeki en önemli şey, açıkça bir görüntünün nasıl okunacağını ve uygun şekilde nasıl görüntüleneceğini bilmektir.

Buradaki ilk adım, cv2 modülünü içe aktarmaktır. Kurulumunuzun başarılı olup olmadığını bu şekilde kontrol edebilirsiniz. Cv2 modülünü içe aktardıktan sonra, görüntüyü ilgili kod satırlarıyla çalıştırın. Cv2.imread, seçtiğiniz resmi okumak için open () öğesini kullanabilirsiniz. Resmi okuduktan sonra, aşağıdaki resmi görüntülemek için bir yola(path) ihtiyacınız var. Bu görevi gerçekleştirmenin başlıca iki yolu vardır.

İlk yöntem, kod bloğunda gösterildiği gibi cv2.imshow () komutunu kullanmaktır. Cv2.imshow () komutunu yaptıktan sonra açılan cv2 penceresinin sürekliliğini sağlamak için waitKey () komutunun verilmesi önemlidir. WaitKey () içindeki sayı, görüntünün görüntüleneceği zamanın bir temsilidir. Kullanılan zaman periyodu milisaniye cinsindendir. Yukarıda gösterilen görüntünün analizi ile ilgilenmenin ikinci yöntemi, matplotlib kütüphane modülünü kullanmaktır. Matplotlib kütüphane modülündeki pyplot işlevini kullanarak, cv2.imshow () kullandığımızda görünen cv2 grafik penceresini sürekli göstermek zorunda kalmadan resmi jupyter not defterinde doğrudan görüntülemek için plt.imshow () işlevini kullanabiliriz. Bununla birlikte, onu bir RGB görüntüsüne dönüştürdüğünüzden emin olmalısınız çünkü cv2, bazı nedenlerle BGR formatını kullanır.

İmage.shape özelliğini kullanarak çalıştığımız görüntünün temel özelliklerini inceleyelim. Bunu kullanarak, resmin görüntülendiği tüm boyutları ve kanal sayısını bulabiliriz. Aşağıdakiler, dizininizde depolanan lena.png resmimizin özellikleridir -

Image Height = 512Image width = 512Channel Number = 3

Görüntünün yüksekliği ve genişliği 512 piksel boyutunda. Yukarıdaki görüntünün kanal sayısı açık bir şekilde 3'tür çünkü esas olarak üç renkle çalışıyoruz, yani kırmızı, mavi ve yeşil.

  • Görselin yazılması — kaydedilmesi(write):

Bu bölümde görselleri nasıl yazdıracağımız yani bilgisayarımıza nasıl kaydedebileceğimize bakacağız. Bununla birlikte, kendi resimlerinizi çizebilir, bunları dosya formatında yazabilir ve uygun şekilde kaydedebilirsiniz. Aşağıdaki kod satırı, görüntüyü masaüstünüze nasıl yazıp kaydedebileceğinizin doğru bir temsilidir.

resim_yolu = r'C:\Users\Bayram\Desktop\lena.png'
resimDegisken = cv2.imread(resim_yolu)

dosyaAdi = 'lena1.jpg'
cv2.imwrite(dosyaAdi, resimDegisken)

Yukarıdaki iki resim ilgili klasörden alınmıştır. Biri orijinal Lena görüntüsü, diğeri de kaydettiğimiz lena1 görüntüsü. Kaydetmek istediğiniz görüntünün yolunu belirtebilirsiniz. Şimdi, görüntüyü okuma, görüntüyü gösterme ve görüntüyü yazma ve kaydetme gibi temel işlemlerin nasıl yapılacağına dair bir fikrimiz olduğuna göre, bu görüntüleri nasıl işleyeceğimizi öğreneceğimiz bir sonraki konuya geçebiliriz.

  • Görüntünün yeniden boyutlandırılması:

Artık bilgisayarla görme ile ilgili temel işlemleri kısaca anladığımıza göre, bir görüntüyü işleyebileceğimiz yolları anlamaya devam edelim. Bu, etkili bir şekilde gerçekleştirilmesi gereken belirli görevler için son derece yararlı ve önemlidir. Yeniden boyutlandırma işlevi, görüntüyü farklı bir boyuta yeniden ölçeklendirmemize yardımcı olur. Daha büyük veya daha küçük yapmayı seçebiliriz ve bu tamamen kullanıcıya bağlıdır ve ayrıca gerçekleştirilen göreve büyük ölçüde bağlıdır. Aşağıda, görüntünün yeniden boyutlandırılmasını temsil eden kod bloğu bulunmaktadır. Orijinal görüntünün yarısı kadar büyük yeni bir görüntü elde etmek için orijinal görüntünün boyutlarını yarıya indirdim.

Yukarıdaki görüntüler, sahip olduğumuz görüntüyü nasıl başarılı bir şekilde işleyebileceğimizi ve onları daha büyük veya daha küçük bir boyuta yeniden ölçeklendirebileceğimizin bir temsilidir. Bu, bir görevi daha etkili bir şekilde gerçekleştirmek için belirli bir boyutun görüntüsüne ihtiyaç duyduğunuz çeşitli uygulamalarda kullanışlıdır. Bunun bir örneği, oluşturduğumuz aktarım öğrenme derin sinir ağları modeli olabilir.

  • Gri tonlamalı resme dönüştürme:

Görüntülerin işlevselliğini işlemek için manevra yapmanın bir sonraki yolu, onları gri tonlamalı bir görüntüye dönüştürmektir. Bu, eğitilmekte olan model üzerindeki yükü azaltmak faydalı olduğu için bazen son derece önemli bir adımdır. Gri tonlamalı görüntüler üzerinde çalışmak, RGB görüntülerle çalışmaktan nispeten daha az karmaşıktır. RGB görüntülerin işlenmesi ve hesaplanması için etkili kaynaklara sahip olmayan modeller için hesaplama gücü artırılabilir. RGB görüntü kuralını gri tonlamalı görüntü kuralına dönüştürme adımı, aşağıdaki kod bloğunda belirtildiği gibidir. Özgeçmiş modülü, bu renkli görüntülerin etkili bir şekilde gri tonlamalı görüntülere hesaplanması için yerleşik bir sisteme sahiptir.

OpenCV, standart RGB kuralı yerine bir BGR kullanır, bu nedenle RGB görüntüsünü gri tonlamalı bir görüntüye dönüştürürken kullanılan bu özel kavram hakkında çok fazla kafanızı karıştırmayın. Buna daha önceki bölümde de değinilmiştir. Matplotlib kitaplığını opencv okuma görüntüsüne uygulamaya çalıştığınızda, onu RGB yerine BGR görüntü biçimlendirmesi olarak okuma şansınız vardır. Bu sorun, bilgisayarla görme modülü tarafından sağlanan basit renk dönüştürme işlemi kullanılarak çözülebilir.

  • Görüntüyü bulanıklaştırma:

Bu özel bölümde bakacağımız son görev, görüntülerin bulanıklaştırılmasıdır. Görüntüyü bulanıklaştırmanın ana nedeni, gerçek görüntünün performansını etkileyen dış gürültüyü ortadan kaldırmak ve görüntülerin yumuşatma sürecine yardımcı olmaktır. Bu, görüntüdeki eşitsizliği ve genel gürültü dağılımını gidermek için uygulanan çekirdek tabanlı bir filtreleme tekniğini kullanmaya benzer. Görüntülerin daha iyi işlenmesi ve genel kalitesinin iyileştirilmesi için son derece yararlı olan düşük yoğunluklu kenarlar da kaldırılır. Ayrıca, güvenlik amacıyla veya gizlilik sorunları için verileri gizlemek için de kullanılabilir. Aşağıdaki kod bloğu, opencv modülü kullanılarak bulanıklaştırma işlemini etkinleştirmek için kullanılabilir.

Gauss Bulanıklığı, tipik olarak görüntü parazitini azaltmak ve ayrıntıları azaltmak için grafik yazılımında yaygın olarak kullanılan bir efekttir. Makine öğrenimi veya derin öğrenme modellerine uygulanmadan önce bir ön işleme aşaması olarak da kullanılır. (19,19), mevcut resim üzerinde daha bulanık bir görüntü elde etmek için kullandığım çekirdek boyutudur. Çift boyutlu değil, yalnızca tek sayıda çekirdek kullandığınızdan emin olun. Çekirdek boyutunu (19,19) amacınıza daha uygun bir şekilde değiştirebilir ve düzenleyebilirsiniz.

Bu, görüntülerle ilgilenmenin ilk bölümünü tamamlar. Bir sonraki adım, opencv modülünü kullanarak nasıl çizim yapabileceğimize bakmaktır. Bu kavram, bilgisayar vizyonunda uzmanlaşmak için bir sonraki önemli konudur. Bir sonraki bölüme geçelim ve bazı önemli diyagramların nasıl çizileceğini öğrenelim.

2. OpenCV ile Çizim:

Sıradaki adım, opencv modülü kullanılarak çizim yaptırmak. Bu nedenle, bunların her birine daha hızlı bakacağız ve anlayacağız. Kütüphaneyi kullanarak basit bir çizgi çizerek başlayalım.

  • Çizgi çizmek:

Aşağıdaki kod bloğu, cv2 grafik penceresinde basit bir çizgi çizmek için kullanılan yöntemdir. İlk komut, daha iyi bir görselleştirme için görüntülenen tüm görüntünün siyah renkte olduğundan emin olmaktır. Size daha uygunsa, geleneksel beyaz arka plan yaklaşımını kullanmayı seçebilirsiniz. Ardından aşağıdaki gibi çizilecek bir çizgi tanımlıyoruz:

cv2.line(LineImage, start_point, end_point, color, thickness)
  1. Çizginin çizilmesi gereken resim.
  2. Hem x hem de y koordinatlarına sahip başlangıç ​​noktası.
  3. Hem x hem de y koordinatlarının bulunduğu bitiş noktası.
  4. Bir sonraki özellikte, rengi çizgiye atıyoruz. Buradaki format BGR’dir. Kullandığım yöntemi kullanarak mavi bir çizgi elde edebiliriz.
  5. Son özniteliğin yuvası, çizginin kalınlığını tanımlar.

Yukarıdaki görüntü, tüm grafik pencereyi çapraz olarak kesen bir çizginin temsilidir. Çizgilerinizi görselleştirmek ve görüntülemek için tercih ettiğiniz başlangıç ​​ve bitiş koordinatlarını kullanabilirsiniz.

  • Dikdörtgen çizmek:

Opencv modülünün gerçekleştirmemize izin verdiği bir sonraki işlem dikdörtgenin çizilmesidir. Bu, aşağıdaki kod bloğu kullanılarak etkin bir şekilde yapılabilir. Bunun için çok fazla açıklama yapmayacağım çünkü daha önce bahsedilen çizgi çizimine çok benziyor. Burada ayrıca bir başlangıç ​​ve bitiş noktası tanımlarsınız ve tanımlanan noktalar çizilecek bir dikdörtgen için tatmin ediciyse, işlem başarıyla gerçekleştirilecektir.

cv2.rectangle(image, start_point, end_point, color, thickness)

Yukarıdaki görüntü, grafik pencerenin ortasına çizilmiş bir dikdörtgendir. Görsellerinizi istediğiniz yönde ve boyutta render edebilir, rengini değiştirebilirsiniz.

  • Bir daire çizmek:

Açık kitaplık ayrıca, çizgi ve dikdörtgeninkine benzer şekilde bir daire çizmemize izin verir. Bununla birlikte, daire çizme söz konusu olduğunda önemli bir fark vardır. Merkezi bir konum noktası vermeniz ve x ve y merkezli koordinat noktası vermeniz gerekir. Bu adımdan sonra dairenin yarıçapını belirleyebilirsiniz. Çemberin yarıçapı, çemberin ne kadar büyük olacağını belirleyecek ve tercihlerinize göre rengi ve kalınlığı da ayarlayabilirsiniz. Aşağıdaki kod bloğu, opencv modülü yardımıyla bir çemberin nasıl çizileceğini ve doğru temsilini gösterir.

cv2.circle(image, center_coordinates, radius, color, thickness)

Merkezden çizilmiş sarı renkli daire görüntüsü. Her zamanki gibi, dairenizi ilgili koordinatlarınız, renk ve değişken kalınlık yarıçapıyla oluşturabilirsiniz.

  • Metni eklemek:

Çizimlerin çoğunu bitirdik, ancak bir noktada görüntülenen resimlere bir miktar metin eklemek de gerekli hale geliyor. Neyse ki, opencv bize grafiksel pencerede metinsel görselleştirmeler eklemek için kullanılabilecek putText () komutuna erişim izni veriyor. Aşağıdaki kod bloğu, bu görevi tam olarak nasıl gerçekleştirebileceğinizin kesin temsilidir. Bu kod bloğunda Hershey Simplex yazı tipini kullandım ancak opencv’de bulunan çeşitli yazı tipi seçeneklerini kontrol etmenizi ve tercihinize göre birini seçmenizi şiddetle tavsiye ederim. Doğru boyutlarda, yazı tipinde, kullanılan yazı tipinin ölçeğinde, renginde, kalınlığında ve isteğe bağlı bir çizgi tipinde görüntülenecek resmi ve metni seçin. İzleyicilere ayrıca mevcut çeşitli çizgi tipi seçeneklerine daha derinlemesine bakmalarını öneririm.


text = 'Computer Vision'
cv2.putText(image, text, org, font, fontScale,
color, thickness, cv2.LINE_AA, True)

Görüntüler, merkezde görüntülenen metin bilgisayar görüntüsünü gösterir . Metnim için 3 kalınlığında kırmızı bir renk seçtim. Lütfen tercihlerinize göre çeşitli seçenekleri denemekten ve daha fazlasını keşfetmekten çekinmeyin. Yalnızca keşif ve pratikle bilgisayar vizyonunda ve yapay zekada gerçekten ustalaşabilirsiniz.

  • Çokgen Çizimi:

Bu, bir sonraki konuya geçmeden önce bu bölümde yapacağımız son çizim işlemidir. Açıklık modülündeki çoklu çizgiler işlevi, kesinlikle istediğiniz herhangi bir şeyi çizmek için kullanılabilir. Bu işlevin ana metodolojisi aşağıdaki kod bloğundan not edilebilir. Aşağıdaki resimde bir altıgen oluşturuyorum. Tasarlanmakta olan altıgenin ilgili konumlarını tutan 6 noktadan oluşan bir diziden bahsetmiştim. Dizi başarılı bir şekilde tasarlandıktan ve gerekli tüm noktalara sahip olduktan sonra, onu bir dizi çokgen eğri şeklinde yeniden şekillendiriyoruz. Bunun kapalı bir çokgen görüntü olduğundan emin oluyoruz ve son olarak çokgeni ilgili rengiyle temsil etmek için renk özelliğini tanımlıyoruz.

cv2.polylines(image, [pts], isClosed, color, thickness) 

Yukarıdaki gösterim bir altıgene aittir. Söylemeye gerek yok, bu yöntemi, çoklu çizgiler yöntemini kullanarak diğer çokgen boyutlu görüntüleri çizmek için kullanabilirsiniz. Bu yöntemle üçgenler, kareler ve dikdörtgenler de çizebiliriz. Sadece doğru sayıda koordinat tanımladığınızdan ve hepsinin kendi doğru konumlarında hizalandığından emin olun.

Bilgisayarla görme modülündeki çizimin tüm temellerini başarıyla tamamladık. Son konuya geçmeden önce, pratik yapmanın ve keşfetmenin bilgisayarla görmede başarının anahtarı olduğunu tekrarlamak isterim. Bu temel bilgisayar görüşü bilgisiyle, gerçekten harika bir şey tasarlamak için opencv’deki çizim işlevini deneyebilirsiniz. Bu proje üzerinde çalışmakla ilgileniyorsanız, lütfen bana tasarladığınız şeyin ekran görüntülerini gönderin. Ne tasarladığınızı görmeyi çok isterim.

Gerçek zamanlı ve gerçek hayat senaryolarını hesaplamak için son derece yararlı olacak web kamerasına nasıl erişileceğine dair tüm karmaşık ayrıntıları ele alacağımız bu bölümün altındaki son konuya geçelim. Öyleyse, bu konuyu daha ayrıntılı anlamak için bir sonraki bölüme geçelim.

3. Web Kamerasına Erişim:

Canlı görüntü veya video analizinin yanı sıra gerçek zamanlı olarak web kameranıza erişmek için bu bölümün son kısmına ulaştık. Bu erişim, diğer birçok uygulamanın yanı sıra gerçek zamanlı nesne algılama, yüz tanıma, video gözetimi için kullanışlıdır. Opencv, harici kameralara erişmenize izin verir ve ayrıca hangi kamerayı seçmek istediğinizi seçme seçeneği sunar. Bu aynı seçenek, aynı zamanda, görüntüleri bizim görüntülediğimiz şekle kıyasla benzer bir şekilde görüntülemek için de kullanılabilir. Web kameranıza erişim prosedürü aşağıdaki şekilde yapılabilir:

Yukarıdaki kod bloğundaki her satırı ayrıntılı ve kavramsal bir şekilde anlayalım. cap değişkeni, web kamerasını yakalamak ve erişmek için kullanılır. Web kamerası tarafından yakalanan video varken, bu işlem sırasında görüntülenecek olan harici cv2 grafik penceresinde ilgili video görüntüsünü görüntüye göre okumaya devam edeceğiz. Daha önceki bölümlerde belirtildiği gibi bir waitKey komutu veriyoruz. Video çalışırken bu aralıkta ‘q’ düğmesine basılırsa, program hemen grafik pencereden çıkar ve başka hiçbir işlem gerçekleştirilemez. Cap.release () komutu web kamerasını serbest bırakmak için kullanılır ve tüm pencereleri yok et komutu cv2 tabanlı grafik pencereden çıkmak ve yok etmek için kullanılır.

Klasörünüzden kaydedilmiş bir videoyu oynatmak istiyorsanız, bu da kolayca yapılabilir. Kullanılacak harici web kamerası seçeneğini belirtmek yerine, oynatılacak video dosyasının konumunu, görüntülerle uğraşırken çalıştığımıza benzer şekilde belirlemeyi seçerseniz, benzer bir sonuç elde edebilirsiniz. İstediğiniz videoyu başarıyla oynatabilirsiniz. Sadece hepimizin aynı sayfada olduğundan ve bu paragrafta yapılan ifadelerden kafanızın karışmadığından emin olmak için, seçtiğiniz videoyu yürütmek ve oynatmak için lütfen aşağıdaki kod satırını takip edin.

Video = cv2.VideoCapture ("uzantı yani yol") # Videoyu Okuyun

Bununla birlikte, bilgisayarla görme problemi ifadeleriyle başa çıkmanın temel kavramlarının ve istenen görevi başarıyla gerçekleştirmek için açık modülün nasıl etkili bir şekilde kullanılacağının sonuna geldik. Ancak bu son değil çünkü bu bilginin daha karmaşık ve karmaşık bilgisayar görevlerini çözmemize nasıl yardımcı olacağını ve gerçekleştirmemiz gereken bu görevlerin tam olarak ne olduğunu bilmemiz gerekiyor. Bunu daha stratejik bir şekilde anlamak için, bu makalenin sonraki bölümünde bilgisayarla görme uygulamalarına ayrıntılı olarak bakalım.

Fotoğraf Christina Morillo dan Pexels

Bilgisayarla Görme Uygulamaları

Bu makalede daha önce tartışılan tüm içeriğin yanı sıra, kullanabileceğiniz milyarlarca proje seçeneği daha var. Bu projelerden birkaçından ve arkasındaki metodolojilerden bahsedeceğim ve kendinizi rahat hissederseniz bunları da deneyebilirsiniz. Bu bölümün sonunda, size yardımcı olacak yararlı bir bağlantı da sunacağım ve size beş bilgisayar vizyonu projesinde rehberlik edeceğim. Bilgisayarla görme uygulamalarına dalalım.

  1. Yüz algılama ve yüz tanıma projeleri, en popüler bilgisayarla görme projelerinden bazılarıdır. Yüz tanıma, bir insan yüzünün, kullanıcının yetkili adıyla birlikte prosedürel olarak tanınmasıdır. Yüz algılama daha basit bir iştir ve başlangıç ​​seviyesinde bir proje olarak düşünülebilir. Yüz algılama, yüz tanıma için gerekli adımlardan biridir. Yüz tanıma, bir insanın yüzünü vücudun diğer bölümlerinden ve arka plandan ayırt etme yöntemidir, yüz tanıma ise yüzü sarma ve belirli kişinin kim olduğunu tanıma görevini yerine getirir.
  2. Nesne Algılama ve nesne izleme, bilgisayarla görme projeleri için diğer popüler seçeneklerdir. Nesne algılama, bir görüntü veya videodaki nesneleri tanımlamamıza ve konumlandırmamıza izin veren bir bilgisayarla görme tekniğidir. Bu tür bir tanımlama ve yerelleştirme ile nesne algılama, bir sahnedeki nesneleri saymak ve onları doğru bir şekilde etiketlerken bunların kesin konumlarını belirlemek ve izlemek için kullanılabilir. Nesne izleme, belirli bir nesneyi tanımlama ve önceden tanımlanmış nesneyi video boyunca veya gerçek zamanlı olarak izleme görevidir.
  3. Görüntü Segmentasyon görevleri, çevreyi koordine etmek ve görselleştirmek ve programı belirli bir görevi gerçekleştirmek üzere eğitmek için son derece kullanışlıdır. Eğitilen model, önceden belirlenmiş farklı amaçlar için içeriğe dayalı görüntü alma, trafik kontrol ve analiz sistemleri, video gözetimi ve biyomedikal alan gibi görevlerde iyi sonuçlar elde edebilir. Görüntü bölümleme, belirli bir çerçeve veya görüntüdeki her nesneyi sabit adlarla sınıflandırma ve bunları renk, desen veya bazı sabit özelliklere göre uygun şekilde hesaplama görevidir.
  4. Optik Karakter Tanıma — Bu, yeni başlayanlar için en uygun başka bir temel projedir. Optik karakter tanıma, 2 Boyutlu metin verilerinin elektronik veya mekanik bir aygıt kullanılarak makine tarafından kodlanmış bir metin biçimine dönüştürülmesidir. Görüntüyü veya metin dosyalarını okumak için bilgisayar vizyonunu kullanırsınız. Görüntüleri okuduktan sonra, görüntüdeki veya PDF’deki metin verilerini okumak için pytesseract modülünü kullanın ve ardından bunları python’da görüntülenebilen bir veri dizisine dönüştürün. Optik karakter tanıma, diğer birçok kullanım durumunun yanı sıra veri girişi, fatura ayrıntıları, OCR alıcısı ve OCR istemcilerinde, görevlerde vb. Çeşitli uygulamaları bulur.
  5. Emotion or Jesture Recognition, duygu ve hareket tanıma gibi oldukça karmaşık görevleri gerçekleştirmek için derin öğrenme teknolojilerini ve bilgisayarla görmeyi kullanan bir başka harika bilgisayarla görme uygulamasıdır. Çeşitli yüzler, belirli bir yüze göre gösterilen duygulara göre algılanır ve sınıflandırılır. Modeller sadece duyguları sınıflandırmakla kalmaz, aynı zamanda tanınan parmakların farklı el hareketlerini de buna göre algılar ve sınıflandırır. İnsan duyguları veya jestleri ayırt edildikten sonra, sırasıyla insan duygu veya jestinin doğru tahminiyle eğitimli model tarafından sesli bir yanıt sağlanır. Bu biraz karmaşık bir görevdir ve prosedürün başarıyla tamamlanması için birçok adım gerektirir. Bu projelerin sıfırdan nasıl geliştirileceğiyle ilgili daha fazla bağlantı için lütfen sonuç bölümüne bakın. Bu projeleri sıfırdan kendi başınıza uygulamak için rehberlerimi takip edebilirsiniz.

Sonuç:

Bilgisayarla görme eğitiminin sonuna geldik. Umarım bu rehber, temel bilgilerinizi güçlendirmek ve bu görüntü işleme alanın önemli yönlerini anlamak için hepinize yardımcı olmuştur. İşlerin dahili olarak nasıl çalıştığını anlamak, bilgisayar görüşünde çok önemlidir çünkü bilgisayarın verileri tam olarak nasıl analiz ettiğini ve işlediğini anlamanıza ve metodolojilerinin arkasındaki yoğun işleri takdir etmenize yardımcı olur.

Umarım örnekler, açık opencv kavramlarını daha sezgisel olarak kavramanıza yardımcı olmuştur. Bununla ilgili herhangi bir sorunuz veya sorununuz olması durumunda, bana ulaşmaktan çekinmeyin ve neyi anlayamadığınızı bana bildirin. Bunu size açıklamak için elimden geleni yapacağım ve kavramsal olarak çözmenize yardımcı olacağım. Bir sonraki eğitimde, yüz algılama ve sıfırdan tam olarak nasıl çalıştığını ayrıntılı olarak ele alacağım.

--

--

No responses yet