https://blog.csdn.net/wc781708249/article/details/78518447
1切り欠き
輸入CV2 NPとしてnumpyのインポート __name__ == '__main__' の場合: #読み取り画像 イム= cv2.imread( "image.jpg") #選択ROI R = cv2.selectROI(IM) # クロップ画像 imCrop = IM [INT(R [1]):INT(R [1] + R [3])、INT(R [0]):INT(R [0] + R [2])] #表示は、画像をトリミング cv2.imshow( "イメージ"、imCrop) cv2.waitKey(0)
左上から右下に四角形をドラッグします
あなたが私に似ている場合は、代わりに、中心からドラッグの、左上隅から長方形の右下隅をドラッグしたいと思います。だから、我々は簡単に、この問題を解決する代わりに、強調表示された行の次の行を使用することができます。
fromCenter = 偽
R = cv2.selectROI(IM、fromCenter)
私は十字線を表示したくありませんか?
さて、あなたはクロスヘア好きではないと仮定し、それは長方形を見たいと思っていません。あなたは十字線を表示するようにコードを変更することはできません。
ショーの十字線=偽 fromCenter =偽 R = cv2.selectROI( "イメージ"、イム、fromCenter、showCrosshair)
2 保存
輸入CV2 cv2.namedWindow(「画像」)#は、ウィンドウを作成します IMG = cv2.imread( 'ver.jpg') cv2.imshow( "イメージ"、IMG) cv2.imwrite( 'test.jpg'、IMG、[INT(cv2.IMWRITE_JPEG_QUALITY)、70]) cv2.waitKey(0) cv2.destroyWindow( "画像")#閉じます
3件一致
単一のオブジェクトのマッチング
- テンプレートマッチングを畳み込み達成される:次に、図サイズ(W-W + 1)×(H-H + 1)を生成し、H×wをと仮定元のサイズW×H、テンプレート図のサイズを、図を生成します各ピクセル値は、元のテンプレートとの一致度を表します。
- テンプレートマッチングの原理は、非常に簡単で、オリジナルを比較するために、テンプレート画像を動かし続けるためにある、六つの異なる比較方法があります。
- マッチは、差分の二乗 CV_TM_SQDIFF:試合に二乗差を、ベストマッチは0であります
- 正規化二乗差のマッチング CV_TM_SQDIFF_NORMED
- 関連マッチ CV_TM_CCORR:より良い製品の両方と一致する、より大きな値の一致度
- 正規化相関マッチングCV_TM_CCORR_NORMED
- 相関係数が一致 CV_TM_CCOEFF:1のマッチングの相関係数は、完全な一致を示すと-1最悪の試合のために
- 正規化相関係数マッチング CV_TM_CCOEFF_NORMED
https://zhuanlan.zhihu.com/p/62643151
輸入CV2 NPとしてnumpyのインポート PLTとしてmatplotlibの輸入pyplotから #1。テンプレートマッチング IMG = cv2.imread( 'dog.jpg') img_gray = cv2.cvtColor(IMG、cv2.COLOR_BGR2GRAY) IMG = cv2.cvtColor(IMG、cv2.COLOR_BGR2RGB) テンプレート= cv2.imread( 'face_dog.jpg'、0) H、W = template.shape [2]#rows-> H、cols- W> マッチング方法の#6種類 メソッド= [ 'cv2.TM_CCOEFF'、 'cv2.TM_CCOEFF_NORMED'、 'cv2.TM_CCORR'、 'cv2.TM_CCORR_NORMED'、 'cv2.TM_SQDIFF'、 'cv2.TM_SQDIFF_NORMED'] 方法でメタのために: IMG2 = img.copy() 真の値#マッチング 方法= evalの(メタ) RES = cv2.matchTemplate(img_gray、テンプレート法) min_val、MAX_VAL、min_loc、max_loc = cv2.minMaxLoc(RES) 一致が差TM_SQDIFF又はTM_SQDIFF_NORMEDに一致する正規化された正方形の差の二乗の場合#、最小値をとります もしにおける方法[cv2.TM_SQDIFF、cv2.TM_SQDIFF_NORMED]: TOP_LEFT = min_loc そうしないと: TOP_LEFT = max_loc BOTTOM_RIGHT =(TOP_LEFT [0] +、W TOP_LEFT [1] + H) cv2.circle(RES、TOP_LEFT、10、0、2) #四角形を描画| cv2.rectangle(IMG2、TOP_LEFT、BOTTOM_RIGHT、(0、255、0)、2)
マルチオブジェクトマッチング
✔️シングルマッチが最大のマッチポイントを見つけることです、それは一度だけ一致させることができます。
✔️マルチオブジェクトマッチングのために、私たちは、時代に合わせて、試合のしきい値を設定する必要があります。
img_rgb = cv2.imread( 'mario.jpg') img_gray = cv2.cvtColor(img_rgb、cv2.COLOR_BGR2GRAY) テンプレート= cv2.imread( 'mario_coin.jpg'、0) H、W = template.shape [2] RES = cv2.matchTemplate(img_gray、テンプレート、cv2.TM_CCOEFF_NORMED) しきい値= 0.8 #80%一致度の大きい座標乗り LOC = np.where(RES> =閾値) ジップでPTのために(* LOC [:: - 1]):#*数字は、オプションのパラメータを示しています BOTTOM_RIGHT =(PT [0] + PT、W [1] + H) cv2.rectangle(img_rgb、PT、BOTTOM_RIGHT、(0、0、255)、2) cv2.imshow( 'img_rgb'、img_rgb) cv2.waitKey(0)