Thông báo

Collapse
No announcement yet.

Sử dụng OpenCV trong Visual C++ 2008

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

  • #61
    Nguyên văn bởi compvis Xem bài viết
    @vinachip: đây là một dạng cấu trúc (có thể định nghĩa theo dạng class - lớp) mà trong c,c++ người ta gọi nó là "Linked List". Cấu trúc này được sử dụng với dạng dữ liệu phức hợp và vì thế nó cũng rất phức tạp trong định nghĩa và sử dụng. Nếu bạn có kiến thức tốt về c,c++ thì bạn sẽ hiểu rõ. Bạn có thể tham khảo các link dưới đây:

    http://www.inversereality.org/tutori...nkedlists.html
    http://locklessinc.com/articles/flexible_lists_in_cpp/
    http://www.dreamincode.net/code/snippet82.htm
    ... and so on...
    You could Google it


    Trong OpenCV, sử dụng con trỏ CvSeq như một mảng để chứa các phần tử. Để hiểu rõ nhất về CvSeq, bạn hãy làm một ví dụ nhỏ với cvFindContours. Một link tôi cho là khá hay về cvFindContours mà bạn có thể tham khảo:
    http://guitarhero-opencv.googlecode....n/trunk/cv.cpp

    cảm ơn compvis đã giúp đỡ, đang tìm hiểu thêm! vẫn chưa thực sự rõ nhưng cũng đã xác định được cái hướng đi rồi! thanks bạn!!

    Comment


    • #62
      Sử dụng Template Matching trong OpenCV 2.1 với Visual C++ 2008

      Trong bài viết này tôi giới thiệu đến các bạn cách sử dụng Template Matching trong OpenCV 2.1 với visual C++ 2008. Chức năng này rất có ích trong việc nhận dạng đối tượng.
      Click image for larger version

Name:	2011-06-15_163714.png
Views:	1
Size:	940.3 KB
ID:	1347763
      IplImage *res_img;
      CvPoint minloc, maxloc;
      double minval, maxval;
      int src_width, src_height;
      int mask_width, mask_height;
      int res_width, res_height;

      // get image's properties
      src_width = src_img->width;
      src_height = src_img->height;
      mask_width = mask_img->width;
      mask_height = mask_img->height;
      res_width = src_width - mask_width + 1;
      res_height = src_height - mask_height + 1;

      //create new image for template matching computation
      res_img = cvCreateImage(cvSize( res_width, res_height ), IPL_DEPTH_32F, 1);

      //choose template matching method to be used
      //cvMatchTemplate(src_img, mask_img, res_img, CV_TM_SQDIFF );
      //cvMatchTemplate(src_img, mask_img, res_img, CV_TM_SQDIFF_NORMED );
      //cvMatchTemplate(src_img, mask_img, res_img, CV_TM_CCORR );
      cvMatchTemplate(src_img, mask_img, res_img, CV_TM_CCORR_NORMED );
      //cvMatchTemplate(src_img, mask_img, res_img, CV_TM_CCOEFF );
      //cvMatchTemplate(src_img, mask_img, res_img, CV_TM_CCOEFF_NORMED );


      cvMinMaxLoc(res_img, &minval, &maxval, &minloc, &maxloc, 0);

      /*draw red rectangle*/
      cvRectangle(src_img, cvPoint( maxloc.x, maxloc.y ), cvPoint( maxloc.x + mask_width, maxloc.y + mask_height ), cvScalar( 0, 0, 255, 0 ), 5, 0, 0 );


      Các bạn cần chú ý là kết quả matching tốt nhất ứng với các giá trị min (minval-giá trị này càng nhỏ thì kết quả càng chính xác, minloc-vị trí matching) khi sử dụng CV_TM_SQDIFF, và ứng với các giá trị max (maxval-giá trị này càng lớn thì càng chính xác, maxloc-vị trí matching) khi sử dụng CV_TM_CCORR hoặc CV_TM_CCOEFF.
      Trong trường hợp trên, tôi sử dụng CV_TM_CCORR_NORMED, do đó khi vẽ hình chữ nhật phải dùng maxloc để vẽ.
      Khi sử dụng chương trình trong file đính kèm, các bạn có thể click nhiều lần vào nút Matching để nhận được nhiều kết quả hơn.
      Hy vọng chương trình sẽ có ích cho các bạn muốn làm nhận dạng đối tượng.

      Comment


      • #63
        Mình không hiển thị được ảnh trong control picture được, bạn giúp mình với!!
        Mình đang làm đề tài về xử lý ảnh, muốn hiển thị hình ảnh capture từ camera trực tiếp lên form riêng chứ ko theo cái windows form nhưng không biết làm sao để liên kết một biến kiểu dữ liệu riêng của opencv là IplImg với control picture trong MFC, một cách khác là mình lưu cái ảnh lại rồi load lên nhưng vẫn không xong! bạn có kinh nghiệm về MFC giúp mình với nhé!!

        Comment


        • #64
          Nếu bạn sử dụng Window Form Application thì có thể tham khảo tại đây: http://www.dientuvietnam.net/forums/...l-C-2008/page4. Trong phần Display Image Captured From Camera in Picture Box in Windows Forms Application có đầy đủ code của chương trình.
          Còn về lập trình trong MFC thì mình chưa làm bao giờ nên cũng chưa tìm hiểu qua. Bạn có thể tìm thêm trên mạng.

          Comment


          • #65
            Nguyên văn bởi vinachip Xem bài viết
            ...không biết làm sao để liên kết một biến kiểu dữ liệu riêng của opencv là IplImg với control picture trong MFC, một cách khác là mình lưu cái ảnh lại rồi load lên nhưng vẫn không xong! bạn có kinh nghiệm về MFC giúp mình với nhé!!
            Handle sự kiện OnPaint, Invalidate.... của Picture Control trong MFC và làm như hướng giẫn mình tại Hiển thị hình ảnh lên Dialog của MFC

            Comment


            • #66
              thanks alll...

              Comment


              • #67
                chao a nthung2002!!! e dang viet phan mem chup anh tu camera. A cho e hoi, phan mem a dung camera dung card PCI dc k ? e dang dung camera card PCI.

                Comment


                • #68
                  Chào anh !!! phan mem a co ho tro camera dung card PCI k vay ?

                  Comment


                  • #69
                    Chào bạn,

                    Mình thường làm việc trên camera kết nối với máy tính qua cổng USB. Còn qua cổng PCI thì mình chưa làm qua nên cũng chưa biết rõ.

                    Tuy nhiên ở lab mình có một số bạn làm việc với camera kết nối qua card mạng thì vẫn có thể sử dụng OpenCV được.

                    Bạn có thể dùng một chương trình đơn giản để kiểm tra thử xem sao.

                    Comment


                    • #70
                      OpenCvSharp

                      Em dang viet ứng dụng sử dụng OpenCvShap (C#). Chạy trên laptop có webcame thì dc. Nhưng khi kết nối với Camera USB thì giá trị Null( nó báo lỗi OpenCv.Invoke ...). Các anh trên diễn đàn chỉ em cách khắc phục nha. Em cảm ơn

                      Comment


                      • #71
                        Bạn đã cài driver cho USB camera chưa?

                        Nguyên văn bởi phuoclong108 Xem bài viết
                        Em dang viet ứng dụng sử dụng OpenCvShap (C#). Chạy trên laptop có webcame thì dc. Nhưng khi kết nối với Camera USB thì giá trị Null( nó báo lỗi OpenCv.Invoke ...). Các anh trên diễn đàn chỉ em cách khắc phục nha. Em cảm ơn

                        Comment


                        • #72
                          Dear you
                          1. Kiểm tra chắc chắn rằng webcam bạn hoạt động tốt và ko sử dụng trong ứng dụng khác
                          2. Bạn xem lại địa chỉ của Webcam trong code (Chắc là cái này)

                          Nguyên văn bởi phuoclong108 Xem bài viết
                          Em dang viet ứng dụng sử dụng OpenCvShap (C#). Chạy trên laptop có webcame thì dc. Nhưng khi kết nối với Camera USB thì giá trị Null( nó báo lỗi OpenCv.Invoke ...). Các anh trên diễn đàn chỉ em cách khắc phục nha. Em cảm ơn
                          Bể học vô biên

                          Comment


                          • #73
                            Bạn ơi, ko hiểu tại sao mình tạo Form, viết code và lúc debug thì nói báo lỗi này, mình ko hiểu tại sao. Ai biết thì nói cho mình nha. Thank...
                            Error 1 error C3862: 'cvRound': cannot compile an unmanaged function with /clrure or /clr:safe c:\program files\microsoft visual studio 9.0\vc\include\opencv\cxtypes.
                            Error 2 error C3645: 'cvRound' : __clrcall cannot be used on functions compiled to native code c:\program files\microsoft visual studio 9.0\vc\include\opencv\cxtypes.h
                            Error 3 error C3862: 'CV_XADD': cannot compile an unmanaged function with /clrure or /clr:safe c:\program files\microsoft visual studio 9.0\vc\include\opencv\cxoperations.hpp
                            Error 4 error C3645: 'CV_XADD' : __clrcall cannot be used on functions compiled to native code c:\program files\microsoft visual studio 9.0\vc\include\opencv\cxoperations.hpp

                            Comment


                            • #74
                              giúp mình tý...mình đã xem hướng dẫn show ảnh trong MFC của bạn...nhưng mình chưa hiểu lắm...do chưa làm quen nhiều với MFC nên rất bỡ ngỡ...bạn có thể hướng dẫn chi tiết 1 tý các bước để load ảnh vào picture control ko.....mình đã có ảnh pImage....... chuyển qua bitmap như bạn sau đó show window ..khúc đó mình ko hiểu ...ko bit dùng picture control chỗ nào......làm sao show ra được...hức hức.....

                              Comment


                              • #75
                                Chào bạn,
                                Theo mình thì bạn thiết lập thiếu thông số khi sử dụng opencv. Để khắc phục lỗi này bạn làm như sau:

                                Project-->Properties(Alt+F7)-->Configuration Properties-->General-->Common Language Runtime Support-->Common Language Runtime Support(/clr)
                                Ngoài ra, nếu bạn chưa khai báo câu lệnh #pragma comment(lib, "cv210d.lib") v.v... thì bạn còn cần vào: Linker-->Input-->Additional Dependencies gõ cv210d.lib;cxcore210d.lib;highgui210d.lib
                                Nguyên văn bởi quochuydttn Xem bài viết
                                Bạn ơi, ko hiểu tại sao mình tạo Form, viết code và lúc debug thì nói báo lỗi này, mình ko hiểu tại sao. Ai biết thì nói cho mình nha. Thank...
                                Error 1 error C3862: 'cvRound': cannot compile an unmanaged function with /clrure or /clr:safe c:\program files\microsoft visual studio 9.0\vc\include\opencv\cxtypes.
                                Error 2 error C3645: 'cvRound' : __clrcall cannot be used on functions compiled to native code c:\program files\microsoft visual studio 9.0\vc\include\opencv\cxtypes.h
                                Error 3 error C3862: 'CV_XADD': cannot compile an unmanaged function with /clrure or /clr:safe c:\program files\microsoft visual studio 9.0\vc\include\opencv\cxoperations.hpp
                                Error 4 error C3645: 'CV_XADD' : __clrcall cannot be used on functions compiled to native code c:\program files\microsoft visual studio 9.0\vc\include\opencv\cxoperations.hpp

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X