前提・実現したいこと
1.画像内の赤い線/それ以外の領域
2.基準になる線(青線)/それ以外の領域
で画像を二値化し、1,2の輪郭・面積を検出、青い線の面積を基準とすることで
画像内に描画されている赤い線の合計の長さを算出したい。
(画像内の赤色の線の長さを検出できればどのような手法でも構いません。)
私自身に画像認識、色相等に関する知識が全くなく、
出力された値が何を表す値なのか、調べてみたのですが理解できませんでした。
もしこのプログラムではイメージ通りの結果が得られない場合、どのようにすれば実現したいことを達成できるでしょうか。
該当のソースコード
python
1import cv2 2import numpy as np 3 4#赤い線の面積を検出したいプログラム 5 6filename = "1.png" 7 8input_img = filename 9img_c = cv2.imread(input_img) 10 11# 画像の二値化 12B, G, R = cv2.split(img_c) 13img_r_th = np.where((R == 255), 1, 0) 14#検出オブジェクトを白くするため 15img_th = img_r_th * 255 16img_th = np.uint8(img_th) 17 18# 輪郭を検出 19contours = cv2.findContours(img_th, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[0] 20 21# 輪郭を検出したオブジェクトの面積を算出 22Active_contours = [] 23for cont in contours: 24 cont_area = cv2.contourArea(cont) 25 Active_contours.append(cont_area) 26 print(Active_contours) 27
試したこと
https://qiita.com/E_Enomoto/items/7c94119c192314dd079d
https://qiita.com/odaman68000/items/ae28cf7bdaf4fa13a65b
上記のサイトを始めとして様々なサイトを参考に
輪郭の検出をして結果を出力するプログラム、
赤色の面積を検出するプログラム
等を試してみたのですが、思うような結果が得られませんでした。
その際に使用した画像は添付した画像です。
補足情報(FW/ツールのバージョンなど)
python 3.8
環境 Anaconda
Opencv version-4.0.1
回答3件
あなたの回答
tips
プレビュー