Opencv — Python #4
Serimin dörüncü makalesinde Opencv de çizim işlemlerinin nasıl yapıldığına bakacağız.
In [1]:
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
In [2]:
# İlk olarak siyah ekran oluşturyoruz
img = np.zeros((512,512,3), np.uint8)
plt.imshow(img)
plt.axis("off")
plt.show()

Çizim işlemini gerçekleştirten fonksiyonlar ve işlevleri:
cv.line() : Çizgi çizer.
5 parametre alır
- çizim yapılacak görüntü
- başlangıç noktası
- bitiş noktası
- renk
- çizginin kalınlığı
cv.circle() : Çember çizer.
5 parametre alır
- çizim yapılacak görüntü
- merkez noktası
- yarı çap
- renk
- çizginin kalınlığı
cv.rectangle() : Dörtgen çizer.
5 parametre alır
- çizim yapılacak görüntü
- başlangıç noktası
- bitiş noktası
- renk
- çizginin kalınlığı
cv.ellipse() : Elips çizer.
7 parametre alır
- çizim yapılacak görüntü
- merkez noktası
- açı
- açının başlangıç noktası
- açının bitiş noktası
- renk
- çizginin kalınlığı
cv.polylines : Birden fazla noktayı birleştirmemizi sağlar.
5 parametre alır
- çizim yapılacak görüntü
- çizim yapılacak noktaları tutan array
- tüm noktaların birleştirilip birleştirilmeyeceğini belirtiriz. Eğer true olursa kapalı bir şekil oluşur false olursa ilk ve son noktaları birleştirmez.
- renk
- çizginin kalınlığı
cv.putText() : Görsel üzerine text eklememizi sağlar
7 parametre alır
- çizim yapılacak görüntü
- text
- yazılacak nokta
- yazı tipi
- font
- renk
- çizginin kalınlığı
In [3]:
cv.line(img,(0,256),(512,256),(255,0,0),3)
cv.putText(img,'Line',(20,250), cv.FONT_HERSHEY_SIMPLEX, 1,(255,0,0),1)
cv.circle(img, (256,256), 128, (255,255,0), 3)
cv.putText(img,'Circle',(225,160), cv.FONT_HERSHEY_SIMPLEX, 1,(255,255,0),1)
cv.rectangle(img,(120,120),(390,390),(0,255,0),3)
cv.putText(img,'Rectangle',(115,115), cv.FONT_HERSHEY_SIMPLEX, 1,(0,255,0),1)
cv.ellipse(img,(256,256),(100,50),1,0,360,(0,0,255),3)
cv.ellipse(img,(256,256),(100,50),1,0,180,(0,255,255),3)
cv.putText(img,'Ellipse',(240,250), cv.FONT_HERSHEY_SIMPLEX, 1,(0,0,255),1)
pts = np.array([[10,10],[10,500],[500,500],[500,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv.polylines(img,[pts],True,(255,0,255),3)
cv.polylines(img,[pts],False,(255,255,255),3)
cv.putText(img,'Polyline',(40,40), cv.FONT_HERSHEY_SIMPLEX, 1,(255,255,255),1)
plt.figure(figsize=(11,11))
plt.imshow(img)
plt.show()

Yukarıda en fazla kullanılan parametreleri belirtim. Başka hangi parametreler aldığını bilmek istiyorsanız dokümantasyona bakabilirsiniz ya da aşağıdaki gibi sorgulama işlemi yapabilirsiniz.
In [4]:
?cv.polylines
Docstring:
polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) -> img
. @brief Draws several polygonal curves.
.
. @param img Image.
. @param pts Array of polygonal curves.
. @param isClosed Flag indicating whether the drawn polylines are closed or not. If they are closed,
. the function draws a line from the last vertex of each curve to its first vertex.
. @param color Polyline color.
. @param thickness Thickness of the polyline edges.
. @param lineType Type of the line segments. See #LineTypes
. @param shift Number of fractional bits in the vertex coordinates.
.
. The function cv::polylines draws one or more polygonal curves.
Type: builtin_function_or_method
In [5]:
?cv.line
Docstring:
line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) -> img
. @brief Draws a line segment connecting two points.
.
. The function line draws the line segment between pt1 and pt2 points in the image. The line is
. clipped by the image boundaries. For non-antialiased lines with integer coordinates, the 8-connected
. or 4-connected Bresenham algorithm is used. Thick lines are drawn with rounding endings. Antialiased
. lines are drawn using Gaussian filtering.
.
. @param img Image.
. @param pt1 First point of the line segment.
. @param pt2 Second point of the line segment.
. @param color Line color.
. @param thickness Line thickness.
. @param lineType Type of the line. See #LineTypes.
. @param shift Number of fractional bits in the point coordinates.
Type: builtin_function_or_method
Kullanılan Kaynaklar
https://docs.opencv.org/master/dc/da5/tutorial_py_drawing_functions.html