opencv c++ を使用して ROI を使用するのに問題があります。
ベクトルに保存されている一連の画像があります。ベクター イメージには、大きなブロブと小さなブロブが含まれていました。すべてのベクター画像の小さなブロブを削除したいと考えています。ただし、出力結果には問題があり、現在のベクター画像の小さなブロブが削除された場合、次のベクター画像 (および前のベクター画像) のブロブ領域に影響します。ROI opencv c++ に何か問題がありますか? 以下はサンプルコードです。
vector<Mat> finalImg;
for(unsigned int i = 0 ; i < srcImg.size(); i++) {
    vector<vector<Point> > contoursFinal;
    vector<Vec4i> hierarchyFinal;
    Mat tempV_img;
    srcImg[i].copyTo(tempV_img);
    cv::findContours( tempV_img, contoursFinal, hierarchyFinal, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE, Point(0,0) );
    for(unsigned int j = 0; j < contoursFinal.size(); j++) {
        Rect r = cv::boundingRect( contoursFinal[j] );
        int heightChar = r.height;
        /// Set image region of interest
        cv::Rect ROI(r.x-1, r.y-1, r.width+2, r.height+2);
        Mat srcImg_crop = srcImg[i](ROI);
        cv::namedWindow("cropImg (bf)", 0);
        cv::imshow("cropImg (bf)", srcImg_crop);
        if(heightChar < srcImg[i].rows*0.90){
            srcImg_crop.setTo(0);
        }
        cv::namedWindow("cropImg (af)", 0);
        cv::imshow("cropImg (af)", srcImg_crop);
        cv::waitKey(0);
        if(cv::countNonZero(srcImg_crop) != 0) {
            finalImg.push_back(srcImg_crop);
        }
        srcImg_crop.release();
    }
    cv::namedWindow("Sorted Final", 0);
    cv::imshow("Sorted Final", finalImg[i]);
    cv::waitKey(0);
    contoursFinal.clear();
    hierarchyFinal.clear();
}