Görüntü İşleme-1

Şubat 20, 2020 0 Yazar: alikperislam

RESİM İŞLEME:

import cv2
import numpy
import matplotlib
resim=cv2.imread('cicek.png',0) #resim değişkeni oluşturduk dosyayı cagırdık ,0 yaparsak gri olur.
cv2.imshow("cicek",resim) # remin görünmesi için imshow fonksiyonu kullanıyoruz.
cv2.imwrite("gri.png",resim) #resmin ismini değiştireceksek .imerite foksiyonu kullanıcaz.
cv2.waitKey(0) #resim salisede kaybolmasın diye .waitkey(0) fonksiyonu kullanıyoruz.

ÖZELLİKLER 1:

img=cv2.imread('messi.jpg')
print(str(img.item(100,100,0))) # 100 e 100 lük pixel aralığında 0=mavi renk pixeli için vs..
# mavi=0 yeşil=1 kırmızı=2
img.itemset((100,100,1),255) #bu sayede renk değiştirebiliyoruz nokta halinde...
cv2.imshow("LIONEL MESSi",img)
cv2.waitKey(0)

ÖZELLİKLER 2:

import cv2
import numpy as np
img=cv2.imread('messi2.jpg')
print("pixel sayısı :",str(img.shape)) # img.shape sayesinde pixellerini öğreniyoruz ve renkli ise 3 değilse 2 parametre alıyor.
print("Renkli ton :",str(img.size)) #img.size bize ton sayısını söylüyor
istenilen_alan=img[250:350,200:320] # resimde ki x ve y koordinatlarına göre bir alan seçiyoruz
img[150:250,150:270]=istenilen_alan
cv2.imshow("messsi",img)
img=cv2.imread('messi2.jpg')
print("Gri ton :",str(img.size))
print("veri tipi :",img.dtype) # veri tpinin ne olduğunu söyler örneğin : uint8 gibi...
cv2.imshow("resim",img)
cv2.waitKey(0)

B-G-R MANTIĞI :

import cv2
import numpy as np
resim=cv2.imread('izzet.jpg')
print(resim.size) #resmimizin pixel sayısını belirtiyor. 1.008.000 oluyor bu fotoğrafta sebebi 672*500*3 ten geliyor
#resmin genişliği*yüksekliği*renk kanalı sayısı == resmin pixel sayısı.
print(type(resim)) #resmimizin tipinin ne olduğunu(dizi vs.) belirtiyor.
print(resim) #resmimizin B_G_R olarak matris karşılığını belirtiyor.
print(resim.dtype) #resmimizin veri tipinin ne olduğunu belirtir(uint8 yani --> bir kanalın 0-255 arasında 256 adet renk skalası alacağı anlamına gelir )
# B_G_R mantığın da her biri 256 renk skalası alacağından 1 pixel maximum 256**3 ten 16 milyon skala alabilir.
# 0---> siyah iken 255--->beyazdır 0-255 arasında renk değişimi görülür.
print(resim.shape) # resmimizin genişlik-yükseklik-renk kanalı sayısını veriri (672-500-3)
# eğer resmimiz gri tonda olsaydı tamamen resim.shape dediğim zaman sadce genişlik ve yükseklik değerini verirdi.
print(resim.item(100,100,1)) # 0 1 2 = Blue Green Red 100*100 pixelinde ki yeşil oranı 17 çıktı mesela.
print(resim.item(300,300,0)) #Blue =84
print(resim.item(300,300,1)) #Green =168
print(resim.item(300,300,2)) #Red =244
# not : eğer renk gri ise resimde o zaman tüm renk skalası aynı olur tek bir pixelde 138-138-138 griyi veriri mesela.
cv2.imshow("izzet",resim)
cv2.waitKey()

ÇERÇEVE :

import cv2
import numpy as np
from matplotlib import pyplot as plt
mavi=[0,0,255]
img=cv2.imread('CVresim.png')
replicate=cv2.copyMakeBorder(img,60,30,60,30,cv2.BORDER_REPLICATE) #aynısının çevresini arttırarak devam ediyor buyutuyor.
reflect=cv2.copyMakeBorder(img,30,30,30,30,cv2.BORDER_REFLECT) #ayna varmış gibi.
reflect101=cv2.copyMakeBorder(img,30,50,30,30,cv2.BORDER_REFLECT101) #yine ayna varmış gibi çerçevede.
wrap=cv2.copyMakeBorder(img,30,30,30,30,cv2.BORDER_WRAP) #sanki aynı resimden dört bir aynında daha varmış gibi.
constant=cv2.copyMakeBorder(img,30,30,30,30,cv2.BORDER_CONSTANT,value=mavi) #sabit bir çerceve rengi istersek değiştiririz value=mavi ile
### tek tek çalıştırmak yerine hepsini bir arada görmek için için matplotlib kullanıcaz(grafik çıkaracak bir tane)...
plt.subplot(231),plt.imshow(img,'gray'),plt.title('orijinal')
#2 satır 3 sütun olacak ve ilk resim bu anlamında.
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('replicate')
plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('reflect')
plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('reflect101')
plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('wrap')
plt.subplot(236),plt.imshow(constant,'gray'),plt.title('constant')
plt.show() #plt'nin çalıştırması için...

PİXEL DEĞİŞTİRME :

import cv2
import numpy as np
resim=cv2.imread('tony.jpg')
resim1=cv2.imread('tony.jpg')
resim2=cv2.imread('tony.jpg')
cv2.imshow("TONY",resim)
print("resimin boyutu :",resim.size)
print("yükseklik : {}\ngenişlik : {}\nkanal : {}".format(resim.shape[0],resim.shape[1],resim.shape[2]))
print("resmin veri tipi :",resim.dtype)
print(resim[50,50]) # x=50 ve y=50 koordinatında ki B_G_R değerlerini verecek.
resim1[50,50]=[255,255,255] # böyle yaptığımız zaman 50 ye 50 pixelinde rengi beyaz yapmış oluyoruz.
cv2.imshow("TONY2",resim1)
resim2[:]=[255,255,255] # böyle yaptığımız zaman bütün resmin pixellerini beyaz yapmış bulunuyoruz.
cv2.imshow("TONY3",resim2)
bolge=resim[50:150,105:190] # x1:x2,y1:y2 koordinatları üzerinden bölge seçmiş oluyoruz.
resim[0:100,0:85]=bolge # bu sayede resmin belli bir bölgesine kestiğimiz bölgeyi copy/paste yöntemi gibi kopyalıyoruz.
for i in range(200):
resim[60,i]=[200,200,200] # for döngüsü sayesinde de düz bir çizgi çizmiş oluyoruz beyaz renkte.
print(cv2.split(resim)) #cv2.split(resim) fonksiyonunda arrayleri yazdıracak bunlar B_G_R arrayleri
b,g,r=cv2.split(resim) # b,g,r diyerek dizileri atadık
#şimdi de b,g,r resimlerimizi göstermek için imshow fonksiyonunu kullanıcaz ve renklerin farkını görücez resimde
cv2.imshow("tony orijinal",resim)
cv2.imshow("tony b",b)
cv2.imshow("tony g",g)
cv2.imshow("tony r",r)
# resimleri eski haline getirmek ve yanı B_G_R'ı birleştirmek için merge edeceğiz.
yeni_resim=cv2.merge((b,g,r))

#resim[:,:,0]=255 #resimde ki mavi tonların hepsini fullemiş olduk maviye
#resim[:,:,1]=255 #resimde ki yeşil tonların hepsini fullemiş olduk yeşile
#resim[:,:,2]=255 #resimde ki kırmızı tonların hepsini fullemiş olduk kırmızıya
resim[50:150,105:190,0]=255 # böyle yaparsak resmin o bölgesinde ki mavi tonları sadece fullemiş oluruz.

cv2.imshow("bölge",bolge)
cv2.imshow("TONY",resim)
cv2.imshow("merge",yeni_resim)
cv2.waitKey(0)
cv2.destroyAllWindows()