1

私の最終的な目的は、画像内のすべての接続領域のモーメントを計算することです。

問題: OpenCV と Matlab のリージョンの格納方法が異なります。領域と輪郭のモーメントも異なることは明らかです。

したがって、Matlab で領域を抽出した結果を取得したい場合:

test = imread('test.bmp');    
l = bwlabel(test, 8);

次のコード (OpenCV) が必要です。

vector<vector<Point>> contours; 
vector<Vec4i> hierarchy;

Mat test = imread("..\\test.bmp", CV_LOAD_IMAGE_UNCHANGED);
findContours(test , contours, hierarchy, CV_RETR_CCOMP , CV_CHAIN_APPROX_NONE);
for ( int i = 0; i < contours.size(); i++ )
{
    if (hierarchy[i][3] > -1)
               continue;
    Mat imProcessing = Mat::zeros(test .size(), test .type());
    drawContours(imProcessing, contours, i, Scalar(255), CV_FILLED, 8, hierarchy, 1);
// now imProcessing contain connected region, not contour!
}

より効率的な方法はありますか?

4

0 に答える 0