前提・実現したいこと
プログラミング初心者なため,わかりにくかったらすいません
質問は2つあります
1つ目は,counter Areaで表示される面積についてです
https://teratail.com/questions/49927
↑のURLで書かれているように,counterAreaで表示される面積は実際の面積よりも小さい値が表示されるのですが,実際の面積を表示するにはどのようにすればよいのでしょうか?
2つ目は,面積の合計です
下記のように画像から複数の輪郭を検出し,最後のprint(area)の辺りで各輪郭ごとの面積を表示することができたのですが,その輪郭ごとの面積の合計を求めるにはどうしたらよいのでしょうか?
言葉だけでなくコード等を用いて説明していただけると幸いです
よろしくお願いします
該当のソースコード
python
1import cv2 2import numpy as np 3#画像読み込み 4img = cv2.imread(r"C:\Users\2104101\Desktop\dog.png") 5 6#ネガポジ反転 7rimg = cv2.bitwise_not(img) 8 9cv2.imwrite(r'C:\Users\2104101\Desktop\d.png', img_contour2) 10 11#グレイスケール化 12gray = cv2.cvtColor(rimg, cv2.COLOR_BGR2GRAY) 13 14#2値化 15ret,th = cv2.threshold(gray,145,255,cv2.THRESH_BINARY) 16 17#輪郭検出 18contours, hierarchy = cv2.findContours(th, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 19 20#小さい輪郭を削除 21contours = list(filter(lambda x: cv2.contourArea(x) > 1, contours)) 22 23#輪郭描画 24img_contour = cv2.drawContours(img, contours, -1, (0, 255, 0),5) 25 26#輪郭の面積を順番に出していく 27for i, cnt in enumerate(contours): 28 area = cv2.contourArea(cnt) 29 print(area)
補足情報(FW/ツールのバージョンなど)
python3系 anaconda opencv を使用
あなたの回答
tips
プレビュー