この記事では以下の画像のように、既存の画像にグリッド線を入れる方法をご紹介します。
単純に画像の端から等間隔で線を引くわけではなく、縦、横方向の開始ピクセル、線の本数、線を引く間隔、線の太さを自由に変更可能です。
openCVがインストールされたpython実行環境さえあれば簡単に実行できます。
ぜひ最後までご覧ください。
それでは早速やっていきましょう。
※pythonのインストールから始めたい方は以下からご覧ください。
別途インストールが必要なopenCVについては以下で解説しています。
openCVで画像に線を引く方法
実際のプログラム紹介に入る前に、python-openCVで画像に線を追加する方法を簡単にご紹介しておきます。
〇画像に線を追加する方法
A:画像を読み込んだ配列名
B:線の始点(X,Y)で表現
C:線の終点(X,Y)で表現
D:線の色(B,G,R)で表現
E:線の太さ
例:cv2.line(pic,(0,0),(100,100),(0,0,255),1)
⇒picという配列の(0,0)から(100,100)までに赤色で太さ1の線を引く
いろいろと設定項目が多くて大変ですね。
いずれにせよ、画像に線を追加する方法がわかったと思いますので、実際のサンプルコードを見ていきましょう。
画像にグリッド線を追加するサンプルコード
早速ですが、以下が既存の画像にグリッド線を追加するサンプルコードです。
今回は以下の画像にグリッド線を追加していきます。
(私のブログ御用達のマウスの画像です。)
※この画像は、以下のコードを記述したファイルと同じ場所にmouse.jpgとして保存してあります。
import cv2
pic=cv2.imread('mouse.jpg',cv2.IMREAD_COLOR)
h,w=pic.shape[:2]
x=144
y=186
pixel=0.178 #mm/pixel
deltag=10 #mm
deltap=int(deltag/pixel)
numx=10
numy=6
linew=1
for i in range(numx):
#cv2.line(pic,(x1,0),(x1,h),(0,0,255),linew)
cv2.line(pic,(x,0),(x,h),(0,0,255),linew)
x=x+deltap
for i in range(numy):
cv2.line(pic,(0,y),(w,y),(0,0,255),linew)
y=y+deltap
cv2.imwrite('grid.jpg',pic)
なお、このコード中にあるx,yは以下の範囲を表しています。
今回は画像の左端からマウスの左先端までをx(144), 画像の上端からマウスの上端までをy(186)として入力しています。
また今回は以下のデータをもとにグリッド線をひく間隔を算出しています。
〇pixel:1ピクセルは実際の距離で何mmか(これは事前に計測する必要があります)
〇deltag:グリッド線を引く間隔は実際の距離で何mmおきか
また、numx、numyで横方向、縦方向それぞれに何本の線を引くかを設定、linewで線の太さを設定するようにしています。
サンプルコードの実行結果
最後に、実際に先ほどのコードを実行してみましょう。
〇もともとの画像
〇処理後の画像(太さ1)
〇処理後の画像(太さ5)
問題なく線が引けていますね。
おわりに
というわけで今回はpython-openCVを使って、既存の画像に任意の幅でグリッド線を追加する方法をご紹介しました。
実験画像の見栄えを整える際などにぜひご活用下さい。
このように、私のブログでは様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント