質問編集履歴
2
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,15 +8,7 @@
|
|
8
8
|
### 発生している問題・エラーメッセージ
|
9
9
|
---------------------------------------------------------------------------
|
10
10
|
以下のようなエラーが出ています。
|
11
|
-
|
12
|
-
~\AppData\Local\Temp\ipykernel_30076\3233061824.py in <module>
|
13
|
-
3 from matplotlib import pyplot as plt
|
14
|
-
4 img = cv2.imread('pic-20221101T004942Z.png')
|
15
|
-
----> 5 h, w, _ = img.shape
|
16
|
-
6
|
17
|
-
7 # 全画素の色リストを作成
|
18
|
-
|
19
|
-
AttributeError: 'NoneType' object has no attribute 'shape'
|
11
|
+
NameError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_30076\3627228303.py in <module> 16 17 # 出現回数(ピクセル数)をカウントする ---> 18 counter = collections.Counter(color_list) 19 20 # ピクセル数と色をpandasデータフレーム化 NameError: name 'collections' is not defined
|
20
12
|
|
21
13
|
### 該当のソースコード
|
22
14
|
以下のコードを作成しました。
|
1
インシデントの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,15 +20,17 @@
|
|
20
20
|
|
21
21
|
### 該当のソースコード
|
22
22
|
以下のコードを作成しました。
|
23
|
+
|
24
|
+
```python
|
23
25
|
import numpy as np
|
24
26
|
import cv2
|
25
27
|
from matplotlib import pyplot as plt
|
26
28
|
img = cv2.imread('pic-20221101T004942Z.png')
|
27
29
|
h, w, _ = img.shape
|
28
30
|
|
29
|
-
全画素の色リストを作成
|
31
|
+
#全画素の色リストを作成
|
30
|
-
色情報は B*1000000 + G*1000 + R に変換し
|
32
|
+
#色情報は B*1000000 + G*1000 + R に変換し
|
31
|
-
0埋めした9桁の文字列に
|
33
|
+
#0埋めした9桁の文字列に
|
32
34
|
color_list = []
|
33
35
|
for y in range(h):
|
34
36
|
for x in range(w):
|
@@ -36,23 +38,23 @@
|
|
36
38
|
img[y, x, 1]*1000 +
|
37
39
|
img[y, x, 2]).zfill(9))
|
38
40
|
|
39
|
-
出現回数(ピクセル数)をカウントする
|
41
|
+
#出現回数(ピクセル数)をカウントする
|
40
42
|
counter = collections.Counter(color_list)
|
41
43
|
|
42
|
-
ピクセル数と色をpandasデータフレーム化
|
44
|
+
#ピクセル数と色をpandasデータフレーム化
|
43
45
|
df = pd.DataFrame(data=[list(counter.values()), list(counter.keys())],
|
44
46
|
index = ['pixels', 'BGR']).T
|
45
47
|
|
46
|
-
ピクセル数が全体の1%未満の行を削除(ノイズとみなす)
|
48
|
+
#ピクセル数が全体の1%未満の行を削除(ノイズとみなす)
|
47
49
|
df2 = df[df['pixels'] > h*w*0.01]
|
48
50
|
|
49
|
-
降順に並べ替え
|
51
|
+
#降順に並べ替え
|
50
52
|
df3 = df2.sort_values(by=['pixels'], ascending=False)
|
51
53
|
|
52
|
-
ndarrayに変換し一行ずつ読み出しリストに追加
|
54
|
+
#ndarrayに変換し一行ずつ読み出しリストに追加
|
53
|
-
色情報は9桁の文字列なので3文字ずつ読み出し
|
55
|
+
#色情報は9桁の文字列なので3文字ずつ読み出し
|
54
|
-
255で割って0~1の数字に変換
|
56
|
+
#255で割って0~1の数字に変換
|
55
|
-
順番をBGR→RGBに変更
|
57
|
+
#順番をBGR→RGBに変更
|
56
58
|
x_list =[]
|
57
59
|
rgb_list =[]
|
58
60
|
for i in df3.to_numpy():
|
@@ -61,7 +63,7 @@
|
|
61
63
|
int(i[1][3:6])/255,
|
62
64
|
int(i[1][0:3])/255])
|
63
65
|
|
64
|
-
円グラフの作成
|
66
|
+
#円グラフの作成
|
65
67
|
plt.pie(x_list,
|
66
68
|
colors=rgb_list,
|
67
69
|
wedgeprops={'linewidth': 1, 'edgecolor':'black'},
|
@@ -69,6 +71,7 @@
|
|
69
71
|
startangle=90)
|
70
72
|
plt.show()
|
71
73
|
|
74
|
+
```
|
72
75
|
|
73
76
|
### 参考にしたサンプルコード
|
74
77
|
https://tat-pytone.hatenablog.com/entry/2022/04/25/203755
|