cv :: grabCutを使用して、画像からオブジェクトを抽出しました。それはうまく動作します。
これで、オブジェクトを背景のない別のマットに入れました。オブジェクト全体に黒色を設定したいと思います。GC_PR_FGDでマークされたすべてのピクセル(前景ピクセル)に黒色を設定したい。
これどうやってするの?
ありがとう!!
cv :: grabCutを使用して、画像からオブジェクトを抽出しました。それはうまく動作します。
これで、オブジェクトを背景のない別のマットに入れました。オブジェクト全体に黒色を設定したいと思います。GC_PR_FGDでマークされたすべてのピクセル(前景ピクセル)に黒色を設定したい。
これどうやってするの?
ありがとう!!
cv :: grabCutのドキュメントから、次の値のマスクを出力として取得できるようです。
背景を白、前景を黒の画像が必要だと思います。その場合、新しいマトリックスを作成し、マスクピクセルをループしながら、マスクピクセルの値に応じて、そのマトリックスに0または1(または255)を割り当てます。
たとえばcv::Mat mask
、アルゴリズムの結果としてaを取得したと仮定して、次のようにします(警告、コンパイルしていません、概算です)。
cv::Mat binaryImage = zeros(mask.rows, mask.cols, CV_8U);
for (int i==0; i<mask.rows; ++i){
for (int j==0; j<mask.cols; ++j){
// choose pixels that are certainly or likely background
if (mask.at<uchar>(i,j) == GC_BGD || mask.at<uchar>(i,j) == GC_BGD){
binaryImage.at<uchar>(i,j) = 255;
}
}
}