Thông báo

Collapse
No announcement yet.

Hướng dẫn viết chương trình con trong lập trình giao diện C++

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Hướng dẫn viết chương trình con trong lập trình giao diện C++

    Xin chào mọi người tình hình là mình đang làm đề tài về xử lý ảnh mình đã viết xong trên C++ nhưng giờ muốn chuyển sang giao diện người dùng mà toàn bị lỗi. Mình đặt các chương trình con và include dưới dòng program one . Còn trương trình chính mình đặt trong một nút button(VD:Start) nhưng nó báo lỗi error C2601: 'main' : local function definitions are illegal. Đây là đoạn trương trình chính của mình




    int main(int argc, TCHAR* argv[])//MainProgram
    {

    int b=0,a=0,d=0;


    CvCapture* capture;
    int input=0,bfv = 0,counter = 0;
    double mean=10;
    double area1 = 0;

    cout<<"Please specify input\nvideo(1) or webcam(2)?";
    cin>> input;

    if (input == 1)
    {

    char filename[255];
    memset(filename,0,255);
    cout<<"Please key in the adress to the video\n";
    cin>>filename;
    capture = cvCreateFileCapture( filename );
    }
    if (input == 2)
    {
    capture =cvCreateCameraCapture(0);
    }


    IplImage* start;


    start = cvQueryFrame(capture);

    for (int counter =0;counter<30;counter ++)
    {

    frame [counter] = NULL;
    frameG [counter] = NULL;
    frame2 [counter] = NULL;
    frame2G [counter] = NULL;
    frame3 [counter] = NULL;
    frame3G [counter] = NULL;

    }









    while(1)
    {
    if(storage==NULL)storage = cvCreateMemStorage(0);
    frame[a] = cvQueryFrame( capture );
    IplImage* _img= cvQueryFrame( capture );
    if(_img==NULL)break;
    frame[a]= cvCreateImage(cvGetSize(_img),_img->depth,_img->nChannels);
    frameG[a]=cvCreateImage(cvGetSize(_img),8,1);
    frame2[a]=cvCreateImage(cvGetSize(_img),_img->depth,_img->nChannels);
    frame2G[a]=cvCreateImage(cvGetSize(_img),8,1);
    frame3[a]=cvCreateImage(cvGetSize(_img),_img->depth,_img->nChannels);
    frame3G[a]=cvCreateImage(cvGetSize(_img),8,1);

    cvCopy(_img,frame[a]);
    if( !frame ) break;

    char c = cvWaitKey(33);
    if( c == 27 ) break;

    cvCvtColor(frame[a], frameG[a], CV_BGR2GRAY);

    CvScalar avg = cvAvg(frameG[a]); // Tinh gia tri trung binh cua cac pixel
    cout<< avg.val[0]<< "\n";
    if (avg.val[0] < 2)// Tim nguong trung binh
    {
    mean=(avg.val[0]/0.015);
    }
    else if ((avg.val[0]>=2) && (avg.val[0] <= 70))
    {
    mean=(avg.val[0]/1.5);
    }
    else
    {
    mean =(avg.val[0]/5);
    }


    if(frame[29])
    cvReleaseImage(&frame[29]);
    if(frameG[29])
    cvReleaseImage(&frameG[29]);
    if(frame2[29])
    cvReleaseImage(&frame2[29]);
    if(frame2G[29])
    cvReleaseImage(&frame2G[29]);
    if(frame3[29])
    cvReleaseImage(&frame3[29]);
    if(frame3G[29])
    cvReleaseImage(&frame3G[29]);



    for ( int counter2=29;counter2>(0);counter2--) // cap nhat frame moi
    {
    frame[counter2]= frame [(counter2-1)];
    frameG[counter2] = frameG [(counter2-1)];
    frame2[counter2]= frame2 [(counter2-1)];
    frame2G[counter2] = frame2G [(counter2-1)];
    frame3[counter2]= frame3 [(counter2-1)];
    frame3G[counter2]= frame3G [(counter2-1)];

    }

    bfv++;


    a=0;
    b=15;


    if ( bfv >=30)
    {
    cvSub(frame[b],frame[a],frame2[a]);
    cvSub(frame[d],frame[a],frame3[a]);

    cvCvtColor(frame2[a],frame2G[a],CV_BGR2GRAY);
    cvThreshold(frame2G[a],frame3G[a],mean,255,CV_THRESH_BINARY); // Lay nguong voi gia tri mean tinh o tren
    cvSmooth(frame3G[a],frame3G[a],CV_MEDIAN,9,9);
    cvErode(frame3G[a],frame3G[a],NULL,8); // Toan tu lam co anh
    cvDilate(frame3G[a],frame3G[a],NULL,5); // Toan tu lam dan no anh

    cvNamedWindow( "Camera", CV_WINDOW_AUTOSIZE );
    cvShowImage( "Camera", frame3G[a] );
    cvFindContours(frame3G[a],storage,&contour,sizeof(CvContour),CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE );




    IplImage*frameb = frame[15];
    IplImage*framec = frame[16];
    contourprocess(frameb,framec,contour,area1);



    if (contour!=NULL)
    { cvClearSeq(contour);
    cvClearMemStorage(storage);
    }

    }
    }
    printf("End of File\n");
    cvReleaseMemStorage(&storage);
    cvReleaseCapture( &capture );
    //cvDestroyWindow( "FireDetect" );
    cvDestroyAllWindows();
    fclose(fp);
    return 0;
    }




    Rất mong mọi người giúp đỡ xin chân thành cảm ơn mọi người!

  • #2
    Nguyên văn bởi nguyenlen07 Xem bài viết
    Mình đặt các chương trình con và include dưới dòng program one . Còn trương trình chính mình đặt trong một nút button(VD:Start) ---->>>>HA HA HA
    HỌC THÌ PHẢI HỎI.....................HỌC TRƯỚC KHI HỎI.................nhé bạn.....

    Comment


    • #3
      Nguyên văn bởi compvis Xem bài viết
      HỌC THÌ PHẢI HỎI.....................HỌC TRƯỚC KHI HỎI.................nhé bạn.....
      Mình cũng tìm hiểu nhiều lắm rồi mà không được lên mới hỏi. Bạn nào biết thì chỉ mình với. Mình học ngành Điện nên lập trình cũng không rành lắm.

      Comment


      • #4
        anh Compvis đã chỉ cho bạn rồi đấy, nút start thì làm gì có int main(int argc, TCHAR* argv[])//MainProgram

        Comment


        • #5
          Nguyên văn bởi hanhluckyly Xem bài viết
          anh Compvis đã chỉ cho bạn rồi đấy, nút start thì làm gì có int main(int argc, TCHAR* argv[])//MainProgram
          Cảm ơn bạn nhiều nhưng bạn có thể nói rõ hơn tại sao không, mà mình cũng từng bỏ int main đi rồi mà nó cứ báo lại báo lỗi là


          source file "Form1.resX" into "x64\Debug\Demo.Form1.resources".
          1>opencv_haartraining_engined.lib(cvsamples.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in Demo.obj
          1>opencv_haartraining_engined.lib(cvcommon.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in Demo.obj
          1>opencv_haartraining_engined.lib(cvhaartraining.o bj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in Demo.obj
          1>opencv_haartraining_engined.lib(cvhaarclassifier .obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in Demo.obj
          1>opencv_haartraining_engined.lib(cvboost.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in Demo.obj
          1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
          1>Demo.obj : warning LNK4248: unresolved typeref token (01000025) for 'CvCapture'; image may not run
          1>C:\Users\Mr.Len\Documents\Visual Studio 2010\Projects\Demo\x64\Debug\Demo.exe : fatal error LNK1319: 5 mismatches detected
          1>
          1>Build FAILED.
          1>
          1>Time Elapsed 00:00:13.67
          ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

          Mong các được mọi người chỉ giáo.

          Comment


          • #6
            có vẻ bạn đang dùng VS2010, mình xài VS2008, lỗi này mình chưa bao giờ gặp nên không biết, sorry ,Bạn thử tham khảo:
            - c++ - Help with Linker error LNK2038 ! - Stack Overflow
            - c++ - error LNK2038: mismatch detected for &#39;_ITERATOR_DEBUG_LEVEL&#39;: value &#39;0&#39; doesn&#39;t match value &#39;2&#39; in main.obj - Stack Overflow

            Comment

            Về tác giả

            Collapse

            nguyenlen07 Tìm hiểu thêm về nguyenlen07

            Bài viết mới nhất

            Collapse

            Đang tải...
            X