質問: Double.parseDouble(values[1]) + ( Double.parseDouble(values[3]) / 2 ); // 該当箇所を丸で囲う Imgproc.circle(result, center, 30, sBasic[idx], 3, Imgproc.LINE_AA); Imgproc.cvtColor(mask, mask, Imgproc.COLOR_GRAY2BGRA); Imgcodecs.imwrite("image_013_" + color + ".png", mask); idx++; } Imgproc.cvtColor(result, result, Imgproc.COLOR_HSV2BGR); Imgcodecs.imwrite("image_013_new.png", result); } } ``` ### 試したこと Rangeの値を何回か変えて実行しましたが、改善されませんでした。 カスケード分類器によるUpperBody検索を実行しましたが、改善されませんでした。 DNNの利用を検討しています。 ### 補足情報(FW/ツールのバージョンなど) 0penCV 4.1.2 Java 1.8
回答: Java使いではありませんが手法は参考になると思います。 > > カスケード分類器によるUpperBody検索を実行しましたが、改善されませんでした。 > > > 人の上部のみの検索、ということでしょうか? 自転車に乗っていますので、自転車と人をコミコミで物体検出をしてはいかがでしょうか? 正解画像をもとに背景と合成して、データ増強した画像で学習させる、 ということが(少なくともPythonでは)OpenCVでできます。 HAAR-LIKEのキーワードで探すと色々出てきます。 人が移っていると思しき部分からさらに同アルゴリズムの頭の検出をすれば、 それなりの確率で頭の位置のみを検出できるはずです。 そこから何色に近い?をHSVか何かで比較したらよさそうです。 この方法にはDNNほどの精度や検出漏れのなさはないかもしれませんが、 これが現実的な線引きではないかと思います。 > > DNNの利用を検討しています。 > > > 既存のデータがそのまま使えるかどうかわかりませんが、 上記の方法より処理は重くデータをそろえるのも大変かと思います。 OpenPoseで人っぽい部分、その人の頭っぽい部分を検出、さらにそこの色が何に近いかを検出というような流れでしょうか。