2

私はopencvを使い始めたばかりで、砂の上の岩の写真の周りに四角形を配置するプログラムを作成しようとしています. この関数のドキュメントには、使用方法の例が含まれています

findContours( src, contours, hierarchy,
  CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE );

findContours のプロトタイプは

void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point()) ;

2 つの質問があります。
1. この例の 3 番目の引数は、hierarchyfindContoursvector<Vec4i>が期待するタイプと一致しません。何故ですか?2. に保存されているデータを使用して、境界ボックスを作成するための等高線の場所を見つけるには
どうすればよいですか?contours

4

1 に答える 1

4
std::vector<std::vector<cv::Point> > contours;
std::vector<cv::Vec4i> hierarchy;
cv::findContours( mask, contours, hierarchy, cv::RETR_CCOMP, cv::CHAIN_APPROX_TC89_KCOS);
for ( size_t i=0; i<contours.size(); ++i )
{
    cv::drawContours( img, contours, i, Scalar(200,0,0), 1, 8, hierarchy, 0, Point() ); 
    cv::Rect brect = cv::boundingRect(contours[i]);
    cv::rectangle(img, brect, Scalar(255,0,0));
}
于 2013-03-23T19:47:44.377 に答える