OpenCV #2-Matris işlemleri(Codeblock ile)
Opencv kodlarını burdan bulabilrsiniz.
Görüntü işleme ile ilgili yüzlerce temel ve ileri seviyediki fonksiyonu, optimize edilmiş şekilde barındırmakta. Ben bunların belli bir kısmını size anlatmayı düşünüyorum.Opencv programlama dillerinde olduğu gibi işletim sistemlerinde de çok geniş yelpazeye sahip. Windows, Linux ve MacOSx gibi yaygın olan işletim sistemleri uzerinde çalışabilmektedir. Opencv nin mutlaka üzerinde durulmasını düşünüyorum açıkçası.
What Will I Learn?(Neler Öğreneceğim?)
- Matris oluşturma
- Matrisler uzerinde işlemler
Requirements(Gereksinimler)
Difficulty(Zorluk derecesi)
- Basic-temel
Tutorial Contents(Yazının İçeriği)
Opencv 'de matris oluşturup o matrisler ile resimler üzerinde işlem yapacağız.
Curriculum(Bu konuyla ilgili tüm içeriklerim)
2 şekilde matris oluşturabiliriz.
cv:Mat image(120,160, CV_8UC1); Bu kod ile 120 satır 160 sutuna sahip tek kanallı uchar değerinden oluşan bir oluşturur.
cv::Mat img;
img.create(480,640, CV_8UC3); BU kod ie 480 satır 640 sutuna sahip üç kanallı (unsigned char) değerinden oluşan birmatris oluşturur.
Renkli bir görüntü genellikle RGB, yani kırmızı yeşil mavi olmak üzere 3 kanaldan kodlanır. 3 katmanlı bir matris gibi düşünebilirsiniz. Ama Opencv'de bu sıralama BGR şeklindedir.
Bugün ki matrisler ile ilgili olan çalışmam
Kodun açıklaması ile devam edelim
Bu satırda image isminde 480 satır 640 sütun ve 3 kanaldan(yani renkli) oluşan bir cv::Mat nesnesi oluşturuyoruz
Burda image nesnemize verilen alt ve üst sınır aralığında üretilen rastgele sayılar ile dolduruyoruz. Bu girilen sayılar renkleri ifade ediyor. Görüntümüz 3 kanallı olduğundan 3 değerli bir Scalar tanımladık. Scalar max 4 değer alabilir. Oluşan image nin çıktısı aşağıdaki gibi.
Şİmdi tanımlamış olduğumuz imagenin belli bir kısmını, matrisin içindeki sayıları değiştirerek kırmızıya çevirelim.
kodun bu kısmı ile imagenin isteğimiz kısmını kırmızıya çevirdik.
Yukarda redROI isimli bir cv:Mat tanımladık. Tanımladığımız alan imagenin belirlediğimiz bir kısmını içeriyor. Bu kısmı belirlemek için cv::Rect kullanıyoruz. Görüntü üzerinde diktörtgen oluşturyoruz bununla. (40,20) noktasından başlayan bir dikdörtgen tanımladık.Boyutlarını İmage.cols nesnenin enine boyutunu, İmage.rows ise nesnenin yüksekliğinin boyunu belirliyor.
Bu kod ile redRoI nesnemizin tamamına kırmızı değerini atadık. redROI image uzerindeki belirlediğimz alandı.
Benzer şekilde redROI içine greenROI onun içinde blueROI tanımlayıp image nesnemizi renklendirdik.
Bu kod ile matris uzerinde x ile y uzerinde ayrı ayrı oynuyarak uzun çizgiler çekebilyoruz.
Bu satır ile ile belirlenen satır aralığında y ekseni üzerinde bir cv::Mat nesnesi oluşturuyoruz.
Bu satır ile ile belirlenen satır aralığında x ekseni üzerinde bir cv::Mat nesnesi oluşturuyoruz.
Yukardaki kısımda yaptığımız bütün işlemler aynı veri üzerinde olduğu için birbirlerini etkiledi. Yapacağımız işlemlerin asıl veriyi değiştirmesini istemiyorsak ondan bir kopya oluştururuz.
Bu kod ile blueROI nin kopyasını oluşturduk .
blueROI nin asıl halini korumuş olduk boylece.
Posted on Utopian.io - Rewarding Open Source Contributors
Your contribution cannot be approved because it does not follow the Utopian Rules.
You can contact us on Discord.
[utopian-moderator]