2

この画像を取得し、左上の黒い領域を白で塗りつぶしたいのですが、完全に白い画像しか得られません...コードの何が問題なのですか?

コード:

...
cv::Rect rect;
roi = cv::floodFill(roi, cv::Point(1,1), cv::Scalar(0), &rect, cv::Scalar(0), cv::Scalar(0), 4);
...

入力画像:
ここに画像の説明を入力

4

2 に答える 2

4

これは、次のコードで取得した画像です。

int main()    
{
    cv::Mat image = cv::imread("TF2XE.jpg", -1);    
    cv::imshow("image before filling", image);    
    int filling = cv::floodFill(image, cv::Point(0,0), 255, (cv::Rect*)0, cv::Scalar(), 200);   
    cv::imshow("image after filling", image);    
    cv::waitKey();    
    return 0;    
}   

出力画像

upDiff パラメーターとして 200 を使用したことに注意してください。これを 0 に設定すると、接続されたコンポーネント内で考慮されない灰色のピクセルがいくつかあるため、それが実際に必要な場合は変更します。

于 2012-08-16T17:49:03.437 に答える
1

確かではありませんが、私が掘り下げることができたドキュメントcv::floodFill()によると、int. したがって、それroiが行列であり、openCV 行列クラスがパラメーターを定義すると仮定すると、行列のoperator=各要素にintいくつかを割り当てることができます。int

于 2012-08-16T14:55:35.483 に答える