1. 程式人生 > >繪製二值圖輪廓轉為RGB顯示輪廓顏色

繪製二值圖輪廓轉為RGB顯示輪廓顏色

1.將任意序列影象先轉為灰度圖獲取輪廓

2.轉為三通道圖

3.遍歷畫素點使輪廓顯示為彩色,其餘部分為白色

4.將結果按序儲存在資料夾中

//int main(int argc, char** argv)   
//{
//    char filename[100];
//    char filename1[100];
//    for(int i=0;i<=23;i++)
//
//    {
//    //sprintf(filename,"F:/fighting/project/data/1-zhaoguohong Plan&Dose&Image/structure1/structure00%d.png",i);
//    sprintf(filename,"F:/fighting/project/data/fcn_result1/4-%d.png",i);
//    IplImage * src=cvLoadImage(filename,-1);
//    //cvCvtColor(src,src,CV_BGR2GRAY);
//    CvMemStorage *storage = cvCreateMemStorage(0);
//    CvSeq * pcontour = 0;
//    //IplImage* dst= cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
//    IplImage* dst= cvCreateImage(cvGetSize(src), src->depth, 1);
//    
//    //int mode = CV_RETR_EXTERNAL;
//    int mode = CV_RETR_LIST;
//    cvFindContours(src,storage,&pcontour,sizeof(CvContour),mode,CV_CHAIN_APPROX_NONE);
//    CvScalar externalColor;
//    CvScalar holeColor;
//    //--------------畫輪廓----------------//
//    for (; pcontour != 0; pcontour=pcontour -> h_next)
//    {
//        for (int i=0;i<pcontour->total;i++)
//        {
//            CvPoint *pt=(CvPoint*) cvGetSeqElem(pcontour,1);
//            cvSetReal2D(dst,pt->y,pt->x,255.0);
//        }
//
//        //取得輪廓面積
//        double contArea = fabs(cvContourArea(pcontour,CV_WHOLE_SEQ));
//        //取得輪廓長度
//        double contLenth = cvArcLength(pcontour,CV_WHOLE_SEQ,-1);
//        
//        holeColor=CV_RGB(255,255,255);
//        externalColor=CV_RGB(255,255,255);
//        cvDrawContours(dst,pcontour,externalColor,holeColor,1,1,8);
//        
//    }    
//    
//    sprintf(filename1,"F:/fighting/project/data/fcn_result_contour/4-%d.png",i);
//    
//    IplImage* dst1= cvCreateImage(cvGetSize(dst), dst->depth, 3);
//    cvCvtColor(dst, dst1, CV_GRAY2BGR);
//
//    CvScalar s;
//    for(int i=0;i<dst1->height;i++)
//       {
//          for(int j=0;j<dst1->width;j++)
//          {
//             s=cvGet2D(dst1,i,j); // get the (i,j) pixel value
//
//             if(s.val[0]==255)
//             {
//             s.val[0]=0;
//             s.val[1]=0;
//             s.val[2]=255;
//             cvSet2D(dst1,i,j,s);
//             }
//             else{
//                 s.val[0]=255;
//                 s.val[1]=255;
//                 s.val[2]=255;
//                 cvSet2D(dst1,i,j,s);
//             }
//          }
//    }
//            
//    cvSaveImage(filename1,dst1);
//    cvWaitKey();
//
//    }
//}