20250422/佐藤綺羅/描画関数
の編集
Top
/
20250422
/
佐藤綺羅
/
描画関数
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
20250410/岩田 瑛/4月14日(月)課題
20250410/岩田 瑛/Latexまとめ
20250410/岩田 瑛/Ltexまとめ
20250410/岩田 瑛/wiki編集方法
20250415/森田 晟生/パワーポイント画像の貼り付け
20250422/佐藤綺羅/2値化処理
20250422/佐藤綺羅/ファイル保存
20250422/佐藤綺羅/原画像と処理画像の表示
20250422/佐藤綺羅/描画関数
20250422/佐藤綺羅/画像の色変換
AutoTicketLinkName
BracketName
FormattingRules
FrontPage
Help
InterWiki
InterWikiName
InterWikiSandBox
log/20250410/岩田 瑛
log/20250410/田中悠陽
log/20250415/議事録yano
log/20250415/議事録 森田晟生
log/20250415/4月15日議事録 藤原匡力
log/20250417/宮木大河
log/20250417/岩田 瑛
log/20250422/今日の予定
log/20250422/佐藤綺羅
log/20250422/大井駿友
log/20250422/駒井舜
log/20250424/今日の予定
log/20250424/岩田 瑛
log/20250424/池﨑蓮
log/20250508/今日の予定
log/20250508/宮木大河
log/20250508/駒井舜
log/20250515/佐藤綺羅
log/20250515/大井駿友
log/20250520/今日の予定
log/20250520/田中悠陽
log/20250520/矢田 竜輝
log/20250522/宮木大河
log/20250522/森田晟生
log/20250527/大井駿友
log/20250527/岩田 瑛
log/20250605/池﨑蓮
log/20250605/田中悠陽
MenuBar
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
ノイズ
[[log/20250422/佐藤綺羅]] *描画関数 [#e9a916be] **cv2.line関数 [#pea63cba] cv2.line(入力画像, pt1, pt2, color, thickness, lineType, shift) 線を描画する関数。~ 引数は以下の通り。~ |入力画像(必須)|入力画像データ| |pt1(必須)|線の始点の座標| |pt2(必須)|線の終点の座標| |color(必須)|線の色| |thickness(任意)|線の太さ(整数のみ、実数は不可、デフォルトは"1")| |lineType(任意)|線の種類(デフォルトはcv.2LINE_8)| |shift(任意)|座標の小数ビット数(デフォルトは"0")| 以下にプログラムの実行例を示す。 取り込んだ画像~ &attachref(neko.jpeg);~ コード #code(python){{ #!/usr/bin/python import cv2 img = cv2.imread("neko.jpeg") cv2.line(img, (0,0), (200,200), (0,0,255), 1, cv2.LINE_AA) cv2.imshow("neko", img) cv2.waitKey(0) }} 実行結果~ &attachref(neko_line.png);~ (0,0)から(200,200)にかけてR=255の線が引かれたのが分かる。~ lineTypeにcv2.LINE_AAを入れるとアンチエイリアスされた画像が出力される。~ 線のギザギザが滑らかになるので、原則こちらを用いる。 **cv2.rectangle関数 [#q80ebb3d] cv2.rectangle(入力画像, pt1, pt2, color, thickness, lineType, shift) 四角形を描画する関数。~ 引数についてはcv2.line関数と同様。~ 以下の命令を先ほどのプログラムの7行目に差し替えると... cv2.rectangle(img, (10,10), (100,150), (0,0,255), cv2.FILLED, cv2.LINE_AA) 実行結果~ &attachref(neko.rectangle.png);~ (10,10)を左上、(100,150)を右下とした長方形が描画される。~ thicknessにcv2.FILLEDを入れると図形が塗りつぶされる。~ "-1"を入れることでも可能。~ **cv2.circle関数 [#n63d0bea] cv2.circle(入力画像, center, radius, color, thickness, lineType, shift) 円を描画する関数。~ 引数は以下の通り。 既出のものは以後省略。 |center(必須)|円の中心の座標。(x座標, y座標)の並びのタプル。| |radius(必須)|円の半径| プログラム例 cv2.circle(img, (100,100), 40, (255,0,0), 2) 実行結果~ &attachref(neko_circle.png);~ (100,100)中心とした半径40、B=255、太さ2の円が描画される。~ なお、太さは画素数を表しているわけではなく、かなり極端に変化する。~ ここらへんの仕様はクソ(矢野先生談)なので、諦める他ない。~ cv2.rectangle関数と同様に、太さを-1にすることで塗りつぶすことも可能。~ **cv2.drawMarker関数 [#g1916273] cv2.drawMarker(img, coor, color, markerType, markerSize) マーカーを描画する関数。~ 引数は以下の通り。~ |coor(必須)|中心の座標(x,y)| |markerType(任意)|マークのタイプ(デフォルトはcv2.MERKER_CROSS)| |markerSize(任意)|マークの大きさ(デフォルトは"20")| markerTypeには以下のようなものがある。 |+|cv2.MARKER_CROSS(デフォルト)| |*|cv2.MARKER_TILTED_CROSS| |☆|cv2.MARKER_STAR| |◇|cv2.MARKER_DIAMOND| |□|cv2.MARKER_SQUARE| |△|cv2.MARKER_TRIANGLE_UP| |▽|cv2.MARKER_TRIANGLE_DOWN| プログラム例 cv2.drawMarker(img, (100,100), (0,0,0), cv2.MARKER_STAR, 100) 実行結果~ &attachref(neko_drawMarker.png);~ (100,100)を中心としたR,G,B=0(黒)、サイズ100の星型マーカーが描画される。~ こちらのサイズはきっちりと画素数に合わせたものになる。~ **cv2.putText関数 [#p43525ba] cv2.putText(入力画像, text, org, fontFace, fontScale, color, thickness, lineType, bottomLeftOrigin) テキストを描画する関数。~ 日本語は出力不可。~ 引数は以下の通り。~ |text(必須)|描画するテキスト| |org(必須)|テキストの左下の座標。(x座標, y座標)の並びのタプル| |fontFace(必須)|フォントの種類の指定| |fontScale(必須)|フォントサイズのスケール係数(float型)| |bottomLeftOrigin(任意)|座標系の原点がどこにあるかを指定(デフォルト:False、画像の左上が原点)| fontFaceには以下のようなものがある。 |cv2.FONT_HERSHEY_SIMPLEX|標準的なゴシック体フォント| |cv2.FONT_HERSHEY_PLAIN|小さいサイズのゴシック体フォント| |cv2.FONT_HERSHEY_DUPLEX|通常サイズのゴシック体フォント(cv2.FONT_HERSHEY_SIMPLEXより太い)| |cv2.FONT_HERSHEY_COMPLEX|通常サイズのスクリプト体フォント| |cv2.FONT_HERSHEY_TRIPLEX|通常サイズのスクリプト体フォント(cv2.FONT_HERSHEY_COMPLEXより太い)| |cv2.FONT_HERSHEY_COMPLEX_SMALL|小さいサイズのスクリプト体フォント| |cv2.FONT_HERSHEY_SCRIPT_SIMPLEX|手書き風フォント| |cv2.FONT_HERSHEY_SCRIPT_COMPLEX|手書き風フォント(cv2.FONT_HERSHEY_SCRIPT_SIMPLEX より太く、デザインが異なる)| プログラム例 cv2.putText(img, "ABCxyz", (20, 50), cv2.FONT_HERSHEY_COMPLEX_SMALL, 2.0, (0, 0, 0), 1, cv2.LINE_AA) 実行結果~ &attachref(neko_putText.png);~ (20, 50)を原点とした、R,G,B=0(黒)の"ABCxyz"の文字列が描画される。~ なお(20, 50)は文字列の左下(Aの足の部分)である。~ **補足:lineTypeについて [#ef11f49d] linetypeには以下の4つが存在する。 |cv2.LINE_4|4連結| |cv2.LINE_8|8連結(デフォルト)| |cv2.LINE_AA|アンチエイリアス処理された線| |cv2.FILLED|塗りつぶし(line, putText関数では使用不可)| cv2.line関数を用いてそれぞれのlineTypeを比較すると以下のようになる。~ &attachref(comparison_line.jpg);~ 上から、cv2.LINE_4、cv2.LINE_8、cv2.LINE_AAである。~ 他のものと比較して、cv2.LINE_AAが最も滑らかで綺麗な線になっていることが分かる。
タイムスタンプを変更しない
[[log/20250422/佐藤綺羅]] *描画関数 [#e9a916be] **cv2.line関数 [#pea63cba] cv2.line(入力画像, pt1, pt2, color, thickness, lineType, shift) 線を描画する関数。~ 引数は以下の通り。~ |入力画像(必須)|入力画像データ| |pt1(必須)|線の始点の座標| |pt2(必須)|線の終点の座標| |color(必須)|線の色| |thickness(任意)|線の太さ(整数のみ、実数は不可、デフォルトは"1")| |lineType(任意)|線の種類(デフォルトはcv.2LINE_8)| |shift(任意)|座標の小数ビット数(デフォルトは"0")| 以下にプログラムの実行例を示す。 取り込んだ画像~ &attachref(neko.jpeg);~ コード #code(python){{ #!/usr/bin/python import cv2 img = cv2.imread("neko.jpeg") cv2.line(img, (0,0), (200,200), (0,0,255), 1, cv2.LINE_AA) cv2.imshow("neko", img) cv2.waitKey(0) }} 実行結果~ &attachref(neko_line.png);~ (0,0)から(200,200)にかけてR=255の線が引かれたのが分かる。~ lineTypeにcv2.LINE_AAを入れるとアンチエイリアスされた画像が出力される。~ 線のギザギザが滑らかになるので、原則こちらを用いる。 **cv2.rectangle関数 [#q80ebb3d] cv2.rectangle(入力画像, pt1, pt2, color, thickness, lineType, shift) 四角形を描画する関数。~ 引数についてはcv2.line関数と同様。~ 以下の命令を先ほどのプログラムの7行目に差し替えると... cv2.rectangle(img, (10,10), (100,150), (0,0,255), cv2.FILLED, cv2.LINE_AA) 実行結果~ &attachref(neko.rectangle.png);~ (10,10)を左上、(100,150)を右下とした長方形が描画される。~ thicknessにcv2.FILLEDを入れると図形が塗りつぶされる。~ "-1"を入れることでも可能。~ **cv2.circle関数 [#n63d0bea] cv2.circle(入力画像, center, radius, color, thickness, lineType, shift) 円を描画する関数。~ 引数は以下の通り。 既出のものは以後省略。 |center(必須)|円の中心の座標。(x座標, y座標)の並びのタプル。| |radius(必須)|円の半径| プログラム例 cv2.circle(img, (100,100), 40, (255,0,0), 2) 実行結果~ &attachref(neko_circle.png);~ (100,100)中心とした半径40、B=255、太さ2の円が描画される。~ なお、太さは画素数を表しているわけではなく、かなり極端に変化する。~ ここらへんの仕様はクソ(矢野先生談)なので、諦める他ない。~ cv2.rectangle関数と同様に、太さを-1にすることで塗りつぶすことも可能。~ **cv2.drawMarker関数 [#g1916273] cv2.drawMarker(img, coor, color, markerType, markerSize) マーカーを描画する関数。~ 引数は以下の通り。~ |coor(必須)|中心の座標(x,y)| |markerType(任意)|マークのタイプ(デフォルトはcv2.MERKER_CROSS)| |markerSize(任意)|マークの大きさ(デフォルトは"20")| markerTypeには以下のようなものがある。 |+|cv2.MARKER_CROSS(デフォルト)| |*|cv2.MARKER_TILTED_CROSS| |☆|cv2.MARKER_STAR| |◇|cv2.MARKER_DIAMOND| |□|cv2.MARKER_SQUARE| |△|cv2.MARKER_TRIANGLE_UP| |▽|cv2.MARKER_TRIANGLE_DOWN| プログラム例 cv2.drawMarker(img, (100,100), (0,0,0), cv2.MARKER_STAR, 100) 実行結果~ &attachref(neko_drawMarker.png);~ (100,100)を中心としたR,G,B=0(黒)、サイズ100の星型マーカーが描画される。~ こちらのサイズはきっちりと画素数に合わせたものになる。~ **cv2.putText関数 [#p43525ba] cv2.putText(入力画像, text, org, fontFace, fontScale, color, thickness, lineType, bottomLeftOrigin) テキストを描画する関数。~ 日本語は出力不可。~ 引数は以下の通り。~ |text(必須)|描画するテキスト| |org(必須)|テキストの左下の座標。(x座標, y座標)の並びのタプル| |fontFace(必須)|フォントの種類の指定| |fontScale(必須)|フォントサイズのスケール係数(float型)| |bottomLeftOrigin(任意)|座標系の原点がどこにあるかを指定(デフォルト:False、画像の左上が原点)| fontFaceには以下のようなものがある。 |cv2.FONT_HERSHEY_SIMPLEX|標準的なゴシック体フォント| |cv2.FONT_HERSHEY_PLAIN|小さいサイズのゴシック体フォント| |cv2.FONT_HERSHEY_DUPLEX|通常サイズのゴシック体フォント(cv2.FONT_HERSHEY_SIMPLEXより太い)| |cv2.FONT_HERSHEY_COMPLEX|通常サイズのスクリプト体フォント| |cv2.FONT_HERSHEY_TRIPLEX|通常サイズのスクリプト体フォント(cv2.FONT_HERSHEY_COMPLEXより太い)| |cv2.FONT_HERSHEY_COMPLEX_SMALL|小さいサイズのスクリプト体フォント| |cv2.FONT_HERSHEY_SCRIPT_SIMPLEX|手書き風フォント| |cv2.FONT_HERSHEY_SCRIPT_COMPLEX|手書き風フォント(cv2.FONT_HERSHEY_SCRIPT_SIMPLEX より太く、デザインが異なる)| プログラム例 cv2.putText(img, "ABCxyz", (20, 50), cv2.FONT_HERSHEY_COMPLEX_SMALL, 2.0, (0, 0, 0), 1, cv2.LINE_AA) 実行結果~ &attachref(neko_putText.png);~ (20, 50)を原点とした、R,G,B=0(黒)の"ABCxyz"の文字列が描画される。~ なお(20, 50)は文字列の左下(Aの足の部分)である。~ **補足:lineTypeについて [#ef11f49d] linetypeには以下の4つが存在する。 |cv2.LINE_4|4連結| |cv2.LINE_8|8連結(デフォルト)| |cv2.LINE_AA|アンチエイリアス処理された線| |cv2.FILLED|塗りつぶし(line, putText関数では使用不可)| cv2.line関数を用いてそれぞれのlineTypeを比較すると以下のようになる。~ &attachref(comparison_line.jpg);~ 上から、cv2.LINE_4、cv2.LINE_8、cv2.LINE_AAである。~ 他のものと比較して、cv2.LINE_AAが最も滑らかで綺麗な線になっていることが分かる。
テキスト整形のルールを表示する
添付ファイル:
neko.jpeg
35件
[
詳細
]
comparison_line.jpg
38件
[
詳細
]
neko_putText.png
29件
[
詳細
]
neko_drawMarker.png
36件
[
詳細
]
neko_circle.png
39件
[
詳細
]
neko.rectangle.png
30件
[
詳細
]
neko_line.png
37件
[
詳細
]