OpenCV 2.4.3 c++ インターフェイスを使用して、findContours で見つかった接続コンポーネントをバイナリ イメージに描画しようとしています。コードはこんな感じ。
std::vector<std::vector<cv::Point> > contours;
std::vector<cv::Vec4i> hierarchy;
cv::findContours( tempOR, contours, hierarchy, CV_RETR_EXTERNAL , CV_CHAIN_APPROX_TC89_L1, cv::Point(0, 0) );
bgs_detection_or=cv::Mat::zeros(cv::Size(m_frame_width, m_frame_height), CV_8UC1);
for( int i = 0; i < contours.size(); i++ )
{
if (pointPolygonTest(contours[i], cv::Point2f(m_car_coords.x, m_car_coords.y-1), false)>-1)
{
std::vector<cv::Point> contours_poly;
approxPolyDP( cv::Mat(contours[i]), contours_poly, 3, true );
//cv::fillConvexPoly(bgs_detection_or, contours_poly, cv::Scalar(255));
cv::fillPoly(bgs_detection_or, contours_poly, cv::Scalar(255));
break;
}
}
ご覧のとおり、fillConvexPoly も使用しようとしました。fillConvexPoly はエラーをスローしませんが、ポリゴンを正しく描画しません。その後、fillPoly を使用しようとしましたが、それだけでは、ハンドルされていない例外を管理できません。
また、この方法でfillPolyを呼び出そうとしました:
cv::fillPoly(bgs_detection_or, contours_poly, contours_poly.size(), 1, cv::Scalar(255));
しかし、コンパイル エラーが発生しました: Error 35 error C2665: 'cv::fillPoly' : none of the 2 overloads could convert all the argument types
私は何を間違っていますか?