2

正方形以外のさまざまな幾何学的形状を検出できるコードを作成しようとしていますが、見つかりました:この回答 は Python で提供されています。C++ で記述しようとしましたが、プログラムがクラッシュしました。間違っている:

int main (){
    cv::Mat img = cv::imread("src.jpg",0);
    cv::Mat image ;
    
    std::vector<std::vector<cv::Point>> contours;
    //std::vector<std::vector<cv::Point2f>> hiararchy;
    
        cv::threshold(img,img,127,255,CV_THRESH_BINARY_INV);
        cv::findContours(img,contours,/*hiararchy,*/CV_RETR_EXTERNAL,CV_RETR_CCOMP );
    std::vector<cv::Point2f> approx; 
    for ( int i=0; i<contours.size();i++){
        cv::approxPolyDP(cv::Mat(contours[i]),approx,cv::arcLength(cv::Mat(contours[i]),true)*0.02,true);
        
    }
            
    cv::waitKey(0);
    
    return 0;
    
}

プログラムをデバッグしたところ、cv::approxPolyDP関数でクラッシュしました。

**更新 ** C. Canberk Ba​​cı の提案の後、I'Ve は for l を変更しました

for ( int i=0; i<contours.size();i++){
    cv::Mat m(contours[i]);
    cv::approxPolyDP(m,approx,cv::arcLength(m,true)*0.02,true);
    
}

しかし、それはあまり変わりませんでした。あなたの助けに感謝します!

4

2 に答える 2