質問するログイン新規登録

質問編集履歴

9

methodによってcv2.matchTemplate()の返す値域が違うことに気付いたので補足

2021/01/30 13:43

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  openCV(Python)で、
4
4
  **img**=cv2.imread(img,cv.IMREAD_GRAYSCALE)としてグレースケールで読み込むと[0,255]範囲の値を返します。
5
5
  現在、テンプレートマッチングを試していますが、結果として返ってくる
6
- **res**=cv2.matchTemplate(img,template,eval(method))は[0,1]範囲に正規化された値です。
6
+ **res**=cv2.matchTemplate(img,template,eval(method))は[0,1]範囲に正規化された値です。**__(※補足:methodにcv.TM_SQDIFF_NORMEDを使用した場合)__**
7
7
 
8
8
  これらをmatplotlibのimshowで明示的に値域を指定した上で表示してみると、以下の様になります。
9
9
  左から順に、

8

修正

2021/01/30 13:43

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -41,8 +41,7 @@
41
41
  img = cv.imread('mandrill.png',cv.IMREAD_GRAYSCALE)
42
42
  template = cv.imread('mandrill_template.png',cv.IMREAD_GRAYSCALE)
43
43
 
44
- method ='cv.TM_SQDIFF_NORMED'
45
- res = cv.matchTemplate(img,template,eval(method))
44
+ res = cv.matchTemplate(img,template,cv.TM_SQDIFF_NORMED)
46
45
 
47
46
  print(img)#0~255の値で表されている!
48
47
  print(res)#こっちは0~1の値で表されている!

7

修正

2021/01/30 11:57

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -41,7 +41,6 @@
41
41
  img = cv.imread('mandrill.png',cv.IMREAD_GRAYSCALE)
42
42
  template = cv.imread('mandrill_template.png',cv.IMREAD_GRAYSCALE)
43
43
 
44
- # All the 6 methods for comparison in a list
45
44
  method ='cv.TM_SQDIFF_NORMED'
46
45
  res = cv.matchTemplate(img,template,eval(method))
47
46
 

6

微修正

2021/01/30 11:57

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -13,7 +13,7 @@
13
13
  です。
14
14
  ![イメージ説明](64ea6a2ec9d3194a8ca8b35ebb59b57e.png)
15
15
 
16
- そして、cv2.imshow()でも、左右の**img**([0,255]グレースケール)と**res**([0,1]グレースケール)を表示してみると、先ほどの結果と同様、問題無く表示されました。問題は、中央の[0,255]範囲に戻した**res*255**を表示させようとした時です。
16
+ そして、cv2.imshow()でも、左右の**img**([0,255]グレースケール)と**res**([0,1]グレースケール)を表示してみると、の結果と同様、問題無く表示されました。問題は、中央の[0,255]範囲に戻した**res*255**を表示させようとした時です。
17
17
 
18
18
  ### 発生している問題
19
19
 

5

修正

2021/01/30 11:55

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -20,7 +20,7 @@
20
20
  ここで、私はresが正規化された値になっている事はやや混乱を招くと感じたので、imgと統一させる為にres*255として[0,255]グレースケールに戻してやりました。
21
21
  そしてこれをcv2.imshow(winname,**res*255**)で試しに表示してみると、以下の様に何も表示されませんでした。
22
22
  ![イメージ説明](7fb3aed587421f458e85693d111810f8.png)
23
- しかし、cv2.imwrite("aaa.jpg",res*255)で保存してみると、期待している画像が保存されていました。
23
+ しかし、cv2.imwrite("filename.jpg",res*255)で保存してみると、期待している画像が保存されていました。
24
24
  ![イメージ説明](5b3ea1d22435d05635cb72c27c076c48.jpeg)
25
25
 
26
26
  1. これは一体何が起こっているのでしょうか?

4

補足

2021/01/30 11:54

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -13,7 +13,7 @@
13
13
  です。
14
14
  ![イメージ説明](64ea6a2ec9d3194a8ca8b35ebb59b57e.png)
15
15
 
16
- そして、cv2.imshow()によりimg([0,255]グレースケール)とres([0,1]グレースケール)を表示してみると、先ほどの結果と同様、問題無く表示されました。
16
+ そして、cv2.imshow()でも、左右の**img**([0,255]グレースケール)と**res**([0,1]グレースケール)を表示してみると、先ほどの結果と同様、問題無く表示されました。問題は、中央の[0,255]範囲に戻した**res*255**を表示させようとした時です。
17
17
 
18
18
  ### 発生している問題
19
19
 

3

誤字

2021/01/30 11:53

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,7 @@
10
10
  - plt.imshow(**res**,cmap = 'gray', vmin = 0, vmax = 1)
11
11
  - plt.imshow(**res*255**,cmap = 'gray', vmin = 0, vmax = 255)
12
12
  - plt.imshow(**img**,cmap = 'gray', vmin = 0, vmax = 255)
13
- - です。
13
+ です。
14
14
  ![イメージ説明](64ea6a2ec9d3194a8ca8b35ebb59b57e.png)
15
15
 
16
16
  そして、cv2.imshow()によりimg([0,255]グレースケール)とres([0,1]グレースケール)を表示してみると、先ほどの結果と同様、問題無く表示されました。

2

補足

2021/01/30 11:52

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  openCV(Python)で、
4
4
  **img**=cv2.imread(img,cv.IMREAD_GRAYSCALE)としてグレースケールで読み込むと[0,255]範囲の値を返します。
5
- 現在、テンプレートマッチングを試していますが、
5
+ 現在、テンプレートマッチングを試していますが、結果として返ってくる
6
6
  **res**=cv2.matchTemplate(img,template,eval(method))は[0,1]範囲に正規化された値です。
7
7
 
8
8
  これらをmatplotlibのimshowで明示的に値域を指定した上で表示してみると、以下の様になります。

1

誤字

2021/01/30 11:52

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- cv2.imshowで[[0,1]に正規化されたグレースケール画像を[0,255]に直して表示させようとすると上手く行かない
1
+ cv2.imshowで[0,1]に正規化されたグレースケール画像を[0,255]に直して表示させようとすると上手く行かない
body CHANGED
File without changes