このページではpython-openCVを使い、以下の動画のように画像内を2点クリックして、
こんな感じで緑枠内を切り抜いたした画像を連続保存していく方法をご紹介していきます。
それではさっそくやっていきましょう。
※Python(無料のプログラミング言語)のインストール~実行方法までは以下で解説しています。
必要なライブラリ一覧
まずは今回使用するライブラリをご紹介します。
★openCV
★numpy
★os
インストールしていいない方はまずはインストール作業から始めましょう。
openCVについては以下に参考記事を載せておきます。
使用するサンプル画像の紹介
今回は以下の画像を使用していきます。
今回はこの画像を2回クリックしてその場所を切り抜いていこうと思います。
クリック位置の画像を切り抜いて保存するサンプルコード
それでは冒頭に紹介したような画像内を2回クリックして、その2点から画像を切り抜いて保存するサンプルコードをご紹介します。
以下がそのコードです。
import cv2
import numpy as np
import os
#新しいフォルダ名
new_fol='new_pic'
#新しいフォルダを作成
os.makedirs(new_fol, exist_ok=True)
#使用する画像を指定
file_name='sample_pic.jpg'
#事前の変数準備
img=cv2.imread(file_name,cv2.IMREAD_COLOR)
x1,y1=0,0
counter=1
file_num=0
#切り抜き保存の関数
def click_cut(event, x, y, flags, params):
global x1,y1,img2,counter,file_num
if event == cv2.EVENT_LBUTTONDOWN:
counter=0
x1=x
y1=y
elif event == cv2.EVENT_MOUSEMOVE and counter==0:
img2=np.copy(img)
cv2.rectangle(img2,(x1, y1),(x, y),(0, 255, 0),thickness=3)
cv2.imshow('window', img2)
elif event == cv2.EVENT_RBUTTONDOWN:
counter=1
x2=x
y2=y
if x1>x2:
X1=x2
X2=x1
else:
X1=x1
X2=x2
if y1>y2:
Y1=y2
Y2=y1
else:
Y1=y1
Y2=y2
img2=img[Y1:Y2,X1:X2]
cv2.imwrite(new_fol+'/new_file'+str(file_num).zfill(3)+'.jpg',img2)
file_num+=1
#処理実行
cv2.imshow('window', img)
cv2.setMouseCallback('window', click_cut)
cv2.waitKey(0)
cv2.destroyAllWindows()
実際に使用する際、プログラムを実行すると指定した画像のWindowが出現します。
あなたは切り抜きたい場所の始点を左クリック、終点を右クリックで指定するだけでOKです。
するとプログラム実行フォルダ内に新しくフォルダができており、その中に切り抜いた画像が保存されているはずです。
基本的に右クリックすると作業がいったんリセットされますので、何度でも連続で切り抜き作業を行うことができます。
念のため冒頭の動画を再掲しておきます。
まぁいったん試してみてください。
おわりに
というわけで今回はpython-openCVを使って、画像内の指定位置を切り抜き、連続保存していくサンプルコードをご紹介しました。
データ解析の際などにぜひご活用ください。
このように、私のブログでは様々なスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント