Yeni Başlayanlar ve Deneyimliler için En İyi 10 Heyecan Verici OpenCV Projesi Fikirleri ve Konusu [2022]

Yayınlanan: 2021-05-27

OpenCV veya Açık Kaynaklı Bilgisayarla Görme Kitaplığı, bilgisayarla görme sorunlarını geliştirmek ve çözmek için kullanılan güçlü bir makine öğrenimi ve AI tabanlı kitaplıktır. Bilgisayarla görme, bir bilgisayarın görsel dünyayı anlaması ve kavraması, öğeleri tanımlaması ve derin öğrenme modelleri kullanarak bunlara yanıt vermesi için eğitilmesini içerir. Bugün dünyanın her yerindeki işletmeler, görüntü işleme, işleme, yüz algılama, ses tanıma, hareket izleme ve nesne algılamada bundan yararlanıyor.

Google, Facebook, Microsoft ve Intel gibi şirketler bilgisayarla görü uygulamaları geliştirmek için zaten OpenCV kullanıyor. 2015 yılındaki bir röportajda Mark Zuckerberg, “Bir görüntüde ne olduğunu anlayabilen ve aksi takdirde o görüntüyü göremeyen kör bir kişiye söyleyebilecek bilgisayarlar yapabilirsek, bu da oldukça şaşırtıcı olurdu” demişti.

Bugün, OpenCV teknolojisi, kör veya görme engelli bireyler için bir atılım olduğunu kanıtlamıştır. Bu görme bozukluğunun üstesinden gelmek için tanıdık olmayan bir ortamla tanışmalarını ve yakındaki nesneleri ve insanları tanımalarını sağlar. Bilgisayarla görme, aynı zamanda kendi kendini süren arabaların ve akıllı hareket sensörü cihazlarının arkasındaki teknolojidir.

Bilgisayarla görü alanında bir kariyer hedefliyorsanız, gerçek dünya deneyimi kazanmanıza yardımcı olacak on ilginç açık özgeçmiş projesi burada. Öyleyse başlayalım!

İçindekiler

2022'de Kontrol Edilecek En İyi 10 Açık CV Projesi

Proje 1: EdgeML Kullanarak Pnömoni Tespiti

Bu OpenCV projesi, Raspberry Pi'nize AI tabanlı bir Pnömoni Tespiti yazılımı yerleştirmeyi amaçlamaktadır. Balena'nın çoklu kapsayıcılarını kullanarak kameralı bir Raspberry Pi'yi bir pnömoni sınıflandırıcısına dönüştürmek için Edge Machine Learning sistemini kullanır.

Balena'ya, bir Node.js sunucusunda Edge Impulse WebAssembly çıkarım motorunu çalıştıran ikinci bir kapsayıcı eklenir. Her iki kapsayıcı, BalenaCam'in web sayfasındaki kameranızdan gelen akışın her saniyesini canlı yayınlamasını sağlamak için WebSockets aracılığıyla iletişim kurar.

Projede kullanılan yazılım ve araçlar arasında OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code ve Docker yer alıyor. Balena Cam'i destekleyen web tarayıcıları Chrome, Safari, Firefox ve Edge'dir.

Projeyi buradan inceleyebilirsiniz .

Proje 2: Samsung SmartThings için OpenCV-Powered Hareket Sensörü

Öncelikle, daha önce OpenCV'nin kurulu olduğu, çalışan bir PiCam'e sahip bir Raspberry Pi 3'e ihtiyacınız var. Bu proje, SmartThings için bilgisayar vizyonuyla desteklenen ve yüzleri algılayan özel bir Hareket Sensörü oluşturmayı amaçlıyor. Toplanan veriler LAN – UPnP üzerinden SmartThings'e gönderilir.

Bunu yapmak için SmartThings için bir cihaz işleyicisi oluşturuyor ve programlıyoruz. Daha sonra kamera görüntülerine erişmek ve yüzleri algılamak için bir Python betiği kullanıyoruz ve SmartThings tarafından keşfedilecek Raspberry Pi'yi eşleştiriyoruz. Ayrıca GitHub'dan temin edebileceğiniz imutil'leri de kurmanız gerekiyor.

Projenin kaynak koduna buradan göz atın .

Proje 3: Hesaplamalı Fotoğrafçılık

Bu proje, panoramalar oluşturmak, görüntülerdeki gürültüyü ve istenmeyen nesneleri ortadan kaldırmak ve düşük ışıkta tıklanan fotoğrafların görünürlüğünü artırmaktır. Hesaplamalı fotoğrafçılık, Gauss beyaz gürültüsünü ve bozulmasını ortadan kaldırmak için fotoğraf gürültü giderme algoritmalarını , çizgileri, nesneleri ve istenmeyen öğeleri filtrelemek için fotoğraf restorasyonunu ve karakterleri tanıyarak plakayı algılamak için plaka tanımayı içerir .

Proje 4: OpenCV Kullanarak Resimlerde Filigran Oluşturun

Bu proje, açık bilgisayarlı görü kitaplığını kullanarak bir görüntü üzerinde yanlış kullanımı veya telif haklarının ihlalini önlemek için imza, logo veya su damgası gibi bir filigranı nasıl oluşturabileceğinize ilişkin bir eğitimdir. Python'un OpenCV kitaplığını kullanarak hem görüntü hem de metin kullanarak orijinal bir görüntüyü filigranlamanıza olanak tanır. Bir görüntü kullanarak bir filigran oluşturmak için, saydam işlevini ve görüntü ekleme işlevini tanımlamanız gerekir. Metin durumunda, PIL işlevini içe aktarır ve ardından metin filigranı konumunu ayarlarız.

Projeyi buradan inceleyebilirsiniz .

Proje 5: Waldo'yu Bulmak

Bu, bir AI'yi bir dizi farklı görüntüden Waldo'yu tanıması için eğiterek bir görüntüdeki Waldo'yu algılamaya yönelik bir nesne algılama projesidir. Ardından piksel eşleştirme ile Waldo'yu bulmak için statik bir yaklaşım kullanırız. Bu önemlidir, çünkü bir şablon görüntüsü kullanırsanız, statik eşleştirme Waldo'nun yeni bir görüntüsüne değil, yalnızca o belirli görüntüye uygulanır.

Girdi olarak waldo şablonunu alan ve onu Waldo'nun algılanacağı görüntü boyunca piksel piksel kaydıran şablon eşleştirmeyi gerçekleştirmek için korelasyon katsayısını hesaplıyoruz. Korelasyon katsayısı, piksel konumlarının "iyi" veya "kötü" bir eşleşme olup olmadığını gösterir.

Projeyi buradan inceleyebilirsiniz .

Proje 6: Kendi Kendini Süren Arabalar

Bu proje, sürücüsüz arabalar oluşturmak için OpenCV kullanarak görüntü işleme ve işleme kullanır. Bir arabayı kendi başına sürmesi için eğitmek için, onu sokak şeritlerine alıştırmamız, onları bulmamız ve üzerinde kalmaya odaklanmamız gerekir. Bu, bir makine öğrenimi modelinin, pikselleri sokak şeritlerini temsil eden bir görüntüden ayırmak için keskin kenar algılama ve hough çizgileri dönüşümü ile ilgilenilen bölgeyi belirleme konusunda uzmanlık gerektirdiği anlamına gelir. Bu ayrıca ortalama eğim noktalarının maskelenmesini ve hesaplanmasını gerektirir.

İşte ilgilenilen bölgeyi belirlemek için kaynak kodu:

numpy'yi np olarak içe aktar

matplotlib'den pyplot'u plt olarak içe aktarın

resim = cv2.imread('../../images/input.jpg')

[8]'de:

resim.şekil

Çıkış[8]:

(830, 1245, 3)

[11]'de:

x, y = görüntü.şekil[:2]

[3]'te:

yükseklik, genişlik = görüntü.şekil[:2]

# Başlangıç ​​piksel koordinatlarını almak için (kırpma dikdörtgeninin sol üst kısmı)

start_row, start_col = int(yükseklik * .25), int(genişlik * .25)

# Bitiş piksel koordinatlarını almak için (sağ alt)

end_row, end_col = int(yükseklik * .75), int(genişlik * .75)

# Görüntünün istediğimiz bölümünü kırpmak için indekslemeyi kullanma

kırpılmış = resim[start_row:end_row , start_col:end_col]

[6]'da:

satır, sütun = 1, 2

fig, axs = plt.subplots(satır, sütun, figsize=(15, 10))

şekil.tight_layout()

axs[0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

axs[0].set_title('Orijinal Resim')

cv2.imwrite('orijinal_image.png', resim)

axs[1].imshow(cv2.cvtColor(kırpılmış, cv2.COLOR_BGR2RGB))

axs[1].set_title('Kırpılmış Resim')

cv2.imwrite('cropped_image.png', kırpılmış)

plt.göster()

Projeye buradan göz atın .

Proje 7: Görme Engelliler İçin Yüz ve Ses Tanıma

Bu proje ile Raspberry Pi 2 Model B ve Raspberry Pi Kamera Modülü kullanılarak yüz girişini ses çıkışına çevirerek görme engelli bireylere yardımcı olunması amaçlanmaktadır. 2022'nin en popüler açık cv projelerinden biridir. Yazılım, görme engelli veya görme engelli kişilerin işaret, yazı veya tanıdık olmayan bir ortamdaki kişileri tespit ederek yardım almadan yollarını bulmalarına olanak tanır. Proje için diğer gereksinimler arasında yüz tanımayı gerçekleştirmek için OpenCV ve Python yer alıyor ve GNU Octave kullanılarak ses tanıma sağlanıyor.

Kodu buradan kontrol edebilirsiniz .

Proje 8: Akıllı Katılım Modeli

Akıllı devam sistemi, ZoomApp gibi çevrimiçi eğitim modelleri için kullanışlı bir araçtır. Katılımlarını gerçek zamanlı olarak izleyerek Zoom sınıfınıza katılan öğrencileri takip etmenize yardımcı olur. Yapılması gereken tek şey, öğrenciden tarihle birlikte bir ekran görüntüsü almak ve bir excel dosyasına yüklemek.

Bu açık özgeçmiş projesi için bir öğreticiyi burada bulabilirsiniz .

Proje 9: OpenCV ile Yüz Değiştirme

Yüz değiştirme uygulamaları ve filtreleri bir süredir sosyal medyada trend oluyor. Genç ve yaşlı görünmekten hareketsiz görüntüleri hareketli görüntülere dönüştürmeye kadar, Instagram, Snapchat ve FaceApp beğenileri çoğunluğa ulaştı. OpenCV ve Python kullanarak yüz değiştirme uygulamaları oluşturmak nispeten kolaydır.

Adımlar, dlib yer işareti dedektörü kullanılarak oluşturulan bir üçgen yardımıyla bir hedef görüntü üzerine bir kaynak görüntünün yerleştirilmesini içerir.

Projeye buradan göz atın .

Proje 10: Konturları Tespit Etme ve Şekilleri Sayma

Proje, bir nesnenin sahip olduğu şeklin türünü belirlemek için belirli bir şeklin ana hatlarını veya dış hatlarını algılar. Örneğin, bir resimde şişe kapakları varsa, resimde kaç tane şişe kapağı olduğunu belirlemek için yuvarlak şekli kullanabilirsiniz.

İşte bunu yapmak için kaynak kodu :

numpy'yi np olarak içe aktar

matplotlib'den pyplot'u plt olarak içe aktarın

[2]'de:

resim = cv2.imread('../../images/bottlecaps.jpg')

gri = cv2.cvtColor(resim, cv2.COLOR_BGR2GRAY)

plt.imshow(cv2.cvtColor(gri, cv2.COLOR_BGR2RGB))

plt.title('şişe kapakları'); plt.göster()

cv2.imwrite('bottlecaps_input.jpg', gri)

Çıkış[2]:

Doğru

[3]'te:

bulanıklık = cv2.medianBlur(gri, 5)

daireler = cv2.HoughCircles(bulanıklaştırma, cv2.HOUGH_GRADIENT, 1.5, 10)

[0,:] çevrelerindeki i için:

# dış çemberi çiz

cv2.circle(image,(i[0], i[1]), i[2], (255, 0, 0), 2)

# dairenin merkezini çiz

cv2.circle(image, (i[0], i[1]), 2, (0, 255, 0), 5)

plt.imshow(cv2.cvtColor(resim, cv2.COLOR_BGR2RGB))

plt.title('Algılanan Çevreler'); plt.göster()

cv2.imwrite('algılanan_circles.jpg', resim)

Çıkış[3]:

Doğru

İçinde [ ]:

Öte yandan, şekilleri sayma, bir görüntüdeki ilgi noktalarını belirlemek için segment görüntülerine ve küme verilerine algoritmalar uygulamayı içerir. YaklaşıkPolyDP işlevinin yardımıyla ikili ve yaklaşık konturları kullanıyoruz.

Bu açık cv projesini buradan inceleyebilirsiniz .

Son düşünceler

Computer Vision, görüntü dönüştürme, çeviri, kontur algılama, görüntü segmentasyonu, nesne algılama, nesne izleme ve hareket analizi gibi çok çeşitli faydalı uygulamalar geliştirmenize olanak tanır.

Ayrıca, nesneleri ve yüzleri tanımak için yüzleri bulmayı, şekilleri algılamayı vb. öğrenerek Artırılmış Gerçeklik'te (AR) kullanılır. Ayrıca kredi kartı okuyucu, el yazısı rakam dedektörü veya yüz okuyucu gibi basit makine öğrenimini kullanarak ilginç Açık CV projeleri oluşturabilirsiniz.

Ancak bu, veri bilimi ve makine öğrenimi, özellikle derin öğrenme hakkında bir anlayış gerektirir. Makine Öğrenimi Mühendisi, Veri Bilimcisi veya Derin Öğrenme Mühendisi olarak kariyer yapmak istiyorsanız, Makine Öğrenimi ve Derin Öğrenmede Gelişmiş Sertifika Programı edinmenizi öneririz .

Bu kurs, İstatistik, Regresyon, Kümeleme Algoritmaları, Sinir Ağları, Nesne Algılama ve Hareket Tanıma kavramları konusunda bilgili olmanıza yardımcı olacaktır. Sadece bu değil, diğer programlama araçları ve kitaplıklarının yanı sıra OpenCV, Python, TensorFlow, MySQL, Keras, Excel ve NumPy'de uzmanlık oluşturmanıza ve kalabalıkta öne çıkmanıza yardımcı olacaktır.

OpenCV nedir?

OpenCV, Intel tarafından sağlanan ve şimdi bir geliştirici topluluğu tarafından desteklenen, görüntü işleme ve bilgisayarla görme için açık kaynaklı bir kitaplıktır. Açık kaynak olan OpenCV, tüm geliştirici topluluğunun gücünden yararlanır. Kütüphane, nesne tanıma, video gözetimi, insan-makine etkileşimi, tıp ve diğer ilgili alanlar gibi gerçek zamanlı uygulamalar için optimize edilecek şekilde tasarlanmıştır.

Nesne algılama nedir?

Nesne algılama, algılanması çok kolay olmayan görüntülerdeki veya videolardaki nesneleri bulma işlemidir. Bu problem genellikle bir sınıflandırma örneği olarak formüle edilir. Bir görüntü verildiğinde, çeşitli nesnelerini (arabalar, yayalar ve binalar gibi) ve sırayla bize konumlarını verecek olan sınırlayıcı kutuları ile sınıflandırmak istiyoruz. Nesne algılama, bir görüntüdeki nesneleri tanımlama görevidir. Nesne algılamanın amacı, bir görüntüdeki nesnelerin konumunu bulmak (yani onları konumlandırmak) ve boyutlarını ve şekillerini tahmin etmektir. Nesne tespiti zorlu bir problemdir çünkü nesneler genellikle kısmen kapatılır ve bazen görüntüde katı olmayan deformasyonların yanı sıra çok çeşitli görünümlere sahiptir.

En doğru nesne algılama algoritması nedir?

Birçok nesne algılama algoritması vardır ve bunların hiçbiri %100 doğru değildir. Nesne algılama algoritmaları, aşırı veri uydurma sorunuyla karşı karşıyadır. Aslında, bazı bilgisayarlı görme araştırmacıları, nesne algılama algoritmalarının %100 doğru olamayacağını iddia ediyor. Ancak, belirli bir veri kümesi için doğru sonuçlar veren birçok algoritma vardır. Bir GPU makinesini karşılayabiliyorsanız, nesne algılama için OpenCV tabanlı SVM uygulamasını kullanmanızı öneririz. Çok doğru, hızlı ve çok büyük veri setlerinde çalışıyor. Ancak, oklüzyonu çok iyi işlemez. Bir yüz dedektörü oluşturmak istiyorsanız, OpenCV'de Haar kademeli sınıflandırıcı uygulamasına gidin.