OpenCV #2-Matris işlemleri(Codeblock ile)

in #utopian-io7 years ago (edited)

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)

Opencv dersi part1

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
13.png

Kodun açıklaması ile devam edelim
3.png

1.png
Bu satırda image isminde 480 satır 640 sütun ve 3 kanaldan(yani renkli) oluşan bir cv::Mat nesnesi oluşturuyoruz

2.png
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.
1323214.png

Şİmdi tanımlamış olduğumuz imagenin belli bir kısmını, matrisin içindeki sayıları değiştirerek kırmızıya çevirelim.
1r.png
kodun bu kısmı ile imagenin isteğimiz kısmını kırmızıya çevirdik.
1.png

2r.png
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.
3r.png
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.
2.png
3.png
1q.png
Bu kod ile matris uzerinde x ile y uzerinde ayrı ayrı oynuyarak uzun çizgiler çekebilyoruz.
4.png
2q.png
Bu satır ile ile belirlenen satır aralığında y ekseni üzerinde bir cv::Mat nesnesi oluşturuyoruz.
3q.png
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.
1m.png
Bu kod ile blueROI nin kopyasını oluşturduk .
18.png
blueROI nin asıl halini korumuş olduk boylece.

utopian profilim



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Your contribution cannot be approved because it does not follow the Utopian Rules.

  • The content is almost identical to what is described here.
  • The spoken language is not professional, the picture quality is bad.

You can contact us on Discord.
[utopian-moderator]

Coin Marketplace

STEEM 0.18
TRX 0.15
JST 0.028
BTC 63033.54
ETH 2434.49
USDT 1.00
SBD 2.54