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

            • Andrea14
              Vấn đề về tốc độ quay
              bởi Andrea14
              Chào mọi người,

              Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
              Hôm qua, 12:42
            • bqviet
              Trả lời cho Đấu tắt điện cho máy tính bảng
              bởi bqviet
              Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
              06-12-2025, 17:17
            • nguyendinhvan
              Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
              bởi nguyendinhvan
              Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
              05-12-2025, 19:59
            • afrendly
              Trả lời cho Đấu tắt điện cho máy tính bảng
              bởi afrendly
              Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
              04-12-2025, 01:27
            Đang tải...
            X