- Görüntüler nedir?
- Bilgisayar görüntüleri nasıl depolar
- Bir makinenin görüntüleri tanıması neden zordur?
- OpenCV uygulaması ve kullanımları
- OpenCV'yi Python ve Anaconda ile Yükleme
- OpenCV'de Görüntüleri Açma ve Kaydetme
- OpenCV'de Gri Ölçekli Görüntü
- Renk Uzayları
- RGB görüntünün bağımsız bileşenlerini keşfetme
- Görüntüyü ayrı RGB bileşenine dönüştürme
- Görüntünün Histogram Temsili
- OpenCV kullanarak Görüntü ve Şekil Çizme
Sanat bir görme biçimidir ve görmenin inanmak olduğunu söylerler, ama bunun tersi de doğrudur, inanmak görmektir ve bu dünyada görme yeteneği olmadan yaşamayı hayal etmek gerçekten zor - gözlerimiz, bebek olmak ne kadar harika gözlerimiz sadece açıldığında dünyayı görürüz ve çevremizdeki dünyayı tanımaya ve görmeye başlarız, ancak zaman geçtikçe, aynı harika deneyim sıradan bir deneyim haline gelir. Ancak teknoloji ile ilerlerken, makinelerin de görebileceği ve anlayabileceği bir eşikteyiz. Şu anda, telefonunuzun kilidini sadece yüzünüzle açarsanız, bu bir bilim kurgu gibi görünmüyor, ancak makine vizyonunun gelişiminin hikayesi, 20 yıldan daha eskiye dayanıyor.
Bu alandaki ilk resmi adım, 1999'da Intel girişimiyle geri alındı, devam eden tüm araştırmalar, ilk büyük sürümü olan 1.0 ile 2006'da C ++ ile yazılmış OPEN CV (Açık Kaynak bilgisayar görüşü) altında işbirliği yapıldı. 2009'da, 2015'te üçüncü ve 2018'de dördüncü. Artık OpenCV, C ++, Python ve Java arayüzlerine sahip ve Windows, Linux, Mac OS, iOS ve Android'i destekliyor. Bu yüzden Python ve Linux ortamı ile Raspberry Pi'ye kolayca kurulabilir. Ve OpenCV ve ekli kameralı Raspberry Pi, Yüz algılama, yüz kilidi, nesne izleme, araç plaka algılama, Ev güvenlik sistemi vb. Gibi birçok gerçek zamanlı görüntü işleme uygulaması oluşturmak için kullanılabilir.
OpenCV kullanarak görüntü işlemeyi öğrenmeden önce, görüntülerin ne olduğunu ve insanların ve makinelerin bu görüntüleri nasıl algıladığını bilmek önemlidir.
Görüntüler nedir?
Görüntüler, görünür ışık spektrumunun iki boyutlu bir temsilidir. Ve görünür ışık spektrumu, kızılötesi ve morötesi spektrum arasında uzanan elektromanyetik spektrumun sadece bir parçasıdır.
Görüntüler nasıl oluşur: - Bir ışık bir nesneden bir filme, bir sensöre veya retinaya yansıdığında.
Bu, ışığın en çok noktasını bloke etmek için bir bariyer kullanarak, ışığın geçebileceği küçük bir açıklık bırakarak gözlerimizin çalışma şeklidir ve çok odaklanmış bir görüntü oluşturur ve bir iğne delikli kamera için çalışan bir modeldir. ancak bir pin delikli kamerada bir problem var, aynı miktarda ışığın açıklığa girmesi, oluşan film veya görüntü için uygun olamayacağı gibi odaklanmış bir görüntü de alamıyoruz, bu yüzden görüntüyü odaklayacağız. filmi ileri geri hareket ettirme ihtiyacı duyar, ancak bu birçok durumda sorunludur.
Ya da lens kullanarak bu sorunu çözebiliriz, diyafram açıklığını kontrol etmemize izin verir ve fotoğrafçılıkta f Stop olarak bilinir, genellikle f değerini düşürmek fotoğrafçılıkta Stop daha iyidir.
Açıklık boyutu, fotoğrafta Bokeh olarak adlandırılan güzel alan derinliğine girmemize de izin veriyor, görüntüye odaklanırken bulanık bir arka plana sahip olmamızı sağlıyor.
Bilgisayar görüntüleri nasıl depolar
.png,.jpgG vb. Gibi çeşitli görüntü formatlarını duymuş olabilirsiniz, bunların tümü analog dünyamızın dijital temsilidir, bilgisayarlar bunu görüntüyü depolama için dijital koda çevirerek yapar ve ardından dosyayı tekrar bir görüntüye çevirerek Görüntüle. Ancak temelde görüntüleri depolamak için ortak bir platform kullanıyorlar ve aynı şey openCV için de geçerli.
OpenCV, görüntüleri için varsayılan olarak RGB (kırmızı, yeşil ve mavi) renk alanını kullanır; burada her piksel koordinatı (x, y), 8 bit formundaki yoğunluklar için değişen 3 değer içerir, yani (0-255, 2 8).
Her rengin farklı yoğunluklarını karıştırmak bize tam spektrumu verir, bu nedenle resim veya sanatta bu üç renk ana renkler olarak kabul edilir ve diğerleri ikincil renk olarak kabul edilir, çünkü ikincil renklerin çoğu ana renklerden oluşabilir. Sarı gibi, aşağıdaki değerlere sahibiz: Kırmızı - 255; Yeşil - 255; Mavi - 0.
Artık görüntüler çok boyutlu dizilerde saklanıyor. Programlamada dizi, bir dizi nesne koleksiyonudur. Ve burada, 'D'nin boyutsal anlamına geldiği 1D, 2D ve 3D olmak üzere üç tip dizi ile uğraşıyoruz.
Renkli görüntüler üç boyutlu dizilerde depolanır, burada üçüncü boyutlar RGB renklerini temsil eder (daha sonra göreceğiz) ve birlikte bir görüntü için farklı piksel yoğunlukları oluştururken siyah beyaz görüntüler iki boyutlu dizilerde saklanır. ve ayrıca iki tür siyah beyaz resim vardır Gri tonlamalı ve ikili resim.
Gri tonlamalı görüntüler, iki boyutlu bir dizinin gri tonlarından oluşurken, ikili görüntüler siyah veya beyaz piksellerden oluşur.
Bir makinenin görüntüleri tanıması neden zordur?
Bilgisayar görüşü başlı başına zorlu bir görevdir, bir makineye görme, tanıma ve özdeşleşme duygusu vermenin ne kadar zor olduğunu kendiniz hayal edebilirsiniz. Bilgisayarla görmeyi bu kadar zorlaştıran aşağıdaki faktörler vardır.
- Kamera sensörü ve lens sınırlamaları
- Puan varyasyonlarını görüntüleyin
- Aydınlatmanın değiştirilmesi
- Ölçeklendirme
- Oklüzyonlar
- Nesne sınıfı varyasyonları
- Belirsiz Görüntüler / Optik Yanılsamalar
OpenCV uygulaması ve kullanımları
Zorluğa rağmen, Computer Vision'ın birçok başarı öyküsü var
- Robotik Navigasyon - Kendi Kendine Sürüş Arabaları
- Yüz Algılama ve Tanıma
- Arama Motoru Görsel Arama
- Plaka Okuma
- Elyazısı tanıma
- Snapchat ve Yüz Filtreleri
- Nesne tanıma
- Sporda Top ve Oyuncu Takibi
- Ve daha fazlası!
OpenCV'yi Python ve Anaconda ile Yükleme
OpenCV C ++ ile yazılmıştır, ancak bunu C ++ ile uygulamak çok zordur ve bu nedenle onu python olarak yüksek seviyeli bir dille uygulamayı seçiyoruz ve ayrıca Python ile OpenCV uygulamanın en kolay dillerden biri olduğu için ek faydalar da var yeni başlayanlar için ayrıca veri bilimi ve makine öğrenimi uygulamaları için son derece güçlüdür ve ayrıca görüntüleri çok güçlü işlemleri oldukça kolay bir şekilde yapmamızı sağlayan numpy dizilerde depolar.
Temel programlama, High School Level Math'a maruz kalma, bir web kamerası, Python 2.7 veya 3.6 (Anaconda Paketi tercih edilir) ile yararlıdır.
Adım 1. Anaconda Python Paketini İndirin ve Yükleyin
Https://www.anaconda.com/download adresine gidin ve makinenizin Windows, Linux veya Mac hava durumuna göre seçin ve 64 Bit sistemler veya 32 Bit sistemler için python 2.7 veya python 3.7 sürümünü seçebilirsiniz, ancak şimdi bir gün sistemin çoğu 64 bittir.
Python'un Anaconda dağıtımı, Spyder stüdyosu, jupyter dizüstü bilgisayarlar ve anaconda komut istemiyle birlikte gelir, bu da python'u süper kolay hale getirir. Örnekleri yapmak için spyder stüdyosunu kullanıyor olacaktık.
Python 2.7 veya 3.7 arasındaki seçim tamamen tarafsızdır, ancak örnekler için python 3.7 kullanacağız çünkü bu python'un geleceği ve python 2.7 form 2020'yi devralacak, ayrıca kitaplıkların çoğu python 3.7'de geliştiriliyor. akılda python'un gelecekteki yönü. Ayrıca (2/5 = 2.5) gibi temel matematiksel işlemlerde beklenen sonuçları verirken, python 2.7 bunu 2 olarak değerlendirir. Ayrıca print, python 3.7'de bir işlev olarak değerlendirilir (print ("merhaba")), bu yüzden programcılara uygulamalılık sağlar.
Adım 2. OpenCV ile sanal bir platform oluşturmak
Biz gidiyoruz Anaconda istemi kullanarak örümceğin için sanal bir platform oluşturarak OpenCV yüklemek ve burada yüklenen YML dosyası.
YML dosyaları ile ihtiyaç duyulacak tüm paketleri ve kitaplıkları kuracağız, ancak herhangi bir ek paket kurmak isterseniz, o paketin komutunu çalıştırarak anaconda komut istemiyle kolayca kurabilirsiniz.
Windows arama simgenize gidin ve anaconda komut istemi terminalini bulun, onu yeni yüklediğiniz anaconda klasörünüzün içinde bulabilirsiniz.
Daha sonra indirdiğiniz YML dosyanızı bulmanız gerekir ve buradan iki seçeneğiniz vardır ya terminalinizin dizinini YML dosyanızın indirildiği konuma değiştirirsiniz ya da YML dosyanızı anaconda'nızın en çok kurulu olduğu dizine kopyalayabilirsiniz. C: \ sürücüsünde olabilir, YML dosyanızı belirtilen konuma kopyaladıktan sonra, komut isteminizde aşağıdaki komutu ÇALIŞTIRIN
conda env create –f virtual_platform_windows.yml
Sistemim Windows üzerinde çalıştığından, YML dosyası ve komut pencerelere karşılık gelir, ancak pencereleri uygun şekilde linux veya mac ile değiştirerek sisteminize göre değişiklik yapabilirsiniz.
Not: - paket çıkarma yüklemek do hata verirse pytorch ve numpy birinci ve daha sonra yukarıdaki komutunu çalıştırın.
Şimdi anaconda gezginini bulun ve "___ üzerindeki Uygulamalar" açılır menüsü olacaktır ve buradan sanal ortamı seçin ve oradan Spyder stüdyosunu başlatmanız gerekir.
İşte bu, başlamaya hazırsınız!
OpenCV'de Görüntüleri Açma ve Kaydetme
Burada Python'u OpenCV'de kullanmak için bazı temel komutları ve terminolojiyi açıklıyoruz. OpenCV imread, imshow ve imwrite'daki üç temel işlevi öğreneceğiz.
# python'daki yorumlar # sembolü ile verilir
Opencv'yi python'da komutla içe aktar
cv2 içe aktar
Görüntünün yolunu belirterek 'imread' kullanarak bir görüntü yükleyin
image = cv2.imread ('input.jpg')
Şimdi bu görüntü python'da image olarak adlandırdığımız bir değişken olarak yüklenir ve saklanır
Şimdi resim değişkenimizi görüntülemek için, 'imshow' kullanıyoruz ve imshow işlevi için ilk parametre, resim penceresinde gösterilen başlıktır ve adı bir dizge olarak göstermek için ('') içine girilmelidir.
cv2.imshow ('merhaba dünya', resim)
bekleme tuşu, görüntü penceresi açıkken bilgi girmemize izin verir, boş bırakarak devam etmeden önce herhangi bir tuşun basılmasını bekler, sayılar yerleştirerek (0 hariç), pencereyi ne kadar süre açık tuttuğunuzu (süre milisaniye cinsinden burada).
cv2.waitKey ()
'destroyAllWindows' tüm açık pencereleri kapatır, bunun yerleştirilmemesi programınızın askıda kalmasına neden olur.
cv2.destroyAllWindows ()
bunun için numpy kullanacağız, numpy , büyük çok boyutlu dizilere ve matrislere destek eklemek için python programlaması için bir kitaplıktır.
import cv2 #importing numpy np olarak import numpy image = cv2.imread ('input.jpg') cv2.imshow ('hello_world', image) #shape fonksiyonu bir dizinin boyutlarına baktığımızda çok kullanışlıdır , bu bir görüntü baskısının boyutunu veren bir demet döndürür (image.shape) cv2.waitKey () cv2.destroyAllWindows ()
konsol çıkışı - (183, 275, 3), Görüntünün iki boyutu 183 piksel yüksekliğinde ve 275 piksel genişliğindedir ve 3, bu görüntüyü oluşturan diğer üç bileşenin (R, G, B) olduğu anlamına gelir (gösterir renkli görüntülerin üç boyutlu dizilerde saklandığını).
print ('Görüntünün yüksekliği:', (image.shape, 'pikseller')) print ('Görüntünün genişliği:', (image.shape, 'pikseller'))
konsol çıkışı - Görüntünün yüksekliği: (183, "piksel")
Görüntünün genişliği: (275, "piksel")
Düzenlenen görüntüyü OpenCV'ye kaydetme
Dosya adını ve kaydedilecek resmi belirtmek için 'imwrite' kullanıyoruz.
cv2.imwrite ('output.jpg', resim) cv2.imwrite ('output.png', resim)
İlk argüman kaydetmek istediğimiz dosyanın adıdır, {onu bir dizge olarak belirtmek için ('') kullandığımız dosyayı okumak veya kaydetmek için} ve ikinci argüman dosya adıdır.
OpenCV, görüntüyü farklı biçimlerde kaydetmenize olanak tanır.
OpenCV'de Gri Ölçekli Görüntü
Gri ölçekleme, bir görüntünün tam renkten gri tonlarına (siyah ve beyaz) dönüştürülme işlemidir.
Açık durumda, birçok işlev görüntüyü işlemeden önce gri tonlar. Bu, görüntüyü basitleştirdiği, neredeyse bir gürültü azaltma işlevi gördüğü ve görüntüde daha az bilgi olduğu için işlem süresini artırdığı için yapılır (gri tonlamalı görüntüler iki boyutlu dizilerde saklandığı için).
import cv2 # girdi resmimizi yükleyin image = cv2.imread ('input.jpg') cv2.imshow ('orijinal', resim) cv2.waitKey () # gri tonlamaya dönüştürmek için cvtcolor kullanıyoruz gray_image = cv2.cvtColor (resim, cv2.COLOR_BGR2GRAY) cv2.imshow ('grayscale', gray_image) cv2.waitKey () cv2.destroyALLWindows ()
Görüntüyü gri tonlamaya dönüştürmenin daha basit yolu, görüntü adının yanına imread işlevinde 0 bağımsız değişkenini eklemektir.
import cv2 grey_image = cv2.imread ('input.jpg', 0) cv2.imshow ('grayscale', grey_image) cv2.waitKey () cv2.destroyAllWindows ()
cv2 içe aktar numpy np image = cv2.imread ('input.jpg') print (image.shape) cv2.imshow ('original', image) cv2.waitKey () gray_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('grayscale', gray_image) print (gray_image.shape) cv2.waitKey () cv2.destroyALLWindows ()
Konsol çıkışı: - (183, 275, 3) - renkli görüntü için
(183, 275) - gri tonlamalı görüntü için
Dolayısıyla renkli görüntülerin üç boyutlu dizilerle, gri ölçekli görüntülerin ise iki boyutlu dizilerle temsil edildiğini açıkça göstermektedir.
Renk Uzayları
Renk boşlukları, görüntülerin saklanma şeklidir. RGB, HSV, CMYK farklı renk uzaylarıdır, bunlar sadece rengi temsil etmenin basit yollarıdır.
RGB - Kırmızı, Yeşil ve Mavi.
HSV - Ton, Doygunluk ve Değer.
Ve CMYK yaygın mürekkep püskürtmeli yazıcılarda kullanılır.
RGB veya BGR renk alanı
OpenCV'nin varsayılan renk alanı RGB'dir. RGB, farklı yoğunluklarda / parlaklıkta mavi, yeşil ve kırmızı renkleri birleştirerek renkler üreten ek bir renk modelidir. OpenCV'de 8 bit renk derinliği kullanıyoruz.
- Kırmızı (0-255)
- Mavi (0-255)
- Yeşil (0-255)
Ancak OpenCV aslında rengi BGR formatında depolar.
Eğlenceli Bilgi: - İmzasız 32 bit tam sayıların bellekte saklanma şekli nedeniyle bilgisayarlarda BGR sırasını kullanırız, yine de RGB olarak saklanır. Bir rengi temsil eden tam sayı, örneğin: - 0X00BBGGRR, 0XRRGGBB olarak depolanacaktır.
HSV renk alanıHSV (Ton, Doygunluk ve değer / Parlaklık), insanların algıladığı renkleri temsil etmeye çalışan bir renk alanıdır. Renk bilgilerini RGB renk noktalarının silindirik temsilinde depolar.
Ton - renk değeri (0-179)
Doygunluk - Renk canlılığı (0-255)
Değer - Parlaklık veya yoğunluk (0-255)
HSV renk alanı formatı, renk segmentasyonunda kullanışlıdır. RGB'de, belirli bir rengi filtrelemek kolay değildir, ancak HSV, belirli renkleri algıladığımız gibi filtrelemek için renk aralıklarını ayarlamayı çok daha kolaylaştırır.
Ton HSV'deki rengi temsil eder, ton değeri 360 değil 0 - 180 arasındadır, bu nedenle tam daireyi tamamlamaz ve bu nedenle standarttan farklı bir şekilde eşlenir.
Renk aralığı filtreleri
- Kırmızı - (165-15)
- Yeşil - (45-75)
- Mavi - (90-120)
RGB (Kırmızı, Yeşil ve Mavi) renk uzayında depolanan görüntülerin ve dolayısıyla OpenCV'nin bize aynı şeyi gösterdiğini bildiğimiz gibi, ancak opencv'nin RGB formatı hakkında hatırlamamız gereken ilk şey, aslında BGR olduğudur ve bunu, görüntü şekli.
cv2 içe aktar numpy np image = cv2.imread ('input.jpg') # İlk 0,0 piksel için B, G, R değeri B, G, R = görüntü baskısı (B, G, R) baskı (görüntü.shape) # bunu gri tonlamalı görüntüye uygularsak şimdi gray_img = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) print (gray_img.shape) #gray_image 10,50 piksel baskı için piksel değeri (gray_img)
Konsol Çıkışı: baskı (B, G, R) - 6 11 10
baskı (image.shape) - (183, 275, 3)
baskı (gray_img.shape) - (183, 275)
baskı (gray_img) - 69
Şimdi gri tonlamalı bir görüntüde yalnızca iki boyut vardır, çünkü renkli görüntünün üç boyutta saklandığını hatırladığımızdan, üçüncü boyut (R, G, B) iken gri tonlamada yalnızca iki boyut mevcuttur, çünkü (R, G, B) yoktur ve belirli bir piksel konumu için yalnızca tek bir değer elde ederken, renkli görüntüde üç değer elde ederiz.
Başka bir kullanışlı renk alanı HSV'dir
import cv2 image = cv2.imread ('input.jpg') hsv_image = cv2.cvtColor (image, cv2.COLOR_BGR2HSV) cv2.imshow ('HSV image', hsv_image) cv2.imshow ('Hue channel', hsv_image) cv2. imshow ('doygunluk kanalı', hsv_image) cv2.imshow ('değer kanalı', hsv_image) cv2.waitKey () cv2.destroyAllWindows ()
Kodu çalıştırdıktan sonra, üçü ayrı kanallardan biri ve biri kombine HSV görüntüsü olan dört görüntüyü görebilirsiniz.
Ton kanal görüntüsü oldukça karanlık çünkü değeri yalnızca 0 ile 180 arasında değişiyor.
Ayrıca, imshow işlevinin size RGB veya BGR görüntüsünü göstermeye çalıştığını, ancak HSV dönüşümünün bununla çakıştığını unutmayın.
Ayrıca değer kanalı, parlaklığından dolayı görüntünün gri tonlamasına benzer olacaktır.
RGB görüntünün bağımsız bileşenlerini keşfetme
import cv2 image = cv2.imread ('input.jpg') # opencv'in bölme işlevi, görüntüyü her renk indeksini böler B, G, R = cv2.split (görüntü) cv2.imshow ("Kırmızı", R) cv2.imshow ("Yeşil", G) cv2.imshow ("Mavi", B) # birleştirilmiş ayrı renk bileşenlerini birleştirerek orijinal görüntü oluşturmak = cv2.merge () cv2.imshow ("birleştirilmiş", birleştirilmiş) # birleştirilen mavi rengi örnekleme = cv2.merge () cv2.imshow ("mavi güçlendirmeyle birleştirildi", birleştirildi) # tek tek renk bileşenlerinin şeklini temsil eder. # RGB bileşeninin üçüncü öğesi ayrı ayrı temsil edildiğinden çıktı yalnızca yükseklik ve genişlik olacak iki boyut olabilirdi print (B.shape) print (R.şekil) baskı (G.shape) cv2.waitKey (0) cv2.destroyAllWindows ()
Konsol çıktısı: şekil işlevinden görüntü boyutları
(183, 275)
(183, 275)
(183, 275)
Görüntüyü ayrı RGB bileşenine dönüştürme
Aşağıdaki kodda HxW görüntüsünün boyutlarına sahip sıfırlardan oluşan bir matris oluşturduk, sıfır dönüşü sıfırlarla dolu ancak aynı boyutlarda bir dizi.
Bir görüntünün boyutuna baktığımızda şekil işlevi çok kullanışlıdır ve burada o şekil işlevini dilimlemeyi yaptık. Böylece şekil , belirlenen noktalara kadar her şeyi, yani üçüncü olarak görüntünün RGB bileşenini temsil ettiği için görüntünün yüksekliği ve genişliği olan ikinci belirlenmiş noktalara kadar tutabilir ve burada buna ihtiyacımız yok.
cv2 içe aktar np olarak içe aktar numpy image = cv2.imread ('input.jpg') B, G, R = cv2.split (image) zeros = np.zeros (image.shape, dtype = "uint8") cv2.imshow ("KIRMIZI", cv2.merge ()) cv2.imshow ("Yeşil", cv2.merge ()) cv2.imshow ("Mavi", cv2.merge ()) cv2.waitKey (0) cv2.destroyAllWindows ()
Görüntünün Histogram Temsili
Görüntünün histogram gösterimi, görüntü bileşenlerini görselleştirme yöntemidir.
Aşağıdaki kod, görüntüyü, birleşik ve ayrı renk bileşenlerinin renk histogramı aracılığıyla analiz etmenize olanak tanır.
ithalat cv2 np olarak ithalat numpy histogramın araziler oluşturmak için ithalat matplotlib için #Biz ihtiyacı plt olarak matplotlib.pyplot içe resmin = cv2.imread ('input.jpg') (,, Yok,,) Histogram = cv2.calcHist #Biz arsa a histogram, ravel () görüntü dizimizi düzleştirir plt.hist (image.ravel (), 256,) plt.show () # ayrı renk kanallarını görüntüleme color = ('b', 'g', 'r') # biliyoruz rengi ayırın ve histogramda her birini i, sütun numaralandırma (renk) için çizin : histogram2 = cv2.calcHist (,, Yok,,) plt.plot (histogram2, color = col) plt.xlim () plt.show ()
Diyelim anlama calcHist bireysel parametrelerin her biri ile işlevini
cv2.calcHist (resimler, kanallar, maske, geçmiş boyut , aralıklar)
Görüntüler: uint 8 veya float 32 türünde kaynak görüntüsüdür. Köşeli parantez içinde verilmelidir, yani "", aynı zamanda ikinci düzey dizisini de gösterir, çünkü opencv için bir görüntü bir dizi biçimindeki verilerdir.
Kanallar: Ayrıca köşeli parantez içinde verilir. Histogramı hesapladığımız kanalın indeksidir, örneğin giriş gri tonlamalı görüntü ise değeri, geçebileceğiniz renkli görüntüler için veya sırasıyla mavi, yeşil ve kırmızı kanal histogramını hesaplamak için.
Maske: maske görüntüsü. tam görüntünün histogramını bulmak için "yok" olarak verilir. ancak görüntünün belirli bir bölgesinin histogramını bulmak istiyorsanız, bunun için bir maske görüntüsü oluşturmalı ve bunu bir maske olarak vermelisiniz.
Geçmiş boyut: Bu, BIN sayımızı temsil eder. Geçtiğimiz tam ölçek için köşeli parantez içinde verilmesi gerekiyor.
Aralıklar: Bu bizim aralığımızdır, normalde
OpenCV kullanarak Görüntü ve Şekil Çizme
Aşağıda, OpenCV'de çizgi, dikdörtgen, çokgen, daire vb. İçin birkaç örnek verilmiştir.
import cv2 import numpy np olarak # siyah kare görüntü oluşturma = np.zeros ((512,512,3), np.uint8) # bunu siyah beyaz olarak da oluşturabiliriz, ancak herhangi bir değişiklik olmaz image_bw = np.zeros ((512,512), np.uint8) cv2.imshow ("siyah dikdörtgen (renkli)", resim) cv2.imshow ("siyah dikdörtgen (S&B)", image_bw)
Hat
# siyah kare üzerinde bir çizgi oluşturun # cv2.line (resim, başlangıç koordinatları, bitiş koordinatları, renk, kalınlık) # 5 piksel kalınlığında çapraz bir çizgi çizme image = np.zeros ((512,512,3), np.uint8) cv2.line (resim, (0,0), (511,511), (255,127,0), 5) cv2.imshow ("mavi çizgi", resim)
Dikdörtgen
# siyah bir kare üzerinde bir dikdörtgen oluşturun # cv2.rectangle (görüntü, başlangıç koordinatları, bitiş koordinatları, renk, kalınlık) # 5 piksel kalınlığında bir dikdörtgen çizme image = np.zeros ((512,512,3), np.uint8) cv2.rectangle (resim, (30,50), (100,150), (255,127,0), 5) cv2.imshow ("dikdörtgen", resim)
Daire# siyah bir kare üzerinde bir daire oluşturma # cv2.circle (image, center, radius, color, fill) image = np.zeros ((512,512,3), np.uint8) cv2.circle (image, (100,100), (50), (255,127,0), - 1) cv2.imshow ("daire", resim)
Çokgen# çokgen görüntüsü oluşturma = np.zeros ((512,512,3), np.uint8) #lets dört nokta tanımlar pts = np.array (,,,], np.int32) #lets şimdi noktalarımızı gerekli biçimde yeniden şekillendirin polylines pts = pts.reshape ((- 1,1,2)) cv2.polylines (image,, True, (0,255,255), 3) cv2.imshow ("polygon", image)
Metin# opencv kullanarak metin girme # cv2.putText (görüntü, 'görüntülenecek metin', bootom sol başlangıç noktası, yazı tipi, yazı tipi boyutu, renk, kalınlık) image = np.zeros ((512,512,3), np.uint8) cv2. putText (resim, "merhaba dünya", (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3) cv2.imshow ("merhaba dünya", resim) cv2.waitKey (0) cv2.destroyAllWindows ()
Computer Vision ve OpenCV, ele alınacak çok geniş konulardır, ancak bu kılavuz OpenCV ve görüntü işlemeyi öğrenmek için iyi bir başlangıç noktası olacaktır.