Python-OpenCV-描画(線、長方形、円の描画、テキストの追加)

目次

パラメータの説明

1.線を引く 

2.長方形

3.サークル

4.楕円

5.ポリゴン

6.テキストまたは長方形にテキストを追加します


パラメータの説明

形状を描画するための関数には、いくつかの一般的なパラメーターがあります。

  • img:描かれる形の絵
  • 色:描画する色
    • カラー画像は、青が(255,0,0)などのBGR値のセットに渡されます。
    • グレースケール画像、グレースケール値を渡すだけ
  • 太さ:線幅、デフォルトは1です。長方形/円などの閉じた形状の場合は、-1を渡して塗りつぶされた形状を示します。
  • lineType:線種、3つのパラメーターはオプションですcv2.LINE_4cv2.LINE_8cv2.LINE_AA

1.線を引く 

cv2.line(img、ps、pe、color、thickness、lineType、shift)

ps:直線の始点。これは(X、Y)と同様の座標点であることに注意してください。pe:上記と同じ直線の終点。

2.長方形

cv2.rectangle(img、ps、pe、color、thickness、lineType、shift)

ps:長方形の左上隅の座標、pe:長方形の右下隅の座標、shift:座標点の小数点以下の桁数

3.サークル

cv2.circle(img、center、radius、color、thickness、lineType、shift)

中心:中心座標、半径:円の半径値、シフト:中心座標と半径の小数点以下の桁数

4.楕円

cv2.ellipse(img、center、axes、rotateAngle、startAngle、endAngle、color、thickness、lineType、shift)

center:楕円の中心の座標、これは座標値であることに注意してください。axes:楕円の長軸と短軸の長さ、これは情報のタプルです。

rotateAngle:回転する楕円の角度、startAngle:楕円弧の開始角度、endAngle:楕円弧の終了角度

OpenCVの原点は左上隅にあるため、ここでの角度は時計回りに計算されます

5.ポリゴン

cv2.polylines(img、pts、isClosed、color、thickness、lineType、shift)

pts:ポリゴンの両側にある座標点のリスト。これはnumpy配列タイプです。

isClosed:値はTrueまたはFalseです。Trueの場合は閉じたポリゴンを意味し、Falseの場合は閉じません。

ポリゴンを描画するには、最初に頂点の座標が必要です。これらのポイントを形状のROWSx1x2配列にグループ化します。ここROWSで、は頂点の数であり、そのタイプはint32である必要がありますここでは、4つの頂点を持つ小さな黄色のポリゴンを描画しました。

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv.polylines(img,[pts],True,(0,255,255))

複数の線を描画する必要がある場合は、cv2.polylines()を使用する方がcv2.line()よりもはるかに効率的です。次に例を示します。

# 使用cv2.polylines()画多条直线
line1 = np.array([[100, 20],  [300, 20]], np.int32).reshape((-1, 1, 2))
line2 = np.array([[100, 60],  [300, 60]], np.int32).reshape((-1, 1, 2))
line3 = np.array([[100, 100],  [300, 100]], np.int32).reshape((-1, 1, 2))
cv2.polylines(img, [line1, line2, line3], True, (0, 255, 255))

6.テキストまたは長方形にテキストを追加します

cv2.putText(img、text、org、fontFace、fontScale、color、thickness、lineType、bottomLeftOrigin)

text:テキストコンテンツ、org:画像内のテキストの左下隅の座標

fontFace:フォントタイプ、オプションのパラメータは次のとおりです

FONT_HERSHEY_SIMPLEX、FONT_HERSHEY_PLAIN、FONT_HERSHEY_DUPLEX、FONT_HERSHEY_COMPLEX、FONT_HERSHEY_TRIPLEX、FONT_HERSHEY_COMPLEX_SMALL、FONT_HERSHEY_SCRIPT_SIMPLEX、またはFONT_HERSHEY_SC

fontScale:スケーリング比。値にプログラムフォントのデフォルトサイズを掛けて、フォントサイズを取得します。

bottomLeftOrigin:デフォルトはtrueです。これは、画像データの原点が左下隅にあることを意味します。Falseの場合、画像データの原点が左上隅にあることを意味します。

import cv2 as cv
import numpy as np

img=np.zeros([512,512,3],np.uint8) ##创建一副黑色的图片

"""画线"""
cv.line(img,(0,32),(512,89),(255,0,0),3,cv.LINE_8)

"""画矩阵"""
tangle=cv.rectangle(img, (84, 45), (210, 228), (0, 255, 0), 3,cv.LINE_4)

"""画圆"""
cv.circle(img, (447, 63), 63, (0, 0, 255), -1)

"""画椭圆"""
cv.ellipse(img, (256, 256), (100, 50), 90, 0, 360, (255, 0, 0), 2)

"""画多边形"""
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv.polylines(img,[pts],True,(0,255,255))

"""在图片上加文字"""
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img,'OpenCV',(10,500), font, 2,( 0,255,0),2,cv.LINE_AA)

"""矩形框上加文字"""
cv.putText(tangle,'OpenCV',(84, 40), font, 0.5,( 0,255,0),1,cv.LINE_AA)

"""使用cv.polylines()画多条直线"""
line1 = np.array([[100, 20],  [300, 20]], np.int32).reshape((-1, 1, 2))
line2 = np.array([[100, 60],  [300, 60]], np.int32).reshape((-1, 1, 2))
line3 = np.array([[100, 100],  [300, 100]], np.int32).reshape((-1, 1, 2))
cv.polylines(img, [line1, line2, line3], True, (0, 255, 255))

cv.imshow('img',img)
cv.waitKey(0)
cv.destroyAllWindows()

おすすめ

転載: blog.csdn.net/zangba9624/article/details/105959943