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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • vinachip
    Thành viên mới
    • Jul 2008
    • 9

    #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:




    ... 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

    • nthung2002
      Thành viên chính thức
      • Oct 2010
      • 38

      #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

      • vinachip
        Thành viên mới
        • Jul 2008
        • 9

        #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

        • nthung2002
          Thành viên chính thức
          • Oct 2010
          • 38

          #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

          • compvis
            Thành viên tích cực
            • May 2006
            • 247

            #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

            • vinachip
              Thành viên mới
              • Jul 2008
              • 9

              #66
              thanks alll...

              Comment

              • phuoclong108
                Thành viên mới
                • Jul 2011
                • 3

                #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

                • phuoclong108
                  Thành viên mới
                  • Jul 2011
                  • 3

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

                  Comment

                  • nthung2002
                    Thành viên chính thức
                    • Oct 2010
                    • 38

                    #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

                    • phuoclong108
                      Thành viên mới
                      • Jul 2011
                      • 3

                      #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

                      • nthung2002
                        Thành viên chính thức
                        • Oct 2010
                        • 38

                        #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

                        • LCD_4BIT
                          Thành viên chính thức
                          • Jun 2010
                          • 53

                          #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

                          • quochuydttn
                            Thành viên mới
                            • Sep 2011
                            • 1

                            #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

                            • haitacnj
                              Thành viên mới
                              • Oct 2011
                              • 1

                              #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

                              • nthung2002
                                Thành viên chính thức
                                • Oct 2010
                                • 38

                                #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...