【python-openCV】画像に任意の色、太さで破線を追加する方法!

この記事では、python&openCVを使って既存の画像に破線を追加する方法をご紹介します。

追加する破線は、線の色、太さ、破線の間隔まで簡単に変更することが可能です。

実験画像にグリッド線を追加する際などにぜひご活用ください。

 

それではさっそくやっていきましょう。

 

スポンサーリンク

破線の追加方法

以前、以下の記事で紹介しましたが、openCVには画像に線を追加する機能があらかじめ用意されています。

【python-openCV】画像にグリッド線(目盛り線)を入れる方法!

 

しかしながらこの機能で追加できるのは実践のみとなっています。

そのため、今回紹介する破線に関しては自分でなんらかの処理を記述する必要があります。

 

実際のプログラミングに入るまえに、それがどのような手法なのかを簡単にご紹介しておきましょう。

 

画像に破線を追加する方法は以下の通りです。

①画像を配列として読み込む

②破線を追加したい行(列)の配列を自分で加工する

③②で加工した配列を再び画像にする

 

基本的にはこれだけですが、②のところがよくわからないと思いますので画像をつかってもう少し補足説明しておきます。

 

まずは画像の任意の位置のピクセルを抜き出します。

※わかりやすいように大きな領域を取り出して説明しています。

次にこの抜き出した領域を端から順番に等間隔で塗りつぶしていきます。

基本的にはこの作業を端から端までを繰り返すだけです。

今回は横方向に破線を追加する形で説明していますが、縦方向でも基本的にやることは同じですね。

 

スポンサーリンク

画像に破線を追加するサンプルコード

ざっくりとどんなことをやっていくのかがわかったところで、実際のプログラミング作業に入っていきましょう。

 

今回はこのプログラムの保存場所と同じフォルダに保存されている、以下のmouse.jpgに破線を追加してみようと思います。

〇mouse.jpg

 

早速ですが、以下が画像に破線を追加するサンプルコードです。

import cv2
pic=cv2.imread('mouse.jpg',cv2.IMREAD_COLOR)
h,w=pic.shape[:2]
#破線の情報
dashp=5 #破線の太さ
dashw=10 #破線一本あたりの幅
color=[0,0,255] #BGR三要素
y=300 #破線の開始位置

#破線作成開始
i=0
while i<w:
    pic[int(y-dashp/2):int(y+dashp/2),i:i+dashw,:]=[0,0,255]
    i=i+dashw*2
cv2.imwrite('grid.jpg',pic)

このサンプルコードを実行すると、同じフォルダに以下のgrid.jpgが出力されています。

〇grid.jpg

 

スポンサーリンク

破線の色、太さ、間隔を調整してみる

最後に、破線の色や太さを変更する方法をご紹介しておきます。

基本的に破線を調整する際はサンプルコードに出てきた以下の3つの変数を調整します。

dashp=5 #破線の太さ
dashw=10 #破線一本あたりの幅
color=[0,0,255] #BGR三要素

 

例えば、これらの以下のように変更して再度実行してみましょう。

dashp=2 #破線の太さ
dashw=20 #破線一本あたりの幅
color=[255,0,255] #BGR三要素

すると以下のような破線が追加されます。

うまく調整することで、点線のようにもできます。

ぜひいろいろと変更して遊んでみましょう。

スポンサーリンク

おわりに

というわけで今回はpython-openCVを使って、既存の画像に任意の色、太さで破線を追加する方法をご紹介しました。

工夫することで等間隔に複数の線を引くことも可能です。

実験画像の見栄えを整える際などにぜひご活用下さい。

 

このように、私のブログでは様々なプログラミングスキルを紹介しています。

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村 IT技術ブログへ
にほんブログ村

それではまた!

コメント

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