Iphone を使用して、openCV で色付きの球体を検出しようとしています。最初のテスト ケースでは、指定されたコードで 1 つの黄色の大理石を使用していました。
cv::Mat thresholdHSV;
cv::Mat imgHSV;
cv::cvtColor(inputFrame, imgHSV, CV_BGR2HSV);
cv::inRange(imgHSV,cv::Scalar(20,100,100),cv::Scalar(30,255,255),thresholdHSV);
std::vector<std::vector<cv::Point> > contours;
findContours(thresholdHSV.clone(), contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
//Draw them
cv::Mat destinationSource = cv::Mat::zeros(inputFrame.size(), inputFrame.type());
drawContours(destinationSource, contours, -1, cv::Scalar(255,255,255), CV_FILLED);
これにより、すでに良い結果が得られました。
ただし、どういうわけか円の形状を検出する必要があります。理想的には HoughCircle を適用したいのですが、OpenCv エラーが表示されます:「引数が正しくありません (ソース イメージは 8 ビット、シングル チャネルである必要があります)。
私も応募してみました
HoughCircles(thresholdHSV, detectedCircles, CV_HOUGH_GRADIENT, 1, thresholdHSV.rows / 8, 200, 100, 0, 0);
しかし、私はまったく結果を得ません。
destinationSource 画像に HoughCircle を適用する方法、または円形を検出する他の方法はありますか? (findContours は 1 つの輪郭のみを検出するため、互いに非常に近い同じ色の球が複数存在する場合も考慮する必要があります)
どんな助けでも大歓迎です、そしてあなたの時間をありがとう。