1

私の添付コードは、ラベルの付いていない輪郭のみを識別し、1 と 0 のラベル付きマスクでのみ実行します。私の入力マスク画像は、実際には各輪郭の 1,2,3,4.... でラベル付けされています。たとえば、最初のコンターは 1 とラベル付けされ、2 番目のコンターは 2 とラベル付けされ、すべてのコンターに対して 1 のみがラベル付けされます。ラベル付きの画像に基づいて各輪郭を個別に分離できるように、コードを変更するにはどうすればよいですか。例 輪郭 1 は別の画像、輪郭 2 は別の別の画像です。

cvFindContours(maskImg, storage, &contours, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE, cvPoint(0, 0));

CvSeq *r;
int objectIndex = 0;
int fov = atoi(seriesName) + 1;
for(r = contours; r != NULL; r = r->h_next){
    /* Save each object in separate mask file. */

    /* Clear the mask object image buffer. */
    cvSet(objectMaskImg, cvScalarAll(0), NULL);
    /* Set the color of the external area and hole area of object. */
    CvScalar externalColor = cvScalarAll(0xff);
    CvScalar holeColor = cvScalarAll(0x00);
    /* Recognize child contour. */
    int maxLevel =  -1; 
    /* Fill interiors */
    int thinkness = CV_FILLED; 
    int lineType = 8; /* 8-connected */
    cvDrawContours(objectMaskImg, r, externalColor, holeColor, maxLevel, thinkness, lineType, cvPoint(0,0));
4

1 に答える 1

0

ANDマスクと FindContours によって返される輪郭との間で論理を使用できますか? あるいは、あなたが何をしているのかよく理解していないのかもしれません。

于 2012-07-17T01:29:38.177 に答える