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

回答編集履歴

2

追記

2021/04/07 05:21

投稿

fana
fana

スコア12299

answer CHANGED
@@ -1,6 +1,9 @@
1
1
  要は,「画素の個数を数えたい」という話ですよね.
2
2
  contourAreaだと問題がある,ということであるならば,単に画像を自前で走査して数えてやればよいだけの話ではないのでしょうか?
3
3
 
4
+ [追記]
5
+ 自前で数えるかわりに,connectedComponentsWithStats あたりが利用できるかもしれません.
6
+
4
7
  ---
5
8
 
6
9
  それはそれとして,現状のコードがやりたいことに合っていない(=求めたい比率を計算する形になっていない)ように見えます.

1

修正

2021/04/07 05:21

投稿

fana
fana

スコア12299

answer CHANGED
@@ -5,12 +5,17 @@
5
5
 
6
6
  それはそれとして,現状のコードがやりたいことに合っていない(=求めたい比率を計算する形になっていない)ように見えます.
7
7
 
8
- > max_area = cv2.contourArea(max_cnt)
8
+ ~~> max_area = cv2.contourArea(max_cnt)~~
9
9
 
10
- は,2値画像の3つの白い領域のうちの1つの領域だけを相手にして面積を求めており,
10
+ ~~は,2値画像の3つの白い領域のうちの1つの領域だけを相手にして面積を求めており,~~
11
- 他方,
11
+ ~~他方,~~
12
12
 
13
+ ~~> white_area = cv2.countNonZero(binary)~~
14
+
15
+ ~~では,2値画像の白い画素の総数(:3つの領域全ての面積の総和)を求めています.~~
16
+ ~~故に,`white_area/max_area`は1よりも大きくなるでしょう.~~
17
+
13
18
  > white_area = cv2.countNonZero(binary)
14
19
 
15
- は,2値画像の白い画素の総数(:3つの領域全ての面積の総和)を求めています.
20
+ は,2値画像の白い画素の総数(:3つの白い領域全ての面積の総和)を求めており,
16
- ,`white_area/max_area`は1よりも大きくるでしょう
21
+ 無関係な2つの領域を含む形になっています