##ヒストグラムの逆投影法で得られたマスク処理後の画像のカラー部分に含まれる特徴点を特定したいです.
OpenCVを用いています.
マスク処理後の画像と特徴点抽出後の画像を示します.
画像に含まれる紫の四角は関係ありません.
特徴点から伸びている線は,二つの画像の特徴点のマッチングした結果から特徴点同士で結んだものなのでお気になさらないでください.
マスク処理のコードを次に示します.
Python
1import cv2 2import numpy as np 3import matplotlib.pyplot as plt 4 5 6img = cv2.imread('../coyomi/ts1.png') 7cv2.imshow("image", img) 8 9# 参考で抜き出す領域の大きさ 10cx = 300 11cy = 325 12cw = 100 13cv2.rectangle(img, (cx, cy), (cx + cw, cy + cw), (255, 0, 0),thickness=3) 14curry_asset = img[cy:cy + cw, cx:cx + cw] 15cv2.imshow("2-1", img) 16cv2.imwrite("2-1.jpg", img) 17cv2.imshow("2-2.jpg", curry_asset) 18cv2.imwrite("2-2.jpg", curry_asset) 19 20# カラーヒストグラムの計算 21hsv = cv2.cvtColor(curry_asset,cv2.COLOR_BGR2HSV) 22hsvt = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) 23# カラーヒストグラムの計算 24roihist = cv2.calcHist([hsv],[0, 1], None, [180, 256], [0, 180, 0, 256] ) 25cv2.imshow("3-1", hsv) 26cv2.imwrite("3-1.jpg", hsv) 27cv2.imshow("3-2", hsvt) 28cv2.imwrite("3-2.jpg", hsvt) 29# ヒストグラムを正規化し逆投影を適用 30cv2.normalize(roihist,roihist,0,255,cv2.NORM_MINMAX) 31dst = cv2.calcBackProject([hsvt],[0,1],roihist,[0,180,0,256],1) 32cv2.imshow("4", dst) 33cv2.imwrite("4.jpg", dst) 34# モルフォロジー変換 35disc = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(10,10)) 36cv2.filter2D(dst,-1,disc,dst) 37cv2.imshow("5", dst) 38cv2.imwrite("5.jpg", dst) 39# 閾値とマスク処理 40ret, thresh = cv2.threshold(dst, 255, 255, 255) 41thresh = cv2.merge((thresh, thresh, thresh)) 42res = cv2.bitwise_and(img, thresh) 43cv2.imshow("6", res) 44cv2.imwrite("6.jpg", res) 45
抽出した特徴点の座標はtxtファイルに書き込んであるのでそれを利用したいです.
具体的に実現したいことは,マスク処理で大体の地面領域が抽出できたので,それに含まれる地面領域の特徴点だけを取り出すことです.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。