質問編集履歴
16
最終訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,12 +14,12 @@
|
|
14
14
|
|
15
15
|

|
16
16
|
### 発生している問題・エラーメッセージ
|
17
|
-
|
17
|
+
問題は上記に示した通りです。エラーはありません。
|
18
18
|
|
19
19
|
|
20
20
|
|
21
21
|
### 該当のソースコード
|
22
|
-
以下に2値化画像取得、及び誤差を求めるプログラムを示します。
|
22
|
+
以下に2値化画像取得、及び誤差を求めるプログラムを示します。これが解決した際に訂正したコードです。
|
23
23
|
①2値化画像取得プログラム
|
24
24
|
```Python
|
25
25
|
import cv2
|
15
最終修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
|
21
21
|
### 該当のソースコード
|
22
|
-
以下に2値化画像取得、及び誤差を求めるプログラムを示します
|
22
|
+
以下に2値化画像取得、及び誤差を求めるプログラムを示します。
|
23
23
|
①2値化画像取得プログラム
|
24
24
|
```Python
|
25
25
|
import cv2
|
@@ -63,8 +63,10 @@
|
|
63
63
|
#plt.imshow(img_diff)
|
64
64
|
|
65
65
|
#img_diff = cv2.cvtColor(img_diff, cv2.COLOR_BGR2GRAY)
|
66
|
+
|
66
|
-
|
67
|
+
mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
|
67
|
-
|
68
|
+
print(mask_img) #Noneが返ってきたらファイルが存在していないので、これで確かめる
|
69
|
+
mask_img[mask_img > 0] = 1 # 0以外は1に
|
68
70
|
files = os.listdir(IMG_DIR) #ディレクトリとファイルの一覧を取得
|
69
71
|
for file in files:
|
70
72
|
if file == '.DS_Store' or file == TARGET_FILE:
|
@@ -82,12 +84,6 @@
|
|
82
84
|
print(img_diff.max())
|
83
85
|
print(img_diff.min())
|
84
86
|
|
85
|
-
mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
|
86
|
-
print(mask_img) #Noneが返ってきたらファイルが存在していないので、これで確かめる
|
87
|
-
mask_img[mask_img > 0] = 1 # 0以外は1に
|
88
|
-
#img_multiply = np.multiply(img_diff,mask_img)
|
89
|
-
#print(np.multiply(img_diff,mask_img))
|
90
|
-
|
91
87
|
print((img_diff * mask_img).sum() / mask_img.sum())
|
92
88
|
print(np.average(img_diff, weights=mask_img))
|
93
89
|
|
@@ -99,7 +95,7 @@
|
|
99
95
|
### 試したこと
|
100
96
|
|
101
97
|
上記のコードを書きました。これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えていました。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
|
102
|
-
以下に実際に出力されたものを示します。
|
98
|
+
以下に実際に出力されたものを示します(printの部分を変えているので、出力が一部足りないところがあると思います。最終的な出力が最後の4つになります)。
|
103
99
|
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
|
104
100
|
/content/drive/MyDrive/images/
|
105
101
|
[[ 0 90 37 ... 176 255 255]
|
@@ -130,6 +126,5 @@
|
|
130
126
|
環境:Windows10
|
131
127
|
ブラウザ:Google Chrome(Google Colaboratory)
|
132
128
|
*ノートパソコンです。全て最新バージョンです。プログラミング中はcolab以外のタブ、アプリは開いていません。
|
133
|
-
*ご助言をいただいた事を受け、大きく内容(特にプログラム)を編集しています。
|
134
129
|
*急を要する為、こちらでも同じ質問をさせていただいています。しかし1週間近く経過しても回答が無かった為、teratailでも質問させていただいてます。https://ja.stackoverflow.com/questions/90923/%e6%b8%a9%e5%ba%a6%e5%88%86%e5%b8%83%e7%94%bb%e5%83%8f%e4%ba%88%e6%b8%ac%e3%81%ae%e8%aa%a4%e5%b7%ae%e3%81%ae%e5%8d%98%e4%bd%8d%e3%82%92%e6%b8%a9%e5%ba%a6%e3%81%ab%e5%af%be%e5%bf%9c%e3%81%95%e3%81%9b%e3%81%9f%e3%81%84
|
135
130
|
|
14
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -101,7 +101,7 @@
|
|
101
101
|
上記のコードを書きました。これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えていました。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
|
102
102
|
以下に実際に出力されたものを示します。
|
103
103
|
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
|
104
|
-
/content/drive/MyDrive/
|
104
|
+
/content/drive/MyDrive/images/
|
105
105
|
[[ 0 90 37 ... 176 255 255]
|
106
106
|
[190 226 225 ... 176 255 255]
|
107
107
|
[226 1 146 ... 176 255 255]
|
13
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
#IMG_SIZE = (312, 312)
|
47
47
|
|
48
48
|
target_img_path = IMG_DIR + TARGET_FILE #比較対象を足す
|
49
|
-
target_img = cv2.imread("/content/drive/MyDrive/
|
49
|
+
target_img = cv2.imread("/content/drive/MyDrive/images/target.PNG",0)
|
50
50
|
print(target_img)
|
51
51
|
#target_img = cv2.resize(target_img, IMG_SIZE)
|
52
52
|
#target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256]) #ヒストグラムを出す際に使う
|
12
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -41,7 +41,7 @@
|
|
41
41
|
|
42
42
|
TARGET_FILE = 'target.PNG'
|
43
43
|
#print(TARGET_FILE)
|
44
|
-
IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/drive/MyDrive/
|
44
|
+
IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/drive/MyDrive/images/'#imagesフォルダの中にあるファイルが比較対象
|
45
45
|
print(IMG_DIR)
|
46
46
|
#IMG_SIZE = (312, 312)
|
47
47
|
|
11
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
import numpy as np
|
27
27
|
from pylab import * #imshowが無いというエラー防止
|
28
28
|
|
29
|
-
img = cv2.imread("/content/drive/MyDrive/mask_before.png")
|
29
|
+
img = cv2.imread("/content/drive/MyDrive/mask_before.png",0)
|
30
30
|
|
31
31
|
ret, thresh = cv2.threshold(img, 168, 255, cv2.THRESH_BINARY)#1つめの数以上の画素値は2つ目の数の画素値にする
|
32
32
|
thresh[thresh > 0] = 255 # 0以外は255に
|
10
エラー問題の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,12 +14,12 @@
|
|
14
14
|
|
15
15
|

|
16
16
|
### 発生している問題・エラーメッセージ
|
17
|
+
解決しました。
|
17
18
|
|
18
|
-
プログラムを書いてみました(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです。目的にあった誤差が出ているか現在検証中です)。
|
19
19
|
|
20
20
|
|
21
21
|
### 該当のソースコード
|
22
|
-
以下に2値化画像取得、及び誤差を求めるプログラムを示します。
|
22
|
+
以下に2値化画像取得、及び誤差を求めるプログラムを示します(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです。目的にあった誤差が出ているか現在検証中です)。
|
23
23
|
①2値化画像取得プログラム
|
24
24
|
```Python
|
25
25
|
import cv2
|
9
出力結果追加等大幅な修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,27 +15,43 @@
|
|
15
15
|

|
16
16
|
### 発生している問題・エラーメッセージ
|
17
17
|
|
18
|
-
|
18
|
+
プログラムを書いてみました(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです。目的にあった誤差が出ているか現在検証中です)。
|
19
19
|
|
20
20
|
|
21
21
|
### 該当のソースコード
|
22
|
-
以下にプログラムを示します。
|
22
|
+
以下に2値化画像取得、及び誤差を求めるプログラムを示します。
|
23
|
+
①2値化画像取得プログラム
|
24
|
+
```Python
|
25
|
+
import cv2
|
26
|
+
import numpy as np
|
27
|
+
from pylab import * #imshowが無いというエラー防止
|
28
|
+
|
29
|
+
img = cv2.imread("/content/drive/MyDrive/mask_before.png")
|
30
|
+
|
31
|
+
ret, thresh = cv2.threshold(img, 168, 255, cv2.THRESH_BINARY)#1つめの数以上の画素値は2つ目の数の画素値にする
|
32
|
+
thresh[thresh > 0] = 255 # 0以外は255に
|
33
|
+
cv2.imwrite("/content/drive/MyDrive/mask.png", thresh)
|
34
|
+
```
|
35
|
+
②誤差を求めるプログラム
|
23
36
|
```Python
|
24
37
|
import cv2
|
25
38
|
import os
|
26
39
|
import numpy as np
|
27
40
|
import matplotlib.pyplot as plt
|
28
41
|
|
29
|
-
TARGET_FILE = 'target.
|
42
|
+
TARGET_FILE = 'target.PNG'
|
43
|
+
#print(TARGET_FILE)
|
30
|
-
IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/i
|
44
|
+
IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/drive/MyDrive/1/'#imagesフォルダの中にあるファイルが比較対象
|
45
|
+
print(IMG_DIR)
|
31
|
-
IMG_SIZE = (312, 312)
|
46
|
+
#IMG_SIZE = (312, 312)
|
32
47
|
|
33
48
|
target_img_path = IMG_DIR + TARGET_FILE #比較対象を足す
|
34
|
-
target_img = cv2.imread(target
|
49
|
+
target_img = cv2.imread("/content/drive/MyDrive/1/target.PNG",0)
|
50
|
+
print(target_img)
|
35
51
|
#target_img = cv2.resize(target_img, IMG_SIZE)
|
36
52
|
#target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256]) #ヒストグラムを出す際に使う
|
37
53
|
|
38
|
-
#target_img = int(target_img)
|
54
|
+
#target_img = int(target_img_origin)
|
39
55
|
target_img[target_img <= 36] = 26
|
40
56
|
target_img[((target_img >= 37) & (target_img <= 139))] = 25
|
41
57
|
target_img[((target_img >= 140) & (target_img <= 224))] = 24
|
@@ -67,9 +83,10 @@
|
|
67
83
|
print(img_diff.min())
|
68
84
|
|
69
85
|
mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
|
86
|
+
print(mask_img) #Noneが返ってきたらファイルが存在していないので、これで確かめる
|
70
87
|
mask_img[mask_img > 0] = 1 # 0以外は1に
|
71
|
-
#img_multiply = np.multiply(img_diff,mask_img)
|
88
|
+
#img_multiply = np.multiply(img_diff,mask_img)
|
72
|
-
#print(np.multiply(img_diff,mask_img))
|
89
|
+
#print(np.multiply(img_diff,mask_img))
|
73
90
|
|
74
91
|
print((img_diff * mask_img).sum() / mask_img.sum())
|
75
92
|
print(np.average(img_diff, weights=mask_img))
|
@@ -81,7 +98,31 @@
|
|
81
98
|
|
82
99
|
### 試したこと
|
83
100
|
|
84
|
-
上記のコードを
|
101
|
+
上記のコードを書きました。これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えていました。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
|
102
|
+
以下に実際に出力されたものを示します。
|
103
|
+
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
|
104
|
+
/content/drive/MyDrive/1/
|
105
|
+
[[ 0 90 37 ... 176 255 255]
|
106
|
+
[190 226 225 ... 176 255 255]
|
107
|
+
[226 1 146 ... 176 255 255]
|
108
|
+
...
|
109
|
+
[168 168 168 ... 164 255 255]
|
110
|
+
[168 168 168 ... 167 255 255]
|
111
|
+
[168 168 168 ... 188 255 255]]
|
112
|
+
TARGET_FILE: target.PNG
|
113
|
+
3
|
114
|
+
-3
|
115
|
+
[[ 0 0 0 ... 255 255 255]
|
116
|
+
[255 255 253 ... 255 255 255]
|
117
|
+
[255 0 2 ... 255 255 255]
|
118
|
+
...
|
119
|
+
[ 0 0 0 ... 2 254 255]
|
120
|
+
[ 0 0 0 ... 0 254 255]
|
121
|
+
[ 0 0 0 ... 255 255 255]]
|
122
|
+
0.10114034578226946
|
123
|
+
0.10114034578226946
|
124
|
+
0.21099301078391514
|
125
|
+
0.21099301078391514
|
85
126
|
|
86
127
|
### 補足情報(FW/ツールのバージョンなど)
|
87
128
|
|
@@ -90,5 +131,5 @@
|
|
90
131
|
ブラウザ:Google Chrome(Google Colaboratory)
|
91
132
|
*ノートパソコンです。全て最新バージョンです。プログラミング中はcolab以外のタブ、アプリは開いていません。
|
92
133
|
*ご助言をいただいた事を受け、大きく内容(特にプログラム)を編集しています。
|
93
|
-
*急を要する為、こちらでも同じ質問をさせていただいています。しかし1週間近く経過しても回答が無かった為、teratailでも質問させていただいてます。
|
134
|
+
*急を要する為、こちらでも同じ質問をさせていただいています。しかし1週間近く経過しても回答が無かった為、teratailでも質問させていただいてます。https://ja.stackoverflow.com/questions/90923/%e6%b8%a9%e5%ba%a6%e5%88%86%e5%b8%83%e7%94%bb%e5%83%8f%e4%ba%88%e6%b8%ac%e3%81%ae%e8%aa%a4%e5%b7%ae%e3%81%ae%e5%8d%98%e4%bd%8d%e3%82%92%e6%b8%a9%e5%ba%a6%e3%81%ab%e5%af%be%e5%bf%9c%e3%81%95%e3%81%9b%e3%81%9f%e3%81%84
|
94
135
|
|
8
コードのインデント修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -62,20 +62,20 @@
|
|
62
62
|
comparing_img[((comparing_img>=140) & (comparing_img<=224))] = 24
|
63
63
|
comparing_img[comparing_img>=225] = 23
|
64
64
|
|
65
|
-
|
65
|
+
img_diff = target_img.astype(int) - comparing_img.astype(int)
|
66
|
-
|
66
|
+
print(img_diff.max())
|
67
|
-
|
67
|
+
print(img_diff.min())
|
68
68
|
|
69
|
-
|
69
|
+
mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
|
70
|
-
|
70
|
+
mask_img[mask_img > 0] = 1 # 0以外は1に
|
71
|
-
|
71
|
+
#img_multiply = np.multiply(img_diff,mask_img)
|
72
|
-
|
72
|
+
#print(np.multiply(img_diff,mask_img))
|
73
73
|
|
74
|
-
|
74
|
+
print((img_diff * mask_img).sum() / mask_img.sum())
|
75
|
-
|
75
|
+
print(np.average(img_diff, weights=mask_img))
|
76
76
|
|
77
|
-
|
77
|
+
print(np.abs(img_diff * mask_img).sum() / mask_img.sum())
|
78
|
-
|
78
|
+
print(np.average(np.abs(img_diff), weights=mask_img))
|
79
79
|
|
80
80
|
```
|
81
81
|
|
7
コードの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,35 +15,36 @@
|
|
15
15
|

|
16
16
|
### 発生している問題・エラーメッセージ
|
17
17
|
|
18
|
-
|
18
|
+
エラー問題を改善する事は出来ていませんが、プログラムを書いてみました(jbpb0さん、fanaさんの丁寧な助言に則り、一通り書いたつもりです。勿論、それまでのコードのミス指摘も大歓迎です)。
|
19
19
|
|
20
20
|
|
21
21
|
### 該当のソースコード
|
22
|
-
以下に
|
22
|
+
以下にプログラムを示します。しかし上記で述べた通り、恐らく不十分なコードです。
|
23
23
|
```Python
|
24
24
|
import cv2
|
25
25
|
import os
|
26
26
|
import numpy as np
|
27
27
|
import matplotlib.pyplot as plt
|
28
28
|
|
29
|
-
TARGET_FILE = '
|
29
|
+
TARGET_FILE = 'target.png'
|
30
|
-
IMG_DIR = os.path.abspath(os.path.dirname(__file__)) + '/images/'#imagesフォルダの中にあるファイルが比較対象
|
30
|
+
IMG_DIR = os.path.abspath(os.path.dirname("__file__")) + '/images/'#imagesフォルダの中にあるファイルが比較対象
|
31
|
-
|
31
|
+
IMG_SIZE = (312, 312)
|
32
32
|
|
33
33
|
target_img_path = IMG_DIR + TARGET_FILE #比較対象を足す
|
34
34
|
target_img = cv2.imread(target_img_path,0)
|
35
35
|
#target_img = cv2.resize(target_img, IMG_SIZE)
|
36
36
|
#target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256]) #ヒストグラムを出す際に使う
|
37
37
|
|
38
|
+
#target_img = int(target_img)
|
38
|
-
target_img[target_img<=36] = 26
|
39
|
+
target_img[target_img <= 36] = 26
|
39
|
-
target_img[((target_img>=37) & (target_img<=139))] = 25
|
40
|
+
target_img[((target_img >= 37) & (target_img <= 139))] = 25
|
40
|
-
target_img[((target_img>=140) & (target_img<=224))] = 24
|
41
|
+
target_img[((target_img >= 140) & (target_img <= 224))] = 24
|
41
|
-
target_img[target_img>=225] = 23
|
42
|
+
target_img[target_img >= 225] = 23
|
42
43
|
|
43
44
|
print('TARGET_FILE: %s' % (TARGET_FILE)) #%sは文字列出力に使う、ターゲットファイルはどのpngファイルか
|
44
45
|
|
45
|
-
img_diff = cv2.diff(TARGET_FILE, IMG_DIR) #diffで差分の計算を行う
|
46
|
+
#img_diff = cv2.diff(TARGET_FILE, IMG_DIR) #diffで差分の計算を行う
|
46
|
-
plt.imshow(img_diff)
|
47
|
+
#plt.imshow(img_diff)
|
47
48
|
|
48
49
|
#img_diff = cv2.cvtColor(img_diff, cv2.COLOR_BGR2GRAY)
|
49
50
|
|
@@ -57,13 +58,25 @@
|
|
57
58
|
comparing_img = cv2.imread(comparing_img_path,0)
|
58
59
|
|
59
60
|
comparing_img[comparing_img<=36] = 26
|
60
|
-
comparing_img[(comparing_img>=37) & (comparing_img<=139))] = 25
|
61
|
+
comparing_img[((comparing_img>=37) & (comparing_img<=139))] = 25
|
61
|
-
comparing_img[((comparing_img>=140) & comparing_img<=224))] = 24
|
62
|
+
comparing_img[((comparing_img>=140) & (comparing_img<=224))] = 24
|
62
63
|
comparing_img[comparing_img>=225] = 23
|
63
64
|
|
64
|
-
img_diff = target_img.astype(int) - comparing_img.astype(int)
|
65
|
+
img_diff = target_img.astype(int) - comparing_img.astype(int)
|
65
|
-
print(img_diff.max())
|
66
|
+
print(img_diff.max())
|
66
|
-
print(img_diff.min())
|
67
|
+
print(img_diff.min())
|
68
|
+
|
69
|
+
mask_img = cv2.imread("/content/drive/MyDrive/mask.png",0)
|
70
|
+
mask_img[mask_img > 0] = 1 # 0以外は1に
|
71
|
+
#img_multiply = np.multiply(img_diff,mask_img)
|
72
|
+
#print(np.multiply(img_diff,mask_img))
|
73
|
+
|
74
|
+
print((img_diff * mask_img).sum() / mask_img.sum())
|
75
|
+
print(np.average(img_diff, weights=mask_img))
|
76
|
+
|
77
|
+
print(np.abs(img_diff * mask_img).sum() / mask_img.sum())
|
78
|
+
print(np.average(np.abs(img_diff), weights=mask_img))
|
79
|
+
|
67
80
|
```
|
68
81
|
|
69
82
|
### 試したこと
|
6
画像の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|

|
14
14
|
|
15
|
-

|
16
16
|
### 発生している問題・エラーメッセージ
|
17
17
|
|
18
18
|
途中までプログラムを書いてみました(jbpb0さんの丁寧な助言に則り、温度差データ取得までを書いたつもりです)。この後のプログラムの書き方が分かりません(勿論、それまでのコードのミス指摘も大歓迎です)。
|
5
画像の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|

|
14
14
|
|
15
|
-

|
16
16
|
### 発生している問題・エラーメッセージ
|
17
17
|
|
18
18
|
途中までプログラムを書いてみました(jbpb0さんの丁寧な助言に則り、温度差データ取得までを書いたつもりです)。この後のプログラムの書き方が分かりません(勿論、それまでのコードのミス指摘も大歓迎です)。
|
4
画像の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,11 +7,12 @@
|
|
7
7
|
下の2枚の画像において陸地部分の温度の誤差がどれだけあるか、誤差の単位を温度で出力する方法をご教示いただけますでしょうか。それには先ず黒いところが26度、灰色のところが25度、薄い灰色が24度であるという事を含めないといけないと思います。無知で大変申し訳ございませんが、よろしくお願いいたします。
|
8
8
|
*今回は一例として示す為に以下から画像を取得しました。
|
9
9
|
URL:https://www.jma.go.jp/jma/kishou/know/suikei_kishou/kaisetsu.html
|
10
|
-
この画像をグレースケール画像に変換したものを、添付した画像としています。この添付した画像での温度の誤差を示したいと考えてください。
|
10
|
+
この画像をグレースケール画像に変換したものを、添付した画像としています。この添付した画像での温度の誤差を示したいと考えてください。1番下の画像が2値化したものです(海を黒、それ以外を255にしただけで境界線等は黒のままです)
|
11
11
|

|
12
12
|
|
13
13
|

|
14
14
|
|
15
|
+

|
15
16
|
### 発生している問題・エラーメッセージ
|
16
17
|
|
17
18
|
途中までプログラムを書いてみました(jbpb0さんの丁寧な助言に則り、温度差データ取得までを書いたつもりです)。この後のプログラムの書き方が分かりません(勿論、それまでのコードのミス指摘も大歓迎です)。
|
3
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -41,13 +41,28 @@
|
|
41
41
|
|
42
42
|
print('TARGET_FILE: %s' % (TARGET_FILE)) #%sは文字列出力に使う、ターゲットファイルはどのpngファイルか
|
43
43
|
|
44
|
-
img_diff = cv2.
|
44
|
+
img_diff = cv2.diff(TARGET_FILE, IMG_DIR) #diffで差分の計算を行う
|
45
45
|
plt.imshow(img_diff)
|
46
46
|
|
47
47
|
#img_diff = cv2.cvtColor(img_diff, cv2.COLOR_BGR2GRAY)
|
48
48
|
|
49
49
|
|
50
50
|
files = os.listdir(IMG_DIR) #ディレクトリとファイルの一覧を取得
|
51
|
+
for file in files:
|
52
|
+
if file == '.DS_Store' or file == TARGET_FILE:
|
53
|
+
continue
|
54
|
+
|
55
|
+
comparing_img_path = IMG_DIR + file
|
56
|
+
comparing_img = cv2.imread(comparing_img_path,0)
|
57
|
+
|
58
|
+
comparing_img[comparing_img<=36] = 26
|
59
|
+
comparing_img[(comparing_img>=37) & (comparing_img<=139))] = 25
|
60
|
+
comparing_img[((comparing_img>=140) & comparing_img<=224))] = 24
|
61
|
+
comparing_img[comparing_img>=225] = 23
|
62
|
+
|
63
|
+
img_diff = target_img.astype(int) - comparing_img.astype(int)
|
64
|
+
print(img_diff.max())
|
65
|
+
print(img_diff.min())
|
51
66
|
```
|
52
67
|
|
53
68
|
### 試したこと
|
2
プログラム中心に修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,43 +14,45 @@
|
|
14
14
|
|
15
15
|
### 発生している問題・エラーメッセージ
|
16
16
|
|
17
|
-
|
17
|
+
途中までプログラムを書いてみました(jbpb0さんの丁寧な助言に則り、温度差データ取得までを書いたつもりです)。この後のプログラムの書き方が分かりません(勿論、それまでのコードのミス指摘も大歓迎です)。
|
18
18
|
|
19
19
|
|
20
20
|
### 該当のソースコード
|
21
|
-
以下に
|
21
|
+
以下に途中まででありますがプログラムを示します。しかし上記で述べた通り、不十分なコードです。
|
22
22
|
```Python
|
23
23
|
import cv2
|
24
24
|
import os
|
25
|
+
import numpy as np
|
26
|
+
import matplotlib.pyplot as plt
|
25
27
|
|
26
28
|
TARGET_FILE = '05.png'
|
27
|
-
IMG_DIR = os.path.abspath(os.path.dirname(__file__)) + '/images/'
|
29
|
+
IMG_DIR = os.path.abspath(os.path.dirname(__file__)) + '/images/'#imagesフォルダの中にあるファイルが比較対象
|
28
|
-
IMG_SIZE = (200, 200)
|
30
|
+
#IMG_SIZE = (200, 200)
|
29
31
|
|
30
|
-
target_img_path = IMG_DIR + TARGET_FILE
|
32
|
+
target_img_path = IMG_DIR + TARGET_FILE #比較対象を足す
|
31
|
-
target_img = cv2.imread(target_img_path)
|
33
|
+
target_img = cv2.imread(target_img_path,0)
|
32
|
-
target_img = cv2.resize(target_img, IMG_SIZE)
|
34
|
+
#target_img = cv2.resize(target_img, IMG_SIZE)
|
33
|
-
target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256])
|
35
|
+
#target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256]) #ヒストグラムを出す際に使う
|
34
36
|
|
37
|
+
target_img[target_img<=36] = 26
|
35
|
-
|
38
|
+
target_img[((target_img>=37) & (target_img<=139))] = 25
|
39
|
+
target_img[((target_img>=140) & (target_img<=224))] = 24
|
40
|
+
target_img[target_img>=225] = 23
|
36
41
|
|
37
|
-
files = os.listdir(IMG_DIR)
|
38
|
-
for file in files:
|
39
|
-
|
42
|
+
print('TARGET_FILE: %s' % (TARGET_FILE)) #%sは文字列出力に使う、ターゲットファイルはどのpngファイルか
|
40
|
-
continue
|
41
43
|
|
42
|
-
comparing_img_path = IMG_DIR + file
|
43
|
-
comparing_img = cv2.imread(comparing_img_path)
|
44
|
-
|
44
|
+
img_diff = cv2.absdiff(TARGET_FILE, IMG_DIR) #diffで差分の計算を行う
|
45
|
-
|
45
|
+
plt.imshow(img_diff)
|
46
46
|
|
47
|
-
|
47
|
+
#img_diff = cv2.cvtColor(img_diff, cv2.COLOR_BGR2GRAY)
|
48
|
+
|
49
|
+
|
48
|
-
|
50
|
+
files = os.listdir(IMG_DIR) #ディレクトリとファイルの一覧を取得
|
49
51
|
```
|
50
52
|
|
51
53
|
### 試したこと
|
52
54
|
|
53
|
-
|
55
|
+
上記のコードを途中まで書きました。これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えています。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
|
54
56
|
|
55
57
|
### 補足情報(FW/ツールのバージョンなど)
|
56
58
|
|
@@ -58,5 +60,6 @@
|
|
58
60
|
環境:Windows10
|
59
61
|
ブラウザ:Google Chrome(Google Colaboratory)
|
60
62
|
*ノートパソコンです。全て最新バージョンです。プログラミング中はcolab以外のタブ、アプリは開いていません。
|
63
|
+
*ご助言をいただいた事を受け、大きく内容(特にプログラム)を編集しています。
|
61
64
|
*急を要する為、こちらでも同じ質問をさせていただいています。しかし1週間近く経過しても回答が無かった為、teratailでも質問させていただいてます。未熟な私にご教授いただければ幸いです。申し訳ございません。https://ja.stackoverflow.com/questions/90923/%e6%b8%a9%e5%ba%a6%e5%88%86%e5%b8%83%e7%94%bb%e5%83%8f%e4%ba%88%e6%b8%ac%e3%81%ae%e8%aa%a4%e5%b7%ae%e3%81%ae%e5%8d%98%e4%bd%8d%e3%82%92%e6%b8%a9%e5%ba%a6%e3%81%ab%e5%af%be%e5%bf%9c%e3%81%95%e3%81%9b%e3%81%9f%e3%81%84
|
62
65
|
|
1
情報の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
|
51
51
|
### 試したこと
|
52
52
|
|
53
|
-
取り敢えず類似率を出しました。類似率は1以下とし、全く同じ場合は1が出力される様にしました。同じ場合でない場合は例えば0.56869といった様な出力がされる様にしました。該当コードを上記に記述します。しかしこれでは誤差の単位が無く、これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えています。
|
53
|
+
取り敢えず類似率を出しました。類似率は1以下とし、全く同じ場合は1が出力される様にしました。同じ場合でない場合は例えば0.56869といった様な出力がされる様にしました。該当コードを上記に記述します。しかしこれでは誤差の単位が無く、これを全体的にどれだけの温度の誤差があるのか(例えばこの2枚を比較した際に0.27788度誤差があるの様に)を出力する様にしたいと考えています。この誤差は図全体での平均での温度誤差に対応します。つまり1つの数値のみ出れば良いという考え方です。
|
54
54
|
|
55
55
|
### 補足情報(FW/ツールのバージョンなど)
|
56
56
|
|