↓もし、良かったらSNSでの紹介よろしくお願いします。

【OpenCV】基本図形を一通り描いてみた。

bootstrap

基本的な図形をOpenCVで描いてみました。
画像付きで解説しています。

線を引く

import cv2
import numpy as np
img = np.zeros((480,640,3), np.uint8)

# cv2.line(img,端点1(x,y),端点2,色,線の太さ[,線の種類])
# 8近傍連結(デフォルト値)
cv2.line(img,(100,100),(540,155),(0,0,255),5)
# 4近傍連結
cv2.line(img,(100,200),(540,255),(0,255,0),5,cv2.LINE_4)
# アンチエイリアス
cv2.line(img,(100,300),(540,355),(255,0,0),5,cv2.LINE_AA)

cv2.imshow('window',img)
cv2.waitKey(0)

線の滑らかさは、4近傍連結→8近傍連結→アンチエイリアスとなってます。

長方形を描く

import cv2
import numpy as np
img = np.zeros((480,640,3), np.uint8)

# cv2.rectangle(画像,左上の座標(x,y),右下の座標,色,線の太さ[,線の種類])
cv2.rectangle(img,(50,50),(240,240),(0,0,255),5)

# 線の太さを-1にすると塗りつぶし
cv2.rectangle(img,(250,100),(570,290),(255,0,0),-1)

# 線の種類をアンチエイリアス
cv2.rectangle(img,(100,300),(400,450),(0,255,0),3,cv2.LINE_AA)

cv2.imshow('window',img)
cv2.waitKey(0)
cv2.imwrite('rect.png',img)

円を描く

import cv2
import numpy as np
img = np.zeros((480,640,3), np.uint8)

# cv2.circle(画像,円の中心,半径,色,線の太さ[,線の種類])
cv2.circle(img,(130,130),100,(0,0,255),3)

# 線の太さを-1にすると塗りつぶし
cv2.circle(img,(470,130),70,(0,255,0),-1)

# 線の種類をアンチエイリアス
cv2.circle(img,(330,300),100,(255,0,0),3,cv2.LINE_AA)

# 塗りつぶし+線の種類をアンチエイリアス
cv2.circle(img,(520,320),70,(0,255,255),-1,cv2.LINE_AA)

cv2.imshow('window',img)
cv2.waitKey(0)
cv2.imwrite('circle.png',img)

円弧・楕円

import cv2
import numpy as np
img = np.zeros((480,640,3), np.uint8)

# cv2.ellipse(画像,円の中心,(長径,短径),描画開始角度,描画終了角度,色,線の太さ[,線の種類])
cv2.ellipse(img,(140,120),(100,50),0,0,360,(0,0,255),4)

# 線の太さを-1にすると塗りつぶし
cv2.ellipse(img,(440,170),(130,50),0,20,260,(0,255,0),-1)

# 線の種類をアンチエイリアス
cv2.ellipse(img,(230,300),(150,50),0,0,180,(255,0,0),3,cv2.LINE_AA)

cv2.imshow('window',img)
cv2.waitKey(0)
cv2.imwrite('elipse.png',img)