Last chance! 50% off DataCamp Premium
Sale ends in
OpenCV (Open Source Computer Vision Library), bilgisayarla görme projelerinde yaygın olarak kullanılan, güçlü ve açık kaynaklı bir kütüphanedir. OpenCV, gerçek zamanlı bilgisayarla görme için entegre bir çerçeve sunmak üzere tasarlanmıştır ve çok sayıda görüntü ve video analiz uygulamasını kolaylaştıran bir platform işlevi görür.
OpenCV kütüphanesi, geliştiricilerin ve araştırmacıların görsel veri işlemenin avantajlarından yararlanmasını sağlamada kilit bir rol oynar. Yetenekleri, temel görüntü işleme işlemlerinden nesne tanıma ve yüz tanıma gibi daha karmaşık görevlere kadar uzanır. Geniş bir algoritma, yöntem ve görüntü verisi işleme işlemleri koleksiyonu sunarak, OpenCV görsel içeriği tanıyıp sınıflandırabilen akıllı sistemlerin geliştirilmesini kolaylaştırır.
OpenCV’nin dikkat çekici kullanım alanlarından biri, görüntülerde veya video akışlarında nesneleri tanımlayıp konumlandırmayı sağlayan algoritmaların kullanıldığı nesne tanımadır. Bu yetenek, yüz tanıma, hareket takibi ve artırılmış gerçeklik teknolojilerine destek gibi diğer bilgisayarla görme görevlerini de kapsar.
Bu makalede şunları ele alıyoruz:
Bu OpenCV eğitimini takip etmek için orta düzeyde Python bilgisine ve bilgisayarla görme konusunda temel bir anlayışa ihtiyacınız olacak. Görüntü işleme ilkelerine aşinalık, eğitim boyunca öğrenim deneyimini geliştirecektir; yine de kilit kavramlar bahsedildiklerinde tanımlanmaktadır.
!pip install opencv-python
Anaconda kullanıyorsanız aşağıdaki komutu kullanabilirsiniz:
!conda install -c conda-forge opencv
Kurulumun başarılı olduğunu teyit etmek için aşağıdaki kodu bir Python Yorumlayıcıda veya Jupyter NoteBook’ta çalıştırın:
import cv2
print(cv2.__version__)
Kurulum başarılıysa, bu komut yüklü OpenCV kütüphanesinin sürüm numarasını yazdırmalıdır. Terminalde veya konsolda sürüm numarası yazdırılmıyorsa kurulum işleminin başarısız olduğu anlamına gelir.
Google Colab kullanılıyorsa önemli not: Google Colab not defterlerinde görüntüleri gösterebilmek için, geleneksel cv2.imshow işlevini, Google Colab’in özel kütüphanelerinin sağladığı cv2_imshow ile değiştirmek gerekir. Bu ayarlama, cv2.imshow’u desteklemeyen Colab ortamıyla uyumluluğu sağlar. Bu değişikliği uygulamak için, aşağıdaki gibi Google Colab yamalarından cv2_imshow işlevini içe aktarın:
from google.colab.patches import cv2_imshow
# Displaying an image in a window
cv2_imshow(image)
Aşağıdaki kod parçası, OpenCV kütüphanesini görüntü işleme için kullanmanın temel bir giriş noktasını sunar. Bir görüntüyü geliştirme ortamına yüklemek; basit bilgisayarla görme projelerinden üretimdeki gerçek zamanlı nesne tespiti uygulamalarına kadar birçok alanda yapılır. Görüntünün gösterilmesi, bir görüntünün içeriğini veya işleme sonucunu gözlemlemek açısından da kritiktir. Aşağıdaki kodda bir dosyadan JPG okuyor ve OpenCV kütüphanesini kullanarak görüntülüyoruz.
OpenCV’de görüntüleri yüklemek ve görüntülemek için aşağıdaki kod parçası kullanılabilir:
import cv2
# Loading image from a file
image = cv2.imread('your/image/path.jpg')
# Displaying an image in a window
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Bir dizüstü bilgisayarın etrafında toplanmış ofis çalışanları. Kaynak: Canva
Bu kodda, görüntü ‘cv2.imread’ kullanılarak dosyadan okunur ve ardından ‘imshow’ yardımıyla bir pencerede gösterilir. 'cv2.waitKey(0)' işlevi, kullanıcı bir tuşa basarak kapatana kadar pencerenin açık kalmasını sağlar.
Görüntü işleme, piksel verilerini; özellik çıkarımı, görüntü analizi veya diğer bilgisayarla görme görevleri için, başlangıçtaki görsel görünümü değiştirecek şekilde dönüştürmektir. Görüntü işleme tekniklerine örnek olarak renk işleme, filtreleme, segmentasyon, kenar tespiti vb. verilebilir.
Aşağıdaki kod parçası, önceki kodda yüklenen görüntü üzerinde basit bir görüntü işleme tekniğini göstermektedir. Burada gösterilen teknik, basit bir renk dönüşümüdür; özel olarak gri tonlamaya dönüştürme. Gri tonlamaya dönüştürme, görüntüyü tek bir yoğunluk kanalına indirgediği için görüntü işlemede temel bir tekniktir.
# Converting an image to grayscale form
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Displaying the grayscale image
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Burada, cv2.cvtColor() yüklenen görüntüyü gri tonlamaya dönüştürür.

Bir dizüstü bilgisayarın etrafında toplanmış ofis çalışanları (Gri tonlama). Kaynak: Canva
Kenar tespiti, görüntü işleme ve bilgisayarla görmenin temel bir tekniğidir. Görüntüde parlaklığın keskin şekilde değiştiği veya süreksizliklerin olduğu noktaları belirler. Kenarların tespiti, özellikle görüntü verisi içindeki özelliklerin bulunmasında, bilgisayarla görmede kritik öneme sahiptir. Kenar tespiti, genel olarak piksel yoğunluklarındaki ani değişimleri bularak çalışır. Görüntü parlaklığındaki bu keskin değişim noktaları birleştirilerek, görüntüdeki nesneleri çevreleyen çizgiler ve kenarlar oluşturulur.
Kenar tespiti algoritmalarıyla, bir görüntü üzerindeki bir nesnenin çok küçük dokusal ve yapısal özellikleri dahi saptanabilir.
Çeşitli kenar tespiti algoritmaları, örneğin Canny Kenar Algılayıcı, Sobel Yöntemi ve Bulanık Mantık yöntemi, nesne tanıma, görüntü segmentasyonu ve özellik çıkarımında kullanılır. Aşağıdaki kod parçası, OpenCV kullanarak basit kenar tespitini göstermektedir:
# Applying Canny edge detection (a simple edge detection method)
edges = cv2.Canny(gray_image, 50, 150)
# Displaying the edge-detected image
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
Canny kenar tespiti algoritması, OpenCV kütüphanesinde hazır bulunmaktadır; alttaki 'cv2.Canny()' işlevi, gri tonlamalı görüntüde nesnenin kenarlarını tespit etmek için uygulanır.

Bir dizüstü bilgisayarın etrafında toplanmış ofis çalışanları (Gri tonlama). Kaynak: Canva
Görüntüleri yeniden boyutlandırma ve döndürme, görsel içeriğin uyarlanması ve dönüştürülmesini sağladıkları için görüntü işlemenin temel gereksinimleridir. Bir görüntüyü yeniden boyutlandırma, boyutlarının büyütülmesi veya küçültülmesini içerir ve bu işlev, görüntüleri belirli ortamlara ölçeklemek ve yerleştirmek için gereklidir.
Döndürme ise görüntünün belirli bir dönme açısıyla bakış açısını değiştiren bir ayarlamadır. Her iki işlem de bilgisayarla görme, makine öğrenimi ve grafikler dahil çeşitli amaçlarla, yaygın biçimde ön işleme adımı olarak uygulanır. Örneğin, derin sinir ağlarını eğitirken döndürme ve yeniden boyutlandırma, eğitim sırasında ağa verilen verisetinin çeşitliliğini artırmak için kullanılan veri artırma teknikleridir. Veri artırmanın amacı, eğitilmiş ağın görülmemiş veriyi iyi genellemesini sağlamak için yeterli varyansa sahip bir verisetini ağ ile eğitmektir.
OpenCV kullanarak görüntüleri yeniden boyutlandırmak ve döndürmek için aşağıdaki kodu kullanabilirsiniz:
# Resizing the image
resized_image = cv2.resize(image, (width, height))
# Rotating the image by 45 degrees
rotation_matrix = cv2.getRotationMatrix2D((width / 2, height / 2), 45, 1)
rotated_image = cv2.warpAffine(resized_image, rotation_matrix, (width, height))
# Displaying the resized and rotated images
cv2.imshow('Resized Image', resized_image)
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
'cv2.resize' görüntüyü yeniden boyutlandırmak için kullanılırken, 'cv2.getRotationMatrix2D' ile 'cv2.warpAffine' birlikte görüntüyü döndürmek için kullanılır.

Bir dizüstü bilgisayarın etrafında toplanmış ofis çalışanları (Döndürülmüş). Kaynak: Canva
Videolar, art arda sunulan bir dizi görüntüdür. Bilgisayarla görmede, video işleme yetenekleri hem gerçek zamanlı hem de kayıtlı verileri işleyen uygulamaların geliştirilmesi ve oluşturulması için kritik öneme sahiptir. Görüntülerin durağan doğasının aksine, video işleme, zaman içinde hareketin analizi, değişimlerin incelenmesi ve zamansal örüntülerin çıkarılmasını mümkün kılan zaman dizileriyle ilgilenir.
Video verisindeki içeriğin dinamik doğası, özellikle gözetim, otonom sürüş, etkinlik tanıma ve daha pek çok kritik sistemde, hareketin ve değişimin anlaşılmasının gerekli olduğu durumlarda, video işleme tekniklerinin verimli olmasını gerektirir.
OpenCV’nin video işleme görevlerinde kullanılmasının önemli bir avantajı, video akışlarını verimli bir şekilde ele almak üzere tasarlanmış kapsamlı özellikler seti sunmasıdır. OpenCV, tıpkı görüntülerde olduğu gibi video yakalama, işleme ve analiz araçları sağlar.
Aşağıdaki kod parçası, yerel olarak bulunan bir videoyu yüklemek ve işlemek için kullanılabilir:
import cv2
# Open a video capture object
cap = cv2.VideoCapture("Your video's path.mp4")
# To check if the video has opened successfully of not
if not cap.isOpened():
print("Error: Couldnot open the video.")
exit()
# Loop through the video frames
while True:
# Reading a frame from the video
ret, frame = cap.read()
# Break the loop if the video has ended
if not ret:
break
# Display the original frame
cv2.imshow('Original Video', frame)
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('Black and White Video', gray_frame)
# Perform edge detection on the video
edges_frame = cv2.Canny(gray_frame, 50, 150)
cv2.imshow('Edges Video', edges_frame)
# Break the loop if 'q' key is pressed
if cv2.waitKey(25) & 0xFF == ord('q'):
break
# Release the video capture object and close all windows
cap.release()
cv2.destroyAllWindows()
Bu kodda, ‘cv2.VideoCapture’ sınıfı bir video dosyasına erişmek ve ‘cap.read' adlı yöntemiyle kareleri okumak için kullanılır. Önce orijinal videoyu gösterir, ardından siyah-beyaza dönüştürür ve son olarak her kare için kenar tespiti yapar. Döngü, video boşalana kadar ya da çıkmak için klavyeden giriş alınmadan önce çalışır. ‘cv2.waitKey(25)’, karelerin gösterilmesi arasında kısa bir gecikmeye izin vererek akıcı bir oynatma sağlar.
Nesne tespiti, bir görüntüde veya videoda nesneleri tespit etmeyi ve konumlandırmayı, ayrıca tanıma sonuçları – tespit edilen sınıf etiketleri listesi ve karşılık gelen sınırlayıcı kutuları – sağlamayı amaçlayan temel bir bilgisayarla görme görevidir. Nesne tanımanın bir varyantı olan insan tespiti, görsel bilgiler içinde insanları tanımlamaya ve konumlandırmaya odaklanır.
İnsan tespitinin uygulamaları arasında gözetim, kalabalık yönetimi, kişi sayımı, takip, insan-bilgisayar etkileşimi ve akıllı ortamlar bulunur. Gözetimde bu teknoloji şüpheli faaliyetlerin tespitine yardımcı olurken, kalabalık yönetiminde jest tanıma ve takibi destekler. İnsan tespiti, insan-bilgisayar etkileşiminde kritik bir rol oynar ve ayrıca akıllı ortamlarda kaynak optimizasyonu ve gelişmiş güvenlik için kullanılır.
YOLO, "You Only Look Once" ifadesinin kısaltmasıdır ve gerçek zamanlı nesne tanımayı verimli bir şekilde gerçekleştiren, yaygın olarak kullanılan bir sistem haline gelmiştir. Klasik nesne tespiti yöntemlerinin aksine YOLO, görüntüyü bir hücre ızgarasına böler ve her hücre için sınırlayıcı kutuları ve sınıf olasılıklarını eşzamanlı olarak tahmin eder.
Kapsamlı rehberimizde YOLO Nesne Tespiti hakkında daha fazlasını okuyabilirsiniz.
Aşağıda, bir görüntüde kişi tespiti için OpenCV ve Yolo kullanan bir kod parçası yer almaktadır:
import cv2
net = cv2.dnn.readNet('yolov3.weights', 'yolov3.cfg')
layer_names = net.getUnconnectedOutLayersNames()
image = cv2.imread('image path.jpg')
height, width = image.shape[:2]
blob = cv2.dnn.blobFromImage(image, 1/255.0, (416, 416), swapRB=True, crop=False)
net.setInput(blob)
outs = net.forward(layer_names)
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence > 0.5 and class_id == 0: # Class ID for person
box = detection[:4] * np.array([width, height, width, height])
(x, y, w, h) = box.astype(int)
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('Person Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Benzer şekilde, videoda kişi tespiti için kod yapısı da benzer ilkeleri izler. Tek bir durağan görüntüyü işlemek yerine, betik veya uygulama video karelerini sürekli olarak işler.
Hem görüntülerde hem de video kliplerde insanları tanımlamanın altında yatan ilke aynıdır; temel fark zamandır. Görüntülerde görev, tekil durağan karelerde insanları tanıyıp konumlandırmayı içerir.
Bu uygulama, gözetim anlık görüntüleri ve diğer örtüşmeyen fotoğraflar için en uygunudur. Videolarda ise amaç, bireyleri sonraki karelerde hareket ederken tanımlayıp izlemektir. Bu bazen videolarda nesne takibi olarak anılır. Zaman boyutu, insan hareketleri ve etkileşimleri zaman içinde ele alındığında kritik öneme sahiptir; bu da video tabanlı kişi tespitini güvenlik gözetimi, kalabalık izleme ve davranış analizi gibi gerçek zamanlı uygulamalar için hayati bir araç haline getirir.
İnsan tespitinin diğer bazı gerçek dünya kullanım alanları arasında akıllı şehirler, perakende analitiği ve kamu güvenliği bulunur. Bununla birlikte, mahremiyet sorunları, rıza ve teknolojinin kötüye kullanımıyla ilgili etik hususlar mevcuttur. Faydalar ile etik kaygılar arasında denge kurmak, çeşitli alanlarda sorumlu yaygınlaştırmayı sağlar.
Bu eğitim, çeşitli bilgisayarla görme görevleri için OpenCV kütüphanesiyle çalışmanın temel yönlerini gösterdi. Temel bilgilerle başlayarak OpenCV’nin bir Python ortamına nasıl kurulacağını ele aldık. Görüntüleri yükleme ve gösterme için OpenCV işlemleri, görüntüleri gri tonlamaya dönüştürme ve kenar tespiti uygulama gibi görüntü işleme teknikleriyle birlikte örneklendirildi. Genel olarak, OpenCV’nin, video karelerine görüntü işleme teknikleri uygulamak da dahil olmak üzere, gelişmiş görüntü dönüşümleri ve analizleri gerçekleştirebildiği açıktır.
Özellikle, OpenCV uygulamalı bilgisayarla görmede kritik bir rol oynar; sunduğu esneklik ve sağlam yetenekler sayesinde bilgisayarla görme mühendislerinin ve makine öğrenimi uygulayıcılarının görsel veri işlemesine ilişkin pek çok zorluğu ele almasını sağlar. OpenCV kütüphanesini kullanmanın başlıca avantajı, bilgisayarla görme algoritmalarını uygulamayı sadeleştirmesi ve uygulama fikirlerini verimli bir şekilde pratik uygulamalara dönüştürmesidir.
Bu makalede ele alınan kavramlara dair anlayışınızı, özenle hazırlanan bir kursla Python ile görüntü işleme dünyasına daha derinlemesine dalarak güçlendirin. Bu kurs, Sci-kit Image ve Numpy gibi ek kütüphanelerle görüntü işleme ve bilgisayarla görme araç setinizi genişletir.
1M+ görüntülemeli Makine Öğrenimi içerik üreticisi — Bilgisayarlı Görü Kuruluş Mühendisi. Teknoloji ve Finans alanlarında bilgi edinmeye ve paylaşmaya ilgi duyar
Python Yolculuğunuza Bugün Başlayın!
Kurs
Kurs
Kurs
blog
Dario Radečić
15 dk.

blog
Abid Ali Awan
14 dk.
Eğitim
Adel Nehme
Eğitim
Kurtis Pykes
8 dk.