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

質問編集履歴

10

こで

2021/01/17 03:07

投稿

grandchild
grandchild

スコア10

title CHANGED
File without changes
body CHANGED
@@ -1,48 +1,48 @@
1
- 黒(輝度Lが0)以外の背景色近い色(最頻値からの色の距離が小さいもの)を黒く塗るプログラムを作成しました。RGBについては、昨日質問させていただいて、お二人のご助により計算速度向上できました。今度はCIELuv空間で試みたところ、一つの方法(result_s.jpg)ではうまくいくのですが、もう一つの方法ではエラーが出てうまくいきません。result_k.jpgがきちんと出できるよう、ご教示いただけないでしょうか?
1
+ ```ここに言
2
+ import numpy as np
3
+ import cv2
4
+ import scipy.stats as sstats
5
+ import matplotlib.pyplot as plt
2
6
 
3
- 1 import numpy as np
4
- 2 import cv2
5
- 3 import scipy.stats as sstats
6
- 4 import matplotlib.pyplot as plt
7
- 5
8
- 6 def func1(luv):
7
+ def func1(luv):
9
- 7 l, u, v = cv2.split(luv.astype(int))
8
+ l, u, v = cv2.split(luv.astype(int))
10
- 8 mode_l = sstats.mode(l[l.nonzero()])[0][0]
9
+ mode_l = sstats.mode(l[l.nonzero()])[0][0]
11
- 9 mode_u = sstats.mode(u[l.nonzero()])[0][0]
10
+ mode_u = sstats.mode(u[l.nonzero()])[0][0]
12
- 10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
11
+ mode_v = sstats.mode(v[l.nonzero()])[0][0]
13
- 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
12
+ luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
14
- 12 return luv
13
+ return luv
15
- 13
16
- 14 def func2(luv):
17
- 15 l, u, v = cv2.split(luv)
18
- 16 mode_l = sstats.mode(l[l.nonzero()])[0][0]
19
- 17 mode_u = sstats.mode(u[l.nonzero()])[0][0]
20
- 18 mode_v = sstats.mode(v[l.nonzero()])[0][0]
21
- 19 mode = np.array([mode_l, mode_u, mode_v], dtype=int)
22
- 20 a = (mode - luv)**2
23
- 21 b = a[:, :, 1] + a[:, :, 2]
24
- 22 c = (b >= 3000).astype(int)
25
- 23 cs = np.stack([c] * 3, axis=2)
26
- 24 luv = luv * cs
27
- 25 return luv
28
- 26
29
- 27 bgr = cv2.imread('bara.jpg')
30
- 28 luv = cv2.cvtColor(bgr, cv2.COLOR_BGR2Luv)
31
- 29
32
- 30 luvs = func1(luv)
33
- 31 result_s = cv2.cvtColor(luvs, cv2.COLOR_Luv2BGR)
34
- 32 cv2.imwrite("result_s.jpg",result_s)
35
- 33 rgb = result_s[:, :, [2, 1, 0]]
36
- 34 plt.imshow(rgb)
37
- 35 plt.show()
38
- 36
39
- 37 luvk = func2(luv)
40
- 38 result_k = cv2.cvtColor(luvk, cv2.COLOR_Luv2BGR)
41
- 39 cv2.imwrite("result_k.jpg",result_k)
42
- 40 rgb = result_k[:, :, [2, 1, 0]]
43
- 41 plt.imshow(rgb)
44
- 42 plt.show()
45
14
 
15
+ def func2(luv):
16
+ l, u, v = cv2.split(luv)
17
+ mode_l = sstats.mode(l[l.nonzero()])[0][0]
18
+ mode_u = sstats.mode(u[l.nonzero()])[0][0]
19
+ mode_v = sstats.mode(v[l.nonzero()])[0][0]
20
+ mode = np.array([mode_l, mode_u, mode_v], dtype=int)
21
+ a = (mode - luv)**2
22
+ b = a[:, :, 1] + a[:, :, 2]
23
+ c = (b >= 3000).astype(int)
24
+ cs = np.stack([c] * 3, axis=2)
25
+ luv = luv * cs
26
+ return luv
27
+
28
+ bgr = cv2.imread('bara.jpg')
29
+ luv = cv2.cvtColor(bgr, cv2.COLOR_BGR2Luv)
30
+
31
+ luvs = func1(luv)
32
+ result_s = cv2.cvtColor(luvs, cv2.COLOR_Luv2BGR)
33
+ cv2.imwrite("result_s.jpg",result_s)
34
+ rgb = result_s[:, :, [2, 1, 0]]
35
+ plt.imshow(rgb)
36
+ plt.show()
37
+
38
+ luvk = func2(luv)
39
+ result_k = cv2.cvtColor(luvk, cv2.COLOR_Luv2BGR)
40
+ cv2.imwrite("result_k.jpg",result_k)
41
+ rgb = result_k[:, :, [2, 1, 0]]
42
+ plt.imshow(rgb)
43
+ plt.show()
44
+ ```黒(輝度Lが0)以外の背景色に近い色(最頻値からの色の距離が小さいもの)を黒く塗るプログラムを作成しました。RGBについては、昨日質問させていただいて、お二人のご助言により計算速度を向上できました。今度はCIELuv空間で試みたところ、一つの方法(result_s.jpg)ではうまくいくのですが、もう一つの方法ではエラーが出てうまくいきません。result_k.jpgがきちんと出力できるよう、ご教示いただけないでしょうか?
45
+
46
46
  入力画像と、成功した結果result_s.jpgはそれぞれ下画像のとおりです。
47
47
 
48
48
  ![入力画像はこれです。](90dc77d46b83fe5fb464cca373ffd2d8.jpeg)

9

2021/01/17 03:07

投稿

grandchild
grandchild

スコア10

title CHANGED
File without changes
body 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
  1 import numpy as np
4
4
  2 import cv2

8

2021/01/17 02:44

投稿

grandchild
grandchild

スコア10

title CHANGED
File without changes
body CHANGED
@@ -43,6 +43,8 @@
43
43
  41 plt.imshow(rgb)
44
44
  42 plt.show()
45
45
 
46
+ 入力画像と、成功した結果result_s.jpgはそれぞれ下画像のとおりです。
47
+
46
48
  ![入力画像はこれです。](90dc77d46b83fe5fb464cca373ffd2d8.jpeg)
47
49
  ![result_s.jpgはこれです。](46fc7a95adb46a1e4beedad029df935c.jpeg)
48
50
 

7

修正

2021/01/17 02:40

投稿

grandchild
grandchild

スコア10

title CHANGED
File without changes
body CHANGED
@@ -43,8 +43,8 @@
43
43
  41 plt.imshow(rgb)
44
44
  42 plt.show()
45
45
 
46
- 入力画像はこれです。![イメージ説明](90dc77d46b83fe5fb464cca373ffd2d8.jpeg)
46
+ ![入力画像はこれです。](90dc77d46b83fe5fb464cca373ffd2d8.jpeg)
47
- result_s.jpgはこれです。![![イメージ説明](34026550ca65e4bebe486627b40b553f.jpeg)](46fc7a95adb46a1e4beedad029df935c.jpeg)
47
+ ![result_s.jpgはこれです。](46fc7a95adb46a1e4beedad029df935c.jpeg)
48
48
 
49
49
  エラーメッセージはこれです。
50
50
  Traceback (most recent call last):

6

タイトル

2021/01/17 02:38

投稿

grandchild
grandchild

スコア10

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

5

タイトル

2021/01/17 02:37

投稿

grandchild
grandchild

スコア10

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

4

2021/01/17 02:35

投稿

grandchild
grandchild

スコア10

title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,7 @@
10
10
  8 mode_l = sstats.mode(l[l.nonzero()])[0][0]
11
11
  9 mode_u = sstats.mode(u[l.nonzero()])[0][0]
12
12
  10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
13
- 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
13
+ 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
14
14
  12 return luv
15
15
  13
16
16
  14 def func2(luv):

3

**

2021/01/17 02:33

投稿

grandchild
grandchild

スコア10

title CHANGED
@@ -1,1 +1,1 @@
1
- CIELuv空間での背景削除の処理の違いについて
1
+ **CIELuv空間での背景削除の処理の違いについて
body CHANGED
@@ -10,7 +10,7 @@
10
10
  8 mode_l = sstats.mode(l[l.nonzero()])[0][0]
11
11
  9 mode_u = sstats.mode(u[l.nonzero()])[0][0]
12
12
  10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
13
- 11 luv[(mode_u - u) ** 2 + (mode_v - v) ** 2 < 3000., :] = [0, 0, 0]
13
+ 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
14
14
  12 return luv
15
15
  13
16
16
  14 def func2(luv):

2

2乗の**が消えていた

2021/01/17 02:32

投稿

grandchild
grandchild

スコア10

title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,7 @@
10
10
  8 mode_l = sstats.mode(l[l.nonzero()])[0][0]
11
11
  9 mode_u = sstats.mode(u[l.nonzero()])[0][0]
12
12
  10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
13
- 11 luv[(mode_u - u) **2 + (mode_v - v) **2 < 3000., :] = [0, 0, 0]
13
+ 11 luv[(mode_u - u) ** 2 + (mode_v - v) ** 2 < 3000., :] = [0, 0, 0]
14
14
  12 return luv
15
15
  13
16
16
  14 def func2(luv):

1

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

2021/01/17 02:32

投稿

grandchild
grandchild

スコア10

title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,7 @@
10
10
  8 mode_l = sstats.mode(l[l.nonzero()])[0][0]
11
11
  9 mode_u = sstats.mode(u[l.nonzero()])[0][0]
12
12
  10 mode_v = sstats.mode(v[l.nonzero()])[0][0]
13
- 11 luv[(mode_u - u)**2 + (mode_v - v)**2 < 3000., :] = [0, 0, 0]
13
+ 11 luv[(mode_u - u) **2 + (mode_v - v) **2 < 3000., :] = [0, 0, 0]
14
14
  12 return luv
15
15
  13
16
16
  14 def func2(luv):