この画像を取得し、左上の黒い領域を白で塗りつぶしたいのですが、完全に白い画像しか得られません...コードの何が問題なのですか?
コード:
...
cv::Rect rect;
roi = cv::floodFill(roi, cv::Point(1,1), cv::Scalar(0), &rect, cv::Scalar(0), cv::Scalar(0), 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 に設定すると、接続されたコンポーネント内で考慮されない灰色のピクセルがいくつかあるため、それが実際に必要な場合は変更します。
確かではありませんが、私が掘り下げることができたドキュメントcv::floodFill()
によると、int
. したがって、それroi
が行列であり、openCV 行列クラスがパラメーターを定義すると仮定すると、行列のoperator=
各要素にint
いくつかを割り当てることができます。int