-1
私は次の画像を持っています そして私はすべてのキャンディーを数えようとしますが、それらのいくつかは交差します。私の次のコードは動作しません。以下のコードは、交差しない場合にのみキャンディーを識別することができます。しかし、交差するとどうするか考えてもいません。opencvですべてのキャンディを検出して数える方法
int main(int argc, char** argv)
{
Mat src = imread("C:\\data\\Assignment1A.jpg",0); // reads image from file
Mat dst = Mat::zeros(src.rows, src.cols, CV_8UC3);
cv::Scalar min(245, 0, 0);
cv::Scalar max(255, 255, 255);
cv::inRange(src, min, max, dst);
namedWindow("Source", 1);
imshow("Source", dst);
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(dst, contours, hierarchy,
CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
cout <<contours.size();
size_t count = contours.size();
int i = 0;
for(size_t i = 0; i < contours.size(); i++) {
cv::Point2f c;
float r;
cv::minEnclosingCircle(contours[i], c, r);
if (r > 10) {
i++; }
}
cout << i << " candies";
waitKey(0);
return 0;
}
誰でもこの問題の解決方法を教えてもらえますか?
を_ "私の次のコードは動作しません" _有効な問題の記述ではありません。 [ヘルプセンター](http://stackoverflow.com/help)にアクセスし、[よく質問する方法]セクション(http://stackoverflow.com/help/how-to-ask)を読んでください。 –
上記のコードは、交差しない場合にのみキャンディーを識別することができます。しかし、私は彼らが交差する場合に何をすべきかについての考えを持っていません。 –
輪郭のような中間画像(描画輪郭を使用して)、minEnclosingCircleの結果などを投稿してください。 –