【Python】OpenCVで線や図を描く – rectangle, circle, line, putText, polylines

Pythonの応用
スポンサーリンク

初心者の独学でのプログラミング学習はとてもツライ…

プログラミングをマスターしたい!

今のIT業界はプログラミングエンジニアが不足していると言われています。
高収入の職業とも言われる分野もありますし、AI、機械学習、ディープラーニング、IOTといった注目される分野が目白押しです。

でも、いざ初心者がプログラミングをマスターしようとすると…

  • 本を読んだりネットの記事で自力で勉強しているけど限界を感じる
  • プログラミングスクールに定期的に通うのは面倒だ
  • 地方に住んでると家の近くにプログラミングスクールなんてない
  • どのプログラミング言語を学べばいいのか悩む
  • 実際の就職や転職にプログラミングが活かせるのか心配だ

など、プログラミングを自分で勉強しようとすると悩みが尽きません。

プログラミングに詳しい友人に教えてもらおうと思っても、そんな友人なんて滅多にいません。いたとしても細かく教えてくれるほど時間に余裕がある人はいないでしょう。

そんな独学でプログラミングをマスターするのに限界を感じてる方に、オンラインプログラミングスクールをがおすすめです。

おすすめのオンラインスクールはこちら

Pythonで画像の処理をするには外部ライブラリのOpenCVを利用すればよく、その基本的な画像処理の方法も学びました。

【Python】OpenCVを使ったimageファイルの画像処理の基礎
Pythonで画像や動画を処理する際に、ライブラリのOpenCVが利用できます。OpenCVは画像や動画の処理に特化した外部ライブラリです。画像認証の機械学習などにも利用することになります。ここでは画像処理の基礎的な操作を行ってみます。

これで画像ファイルを開いてサイズの変更や画像の反転などができるようになった訳ですが、さらに線や図を描けることもできます。

ここではOpenCVを使って画像に線や図を描画する方法を学んで行こうと思います。

スポンサーリンク

図形を描く

OpenCVで図を描いて行きましょう。

cv2、numpy、matplotlibをインポートします。

img_areaとして、np.zeros()を使って図のエリアを作ってみます。

shapeに縦が500、横が500、3カラーチャンネルを指定しています。zeros()は0行列なので値は全てゼロとなります。

shapeで行列の型の確認と図を表示してみます。

500行500列、3カラーチャンネルの図が表示されました。データはゼロですから黒色になっています。

このエリアに色々と形を描いていきますが、ここで図の位置について確認しておきます。

コンピューターの図の各座標の位置は画面の左上が原点の(0, 0)になり、x軸はそこから右へ、y軸はそこから下に伸びることで座標を示します。数学などの座標と違うので注意しましょう。

スポンサーリンク

矩形:rectangle()

まず、矩形(rectangle)を適当な位置に表示してみましょう。

矩形を描くにはcv2.rectangle()を使います。

rectangle()にimg_areaのデータを渡します。矩形のpt1は左上の座標、pt2は右下の座標です。pt1、pt2を省略してタプルだけを渡しても構いません。ここでは色を緑に指定しています。thicknessは厚み(線の太さ)です。

画像を表示してみましょう。

緑色で矩形が表示されています。座標の左上、右下の位置が指定の場所になっていることがわかりますね。

もう1つ違う位置に青色で矩形を描いてみます。

最初に描いた図に追加される形で表示されます。

スポンサーリンク

円:circle()

次は円(circle)を描いてみます。

矩形を描くにはcv2.circle()を使います。

使い方は矩形と同じで、座標はcenterで中心を、radiusで円の半径を与えます。ここでは色を赤にしてみます。

スポンサーリンク

塗りつぶし

もう1つ、別の位置に円を描いてみます。

ここではthicknessを-1にしています。これで円の中を塗りつぶして表示することができます。

今度は赤く塗り潰された円を描くことができました。

スポンサーリンク

直線:line()

次は線を引いてみます。

線を引くにはcv2.line()を使います。

ここでは図の左上から右下に線を引いてみます。その座標をpt1、pt2に渡しています。

スポンサーリンク

文字:putText()

今度は文字を表示してみます。

文字を表示するにはputText()を利用します。

まず、文字のフォントにcv2.FONT_HERSHEY_SIMPLEX を指定しました。

putText()で文字を表示するには、textに文字を渡します。ここでは「OpenCV」を表示します。orgに文字を表示する位置(左下)の座標を指定します。

fontFaceに先ほど指定したfontを指定し、fontScaleで文字の大きさを指定します。色はここでは白にしました。

lineTypeとしてアンチエイリアスのcv2.LINE_AAを渡しています。これはデフォルトでは縦横斜めの8連結を示すcv2.LINE_8です。縦横の4連結はcv2.LINE_4です。

白色の文字でOpenCVと表示されているのがわかります。

スポンサーリンク

多角形を描く – polylines()

今度は多角形の描画をしてみましょう。

多角形を描画するには、多角形の頂点の座標が必要です。頂点の座標はROWSx1x2のサイズの配列のデータにします。ROWSは頂点の数を示し、データはint32型にする必要があります。

では画像を作って行きましょう。4つの頂点を持つ多角形を描画してみます。

zeros()を使って黒い画像の領域を作ります。これは最初にやったことと同じですが、int32になっていることに注意です。

次に4つの頂点のデータを作って行きます。

4つの頂点のリストを配列にしています。

配列の型を確認してみます。

ここまでをみてみましょう。

4行2列のデータになっています。

多角形の頂点データはROWSx1x2の形にならないといけません。そこでこれをreshape()を使って変換します。

reshape(-1)は行ベクトルになります。これを1×2のデータで変換していくのでROWSx1x2の形になります。

4x1x2でROWSx1x2の形になっているのがわかります。

ようやく多角形の描画になります。

多角形の描画にはcv2.polylines()を使います。

polylines()にimg_areaを渡し、座標をここでは[pts]で与えます。isClosedをTrueとすることで閉じた多角形を描画することになります。色は赤、線の太さは5にしました。

描画してみましょう。

多角形が描画されました。

スポンサーリンク

最後に

PythonにOpenCVをインポートして画像に線や図を描画する方法を学んできました。

図の座標の方向は、左上が頂点としてx軸は右、y軸は下にプロットするので通常の数学の座標イメージと違うので注意しましょう。

ここでは矩形をrectangle()、円をcircle()、直線をline()、テキストをputText()、 多角形をpolylines()で描画しました。

自宅学習はオンラインプログラミングスクールを活用!

自宅学習にはオンラインプログラミングスクールがおすすめ!

オンラインプログラミングスクールは独学でプログラミングを学習する時のデメリットを解消する仕組みが備わっています。

気になるところは…

学習がオンラインで完結するのはもちろんですが、独学ではできない質問サポートがあるかどうか。わからないことを現役のエンジニアが質問に答えてくれるといいですよね。

受講者個人に担当のメンターがつき、マンツーマンで学習の相談に乗ってくれることも必要で、ITエンジニアの世界についても伺えたりもすると幅が広がります。

オンライン面談だけでなく、チャット機能を使って気軽に質問を投げかけることができることも大切です。

また、オリジナルプロダクトの開発とサポートがコースの中に組み込まれていて、独学ではなかなか難しい実践的なスキルの習得にもつなげたい。

プログラミングをマスターした後の実際の仕事につながる転職サポートでがあると、ITエンジニアの世界に飛び込むのに不安が解消されます。

そんな豊富なメニューが揃っているおすすめのオンラインプログラミングスクールがこちらにあります。

おすすめのオンラインプログラミングスクールはこちら

TechAcademyはおすすめのオンラインプログラミングスクール!

オンラインのプログラミングスクールでは、テックアカデミーの充実度が目を見張ります。

オンラインで受講が完結するので、自宅学習でプログラミングをマスターしたい人にはテックアカデミーがおすすめです。

メンター制度も現役のプロが対応してくれます。大学生などが対応しているスクールに比べて本気度と専門性が違います。メンター制度の無いスクールもありますし、担当では無いメンターが対応するスクールもあったりするので、相談の質が違いますね。

チャットサポートもあるので、それが無いスクールに比べて相談の気軽さの違いがあります。

プロダクト開発のサポートで実践力が養われるだけでなく、どの講座を利用しても転職サポートが受けられるのはありがたい。

用意されているコースも、初心者向けのプログラミングコースから、Python、Java、PHP、iPhoneアプリ、AndroidといったITエンジニアのベースとなる主要な言語だけでなく、AI、データサイエンス、ブロックチェーン、webアプリケーションと行った実践的なコースまで用意しています。

他にも、webデザインやUI/UXデザイン、動画編集、webディレクションやwebマーケティングといったプログラミング以外での役立つコースまであります。

このようなたくさんの選択肢から自分にあったコースを選ぶことがでるのがテックアカデミーです。

コースの期間も短期間でマスターしたり、長期の受講でじっくり取り組むコースを選ぶこともできます。

複数講座のセットコースを利用することで大幅な割引が受けらるので、お得に受講することもできます。

無料体験もありますので、プログラミング学習でオンラインスクールを考えている人はTechAcademyをぜひ利用してみてください。

テックアカデミーの公式サイトはこちら

タイトルとURLをコピーしました