Merhaba,
Bu post altında çeşitli OPEN CV notları olacaktır.
VGA = 640*480 , HD = 1280*750 , FHD = 1920*1080 ,4K = 3840*2160
Binary Image 2 Levels 0=Black 1=White
8 Bits -> 2^8 = 256 --> 0 ile 255 arasındaki tonlar. 0 Black 255 White
RGB VGA = 640*480*3 Channel (Red,Green,Blue)
Resim video kamera işlemleri
import cv2
img = cv2.imread("0.png") # resmi içeri aktar
cv2.imshow("pencere adı", img) #aktarılan resmi göster
cv2.waitKey(0)
---------------------------
cap = cv2.VideoCapture("video.mp4") # videoyu içeri aktar
while True:
success, img = cap.read()
cv2.imshow("Video",img)
if(cv2.waitKey(1) & 0xFF == ord('q')):
break
-------------------------
cap = cv2.VideoCapture(0) # varsayılan kamerayı alır
cap.set(3,640) #genişlik
cap.set(4,480) #yükseklik
cap.set(10,100) #aydınlık ayarı
while True:
success, img = cap.read()
cv2.imshow("Video",img)
if(cv2.waitKey(1) & 0xFF == ord('q')):
break
BASİT FONKSİYONLAR
import cv2
import numpy as np
#Basic Functions
img = cv2.imread("fener.png")
kernel = np.ones((5,5),np.uint8)
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # gri tonlama
imgBlur = cv2.GaussianBlur(imgGray, (7,7), 0) #bulanıklaştırma
imgCanny = cv2.Canny(img, 150, 200)#kenar bulma
imgDialation = cv2.dilate(imgCanny,kernel,iterations=1) #Genişleme
imgEroded = cv2.erode(imgDialation,kernel,iterations=1) #Erozyon
cv2.imshow("Orjinal",img)
cv2.imshow("Gray",imgGray)
cv2.imshow("Blur",imgBlur)
cv2.imshow("Canny",imgCanny)
cv2.imshow("Dialation",imgDialation)
cv2.imshow("Eroded",imgEroded)
cv2.waitKey(0)
PİKSEL İŞLEMLERİ
import cv2
import numpy as np
#Piksel İşlemleri
img = cv2.imread("fener.png")
print(img.shape) # (410,410,3)(Genişlik,Yükseklik,BGR)
imgResize = cv2.resize(img,(300,200)) #(width,height)
imgCropped = img[0:200,200:400] #(yBasla:yBitis, xBasla:xBitis)
cv2.imshow("Orjinal",img)
cv2.imshow("Resize",imgResize)
cv2.imshow("Cropped",imgCropped)
cv2.waitKey(0)
SHAPES AND TEXTS - Şekil çizme ve yazı ekleme
import cv2
import numpy as np
#Şekil çizimleri ve resim üzerine yazı yazma
img = np.zeros((512,512))
print(img.shape) #(512,512)
#renk işlevselliği verebilmek için 3 kanal vermeliyiz.
img = np.zeros((512,512,3),np.uint8) #uint8 0 ile 255 arası değer alabiliyor
#renk kodları BGR
img[:] = 255,0,0 # her elemana bu renk kodu vererek mavi renk oluşturduk
img[200:300,100:300]=0,255,0 # belirlenen noktalar arasını doldurduk
#çizgi(resim,baş koordinat, bit koordinat,renk,kalınlık)
cv2.line(img,(0,0),(300,300),(0,0,255),8)
#img.shape[0]=yükselik, img.shape[1] = genişlik, img.shape[2]= kanal sayısı
cv2.line(img,(0,0),(img.shape[1],img.shape[0]),(0,255,255),2)
#dikdörtgen çizimi
cv2.rectangle(img,(0,0),(250,350),(255,255,0),3)
#cv2.rectangle(img,(0,0),(250,350),(255,255,0),cv2.FILLED) #içini doldur
#daire çizimi
cv2.circle(img,(400,50),30,(255,255,255),5)
#yazı yazma
cv2.putText(img, "Open CV", (300,200), cv2.FONT_HERSHEY_COMPLEX, 1, (0,150,0),1)
cv2.imshow("Image",img)
cv2.waitKey(0)
GÖRÜNÜM DÜZENLEME Perspektif alma
#resim kesip döndürme
img = cv2.imread("iskambil.jpg")
width,height=250,350
pts1 = np.float32([[461,144],[787,231 ],[344,609],[669,691]])
pts2 = np.float32([[0,0],[width,0 ],[0,height],[width,height]])
matrix = cv2.getPerspectiveTransform(pts1,pts2)
imgOutput = cv2.warpPerspective(img, matrix, (width,height))
cv2.imshow("Resim",img)
cv2.imshow("Output",imgOutput)
cv2.waitKey(0)
#461,144 sol ust,787,231 sağ üst,344,609 sol alt,669,691 sağ alt
GÖRÜNTÜ BİRLEŞTİRME
# Bu fonksiyonu kullanarak kolayca boyutlandırıp birleştirme yapılabilir.
def stackImages(scale,imgArray):
rows = len(imgArray)
cols = len(imgArray[0])
rowsAvailable = isinstance(imgArray[0], list)
width = imgArray[0][0].shape[1]
height = imgArray[0][0].shape[0]
if rowsAvailable:
for x in range ( 0, rows):
for y in range(0, cols):
if imgArray[x][y].shape[:2] == imgArray[0][0].shape [:2]:
imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale)
else:
imgArray[x][y] = cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale)
if len(imgArray[x][y].shape) == 2: imgArray[x][y]= cv2.cvtColor( imgArray[x][y], cv2.COLOR_GRAY2BGR)
imageBlank = np.zeros((height, width, 3), np.uint8)
hor = [imageBlank]*rows
hor_con = [imageBlank]*rows
for x in range(0, rows):
hor[x] = np.hstack(imgArray[x])
ver = np.vstack(hor)
else:
for x in range(0, rows):
if imgArray[x].shape[:2] == imgArray[0].shape[:2]:
imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale)
else:
imgArray[x] = cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None,scale, scale)
if len(imgArray[x].shape) == 2: imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR)
hor= np.hstack(imgArray)
ver = hor
return ver
#-------------------------------
img = cv2.imread("fener.png")
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#imgHor = np.hstack((img,img)) #yatay iki resimi birleştirdi.
#imgVer = np.vstack((img,img)) #dikey iki resimi birleştirdi.
#cv2.imshow("Yatay",imgHor)
#cv2.imshow("Dikey",imgVer)
StackedImages = stackImages(0.6,([img,imgGray],
[imgGray,img]))
cv2.imshow("Staked Images", StackedImages)
cv2.waitKey(0)
Görüntü Maskeleme
path = 'fener.png'
def empty(a):
pass
cv2.namedWindow("TrackBars")
cv2.resizeWindow("TrackBars",640,240)
cv2.createTrackbar("Hue Min", "TrackBars", 0, 179, empty)
cv2.createTrackbar("Hue Max", "TrackBars", 179, 179, empty)
cv2.createTrackbar("Sat Min", "TrackBars", 0, 255, empty)
cv2.createTrackbar("Sat Max", "TrackBars", 255, 255, empty)
cv2.createTrackbar("Val Min", "TrackBars", 0, 255, empty)
cv2.createTrackbar("Val Max", "TrackBars", 255, 255, empty)
while True:
img = cv2.imread(path)
imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
h_min = cv2.getTrackbarPos("Hue Min", "TrackBars")
h_max = cv2.getTrackbarPos("Hue Max", "TrackBars")
s_min = cv2.getTrackbarPos("Sat Min", "TrackBars")
s_max = cv2.getTrackbarPos("Sat Max", "TrackBars")
v_min = cv2.getTrackbarPos("Val Min", "TrackBars")
v_max = cv2.getTrackbarPos("Val Max", "TrackBars")
lower = np.array([h_min,s_min,v_min])
upper = np.array([h_max,s_max,v_max])
mask = cv2.inRange(imgHSV, lower, upper)
imgResult = cv2.bitwise_and(img,img,mask=mask)
StackedImages = stackImages(0.6,([img,imgHSV], [mask,imgResult]))
cv2.imshow("Staked Images", StackedImages)
cv2.waitKey(1)
#Contours - Shape Detection - Bir görüntüdeki şekilleri tespit etme
#Köşe noktalarını tespit edip nesnenin şeklinin ne olduğunun bulunması
import cv2
import numpy as np
def stackImages(scale,imgArray):
rows = len(imgArray)
cols = len(imgArray[0])
rowsAvailable = isinstance(imgArray[0], list)
width = imgArray[0][0].shape[1]
height = imgArray[0][0].shape[0]
if rowsAvailable:
for x in range ( 0, rows):
for y in range(0, cols):
if imgArray[x][y].shape[:2] == imgArray[0][0].shape [:2]:
imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale)
else:
imgArray[x][y] = cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale)
if len(imgArray[x][y].shape) == 2: imgArray[x][y]= cv2.cvtColor( imgArray[x][y], cv2.COLOR_GRAY2BGR)
imageBlank = np.zeros((height, width, 3), np.uint8)
hor = [imageBlank]*rows
hor_con = [imageBlank]*rows
for x in range(0, rows):
hor[x] = np.hstack(imgArray[x])
ver = np.vstack(hor)
else:
for x in range(0, rows):
if imgArray[x].shape[:2] == imgArray[0].shape[:2]:
imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale)
else:
imgArray[x] = cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None,scale, scale)
if len(imgArray[x].shape) == 2: imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR)
hor= np.hstack(imgArray)
ver = hor
return ver
#Contours - Shape Detection - Bir görüntüdeki şekilleri tespit etme
#Köşe noktalarını tespit edip nesnenin şeklinin ne olduğunun bulunması
def getContours(img):
contours,hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for cnt in contours:
area = cv2.contourArea(cnt)
print(area)
cv2.drawContours(imgContour, cnt, -1, (255,0,0),3)
peri = cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt,0.02*peri, True)
objCor = len(approx)
x, y, w, h = cv2.boundingRect(approx)
if objCor == 3: objectType = "Ucgen"
elif objCor == 4:
aspRatio = w/float(h)
if aspRatio>0.95 and aspRatio <1.05: objectType="Kare"
else:objectType="Dikdortgen"
elif objCor > 4:objectType="Daire"
else: objectType="None"
cv2.rectangle(imgContour, (x,y), (x+w,y+h), (0,255,0),3)
cv2.putText(imgContour,objectType,(x+(w//2)-10,y+(h//2)-10),cv2.FONT_HERSHEY_COMPLEX,0.5,(0,0,0),2)
path = 'shapes.png'
img = cv2.imread(path)
imgContour = img.copy()
imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgBlur = cv2.GaussianBlur(imgGray, (7,7), 1)
imgCanny = cv2.Canny(imgBlur,50,50)
getContours(imgCanny)
imgBlank = np.zeros_like(img)
StackedImages = stackImages(0.6,([img,imgGray,imgBlur],
[imgCanny,imgContour,imgBlank]))
cv2.imshow("Staked Images", StackedImages)
cv2.waitKey(0)
Videolara FPS Ekleme
import cv2
import time
pTime=0
cap = cv2.VideoCapture("video.mp4")
while True:
ret, frame = cap.read()
height, width, _ = frame.shape
#FPS
cTime =time.time()
fps = 1 / (cTime-pTime)
pTime=cTime
cv2.putText(frame, 'FPS:' + str(int(fps)),(20,70),cv2.FONT_HERSHEY_PLAIN,3,(0,255,0),3)
cv2.imshow("Frame", frame)
key = cv2.waitKey(30)
if key == 27:
break
cap.release()
cv2.destroyAllWindows()
1 yorum:
Write yorum10/10
ReplyConversionConversion EmoticonEmoticon