OpenCVの - どのようにRGB画像とFLOODFILLを使用するには?

ghahremannezhad来ます:

私が使用しようとしていますfloodFill空を抽出するために、以下のようなイメージに。

ここでは、画像の説明を入力します。

しかし、私は設定しても、loDiff=Scalar(0,0,0)upDiff=Scalar(255,255,255)の結果がちょうどシード点を示していると(緑色のドット)を大きく成長しません。

ここでは、画像の説明を入力します。

コード:

Mat flood;
Point seed = Point(180, 80);
flood = imread("D:/Project/data/1.jpeg");
cv::floodFill(flood, seed, Scalar(0, 0, 255), NULL, Scalar(0, 0, 0), Scalar(255, 255, 255));
circle(flood, seed, 2, Scalar(0, 255, 0), CV_FILLED, CV_AA);

これは、(赤い点が種子である)結果です。

ここでは、画像の説明を入力します。

どのように私は(全体の空のような)大きな面積を取得する機能を設定することができますか?

赤:

あなたは、設定する必要がありますloDiffupDiff、正しく引数。

参照してくださいFLOODFILLのマニュアルを

loDiff -現在注目画素およびコンポーネントに属するその近隣の一つ、またはシードピクセル間の最大低輝度/色差成分に追加されます。
upDiff -現在注目画素およびコンポーネントに属するその近隣の一つ、またはシードピクセル間の最大上部輝度/色差成分に追加されます。

ここでは、Pythonのコードサンプルは次のとおりです。

import cv2
flood = cv2.imread("1.jpeg");

seed = (180, 80)

cv2.floodFill(flood, None, seedPoint=seed, newVal=(0, 0, 255), loDiff=(5, 5, 5, 5), upDiff=(5, 5, 5, 5))
cv2.circle(flood, seed, 2, (0, 255, 0), cv2.FILLED, cv2.LINE_AA);

cv2.imshow('flood', flood)
cv2.waitKey(0)
cv2.destroyAllWindows()

結果:
床

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=13376&siteId=1