質問編集履歴

10

こで

2021/01/17 03:07

投稿

grandchild
grandchild

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,90 +1,90 @@
1
- 黒(輝度Lが0)以外の背景色近い色(最頻値からの色の距離が小さいもの)を黒く塗るプログラムを作成しました。RGBについては、昨日質問させていただいて、お二人のご助により計算速度向上できました。今度はCIELuv空間で試みたところ、一つの方法(result_s.jpg)ではうまくいくのですが、もう一つの方法ではエラーが出てうまくいきません。result_k.jpgがきちんと出できるよう、ご教示いただけないでしょうか?
1
+ ```ここに言
2
+
3
+ import numpy as np
4
+
5
+ import cv2
6
+
7
+ import scipy.stats as sstats
8
+
9
+ import matplotlib.pyplot as plt
2
10
 
3
11
 
4
12
 
5
- 1 import numpy as np
13
+ def func1(luv):
6
14
 
7
- 2 import cv2
15
+ l, u, v = cv2.split(luv.astype(int))
8
16
 
9
- 3 import scipy.stats as sstats
17
+ mode_l = sstats.mode(l[l.nonzero()])[0][0]
10
18
 
11
- 4 import matplotlib.pyplot as plt
19
+ mode_u = sstats.mode(u[l.nonzero()])[0][0]
12
20
 
13
- 5
21
+ mode_v = sstats.mode(v[l.nonzero()])[0][0]
14
22
 
15
- 6 def func1(luv):
23
+ luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
16
24
 
17
- 7 l, u, v = cv2.split(luv.astype(int))
25
+ return luv
18
26
 
19
- 8 mode_l = sstats.mode(l[l.nonzero()])[0][0]
20
27
 
21
- 9 mode_u = sstats.mode(u[l.nonzero()])[0][0]
22
28
 
23
- 10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
29
+ def func2(luv):
24
30
 
25
- 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
31
+ l, u, v = cv2.split(luv)
26
32
 
27
- 12 return luv
33
+ mode_l = sstats.mode(l[l.nonzero()])[0][0]
28
34
 
29
- 13
35
+ mode_u = sstats.mode(u[l.nonzero()])[0][0]
30
36
 
31
- 14 def func2(luv):
37
+ mode_v = sstats.mode(v[l.nonzero()])[0][0]
32
38
 
33
- 15 l, u, v = cv2.split(luv)
39
+ mode = np.array([mode_l, mode_u, mode_v], dtype=int)
34
40
 
35
- 16 mode_l = sstats.mode(l[l.nonzero()])[0][0]
41
+ a = (mode - luv)**2
36
42
 
37
- 17 mode_u = sstats.mode(u[l.nonzero()])[0][0]
43
+ b = a[:, :, 1] + a[:, :, 2]
38
44
 
39
- 18 mode_v = sstats.mode(v[l.nonzero()])[0][0]
45
+ c = (b >= 3000).astype(int)
40
46
 
41
- 19 mode = np.array([mode_l, mode_u, mode_v], dtype=int)
47
+ cs = np.stack([c] * 3, axis=2)
42
48
 
43
- 20 a = (mode - luv)**2
49
+ luv = luv * cs
44
50
 
45
- 21 b = a[:, :, 1] + a[:, :, 2]
51
+ return luv
46
52
 
47
- 22 c = (b >= 3000).astype(int)
48
53
 
49
- 23 cs = np.stack([c] * 3, axis=2)
50
54
 
51
- 24 luv = luv * cs
55
+ bgr = cv2.imread('bara.jpg')
52
56
 
53
- 25 return luv
57
+ luv = cv2.cvtColor(bgr, cv2.COLOR_BGR2Luv)
54
58
 
55
- 26
56
59
 
57
- 27 bgr = cv2.imread('bara.jpg')
58
60
 
59
- 28 luv = cv2.cvtColor(bgr, cv2.COLOR_BGR2Luv)
61
+ luvs = func1(luv)
60
62
 
61
- 29
63
+ result_s = cv2.cvtColor(luvs, cv2.COLOR_Luv2BGR)
62
64
 
63
- 30 luvs = func1(luv)
65
+ cv2.imwrite("result_s.jpg",result_s)
64
66
 
65
- 31 result_s = cv2.cvtColor(luvs, cv2.COLOR_Luv2BGR)
67
+ rgb = result_s[:, :, [2, 1, 0]]
66
68
 
67
- 32 cv2.imwrite("result_s.jpg",result_s)
69
+ plt.imshow(rgb)
68
70
 
69
- 33 rgb = result_s[:, :, [2, 1, 0]]
71
+ plt.show()
70
72
 
71
- 34 plt.imshow(rgb)
72
73
 
73
- 35 plt.show()
74
74
 
75
- 36
75
+ luvk = func2(luv)
76
76
 
77
- 37 luvk = func2(luv)
77
+ result_k = cv2.cvtColor(luvk, cv2.COLOR_Luv2BGR)
78
78
 
79
- 38 result_k = cv2.cvtColor(luvk, cv2.COLOR_Luv2BGR)
79
+ cv2.imwrite("result_k.jpg",result_k)
80
80
 
81
- 39 cv2.imwrite("result_k.jpg",result_k)
81
+ rgb = result_k[:, :, [2, 1, 0]]
82
82
 
83
- 40 rgb = result_k[:, :, [2, 1, 0]]
83
+ plt.imshow(rgb)
84
84
 
85
- 41 plt.imshow(rgb)
85
+ plt.show()
86
86
 
87
- 42 plt.show()
87
+ ```黒(輝度Lが0)以外の背景色に近い色(最頻値からの色の距離が小さいもの)を黒く塗るプログラムを作成しました。RGBについては、昨日質問させていただいて、お二人のご助言により計算速度を向上できました。今度はCIELuv空間で試みたところ、一つの方法(result_s.jpg)ではうまくいくのですが、もう一つの方法ではエラーが出てうまくいきません。result_k.jpgがきちんと出力できるよう、ご教示いただけないでしょうか?
88
88
 
89
89
 
90
90
 

9

2021/01/17 03:07

投稿

grandchild
grandchild

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 黒以外の黒っぽい背景色を黒く塗るプログラムを作成しました。RGBについては、昨日質問させていただいて、お二人のご助言により計算速度を向上できました。今度はCIELuv空間で試みたところ、一つの方法(result_s.jpg)ではうまくいくのですが、もう一つの方法ではエラーが出てうまくいきません。result_k.jpgがきちんと出力できるよう、ご教示いただけないでしょうか?
1
+ (輝度Lが0)以外の背景色に近い色(最頻値からの色の距離が小さいもの)を黒く塗るプログラムを作成しました。RGBについては、昨日質問させていただいて、お二人のご助言により計算速度を向上できました。今度はCIELuv空間で試みたところ、一つの方法(result_s.jpg)ではうまくいくのですが、もう一つの方法ではエラーが出てうまくいきません。result_k.jpgがきちんと出力できるよう、ご教示いただけないでしょうか?
2
2
 
3
3
 
4
4
 

8

2021/01/17 02:44

投稿

grandchild
grandchild

スコア10

test CHANGED
File without changes
test CHANGED
@@ -88,6 +88,10 @@
88
88
 
89
89
 
90
90
 
91
+ 入力画像と、成功した結果result_s.jpgはそれぞれ下画像のとおりです。
92
+
93
+
94
+
91
95
  ![入力画像はこれです。](90dc77d46b83fe5fb464cca373ffd2d8.jpeg)
92
96
 
93
97
  ![result_s.jpgはこれです。](46fc7a95adb46a1e4beedad029df935c.jpeg)

7

修正

2021/01/17 02:40

投稿

grandchild
grandchild

スコア10

test CHANGED
File without changes
test CHANGED
@@ -88,9 +88,9 @@
88
88
 
89
89
 
90
90
 
91
- 入力画像はこれです。![イメージ説明](90dc77d46b83fe5fb464cca373ffd2d8.jpeg)
91
+ ![入力画像はこれです。](90dc77d46b83fe5fb464cca373ffd2d8.jpeg)
92
92
 
93
- result_s.jpgはこれです。![![イメージ説明](34026550ca65e4bebe486627b40b553f.jpeg)](46fc7a95adb46a1e4beedad029df935c.jpeg)
93
+ ![result_s.jpgはこれです。](46fc7a95adb46a1e4beedad029df935c.jpeg)
94
94
 
95
95
 
96
96
 

6

タイトル

2021/01/17 02:38

投稿

grandchild
grandchild

スコア10

test CHANGED
@@ -1 +1 @@
1
- Python:CIELuv空間で背景削除の処理の違いについて
1
+ Python:画素置き換えの処理の違いについて
test CHANGED
File without changes

5

タイトル

2021/01/17 02:37

投稿

grandchild
grandchild

スコア10

test CHANGED
@@ -1 +1 @@
1
- **CIELuv空間での背景削除の処理の違いについて
1
+ Python:CIELuv空間での背景削除の処理の違いについて
test CHANGED
File without changes

4

2021/01/17 02:35

投稿

grandchild
grandchild

スコア10

test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
24
24
 
25
- 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
25
+ 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
26
26
 
27
27
  12 return luv
28
28
 

3

**

2021/01/17 02:33

投稿

grandchild
grandchild

スコア10

test CHANGED
@@ -1 +1 @@
1
- CIELuv空間での背景削除の処理の違いについて
1
+ **CIELuv空間での背景削除の処理の違いについて
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
24
24
 
25
- 11 luv[(mode_u - u) ** 2 + (mode_v - v) ** 2 < 3000., :] = [0, 0, 0]
25
+ 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
26
26
 
27
27
  12 return luv
28
28
 

2

2乗の**が消えていた

2021/01/17 02:32

投稿

grandchild
grandchild

スコア10

test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
24
24
 
25
- 11 luv[(mode_u - u) **2 + (mode_v - v) **2 < 3000., :] = [0, 0, 0]
25
+ 11 luv[(mode_u - u) ** 2 + (mode_v - v) ** 2 < 3000., :] = [0, 0, 0]
26
26
 
27
27
  12 return luv
28
28
 

1

2乗の**が消えていたので

2021/01/17 02:32

投稿

grandchild
grandchild

スコア10

test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
24
24
 
25
- 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
25
+ 11 luv[(mode_u - u) **2 + (mode_v - v) **2 < 3000., :] = [0, 0, 0]
26
26
 
27
27
  12 return luv
28
28