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

  • #16
    Nguyên văn bởi hoang bui Xem bài viết
    ah`. a nthung có thể cho e hỏi về phần code được không ạ, e có chạy chương trình, nhưng mà không hiểu là hàm
    cvCvtColor( src, gray, CV_BGR2GRAY );
    chạy như thế nào, e chạy mãi mà vẫn không đc, nó cứ báo lỗi ở:
    CV_DBG_BREAK();
    nếu được thì a xem jup' e nha,
    src và gray phải cùng width, height
    src: 1,2,3 or 4 channels, not null
    gray: 1 channel = cvCreateImage(from src) là tốt nhất

    thử cái coi

    Comment


    • #17
      Lệnh cvCvtColor dùng để chuyển từ ảnh màu về ảnh xám. Vì vậy trước khi chuyển ảnh src_img về ảnh dst_img bạn cần phải khai báo:
      dst_gray = cvCreateImage(cvSize(src_img->width, src_img->height), IPL_DEPTH_8U, 1);
      //ảnh dst_gray phải cùng kích thước với ảnh ban đầu, 8U có nghĩa là 8 bit (256 mức xám), 1: vì ảnh xám chỉ có một kênh màu xám. (ảnh màu thường có 3 kênh R, G, B)
      Sau đó bạn mới dùng lệnh cvCvtColor như sau:
      cvCvtColor(src_img, dst_gray, CV_BGR2GRAY);
      //The source 8-bit (8u), 16-bit (16U)
      //or single-precision floating-point (32f) image
      //The destination image of the same data type as the source.
      //The number of channels may be different
      Nếu ảnh ban đầu đã là ảnh xám rồi thì bạn không cần phải chuyển nữa. Bạn có thể kiểm tra bằng lệnh sau:
      if(src_img->nChannels != 1)
      {
      cvCvtColor(src_img, dst_gray, CV_BGR2GRAY);
      }
      else
      {
      dst_gray = src_img;
      }

      Chúc bạn học tốt lập trình với OpenCV
      Last edited by nthung2002; 02-12-2010, 15:39.

      Comment


      • #18
        Sử dụng thư viện EMGU trong Visual C++ 2008 Express

        Nếu bạn gặp khó khăn trong việc sử dụng OpenCV trong Visual C++ 2008 Express, có một sự lựa chọn khác cho bạn đó là thư viện EMGU.
        Bạn có thể vào trang chủ của EMGU tại đây: http://www.emgu.com/wiki/index.php/Main_Page
        Tutorial: http://www.emgu.com/wiki/index.php/Tutorial
        API Documentation: http://www.emgu.com/wiki/index.php/Documentation

        Sau đây là ví dụ minh họa sử dụng thư viện EMGU trong Visual C++ 2008 Express:
        -Trước tiên bạn download các file EMGU DLL trong file đính kèm rồi extract ra.
        - Tạo một project mới (File->New->Project->Window Form Application->...)
        - Tiếp theo là add các file dll vào project: Project->Properties(Alt+F7)->Framework and References->Add New Reference ->Browse->Chọn các file emgu.CV và emgu.CV.UI trong thư mục vừa extract->OK
        -Trong phần trên cùng của Form1.h khai báo thêm dòng lệnh
        using namespace Emgu::CV;
        using namespace Emgu::CV::UI;
        using namespace Emgu::CV::Structure;
        - Đến đây bạn có thể sử dụng các hàm API của thư viện EMGU
        Bạn có thể chạy thử ví dụ đính kèm để biết rõ hơn cách sử dụng thư viện này.
        Attached Files
        Last edited by nthung2002; 02-12-2010, 15:42.

        Comment


        • #19
          chà, vất vả mấy bữa, rồi cuối cùng cũng ra đc hình tròn và hình vuông, còn hình tam giác thì potay. ^^

          Comment


          • #20
            Cho mình hỏi là sao mình ko thể capture ảnh bằng hàm captureFromCAM với openCV 1.1 được,
            CvCapture* capture = cvCaptureFromCAM( 0 );
            sau khi capture thì biến capture có giá trị Null ko ah`,mặc dù ko báo lỗi , bạn nào giúp mình zới, mình dùng Webcam của Laptop.
            Thanks
            Last edited by arthasherovu; 14-12-2010, 23:44.
            |

            Comment


            • #21
              Nguyên văn bởi arthasherovu Xem bài viết
              Cho mình hỏi là sao mình ko thể capture ảnh bằng hàm captureFromCAM với openCV 1.1 được,
              CvCapture* capture = cvCaptureFromCAM( 0 );
              sau khi capture thì biến capture có giá trị Null ko ah`,mặc dù ko báo lỗi , bạn nào giúp mình zới, mình dùng Webcam của Laptop.
              Thanks
              Mình thấy chẳng có gì sai cả
              Nhưng nếu bạn hiển thị nó lên cửa sổ (window) bạn dùng thêm câu lệnh

              IplImage* frame = 0;
              frame = cvQueryFrame( capture );
              cvshowImage("vidu",frame);
              Bể học vô biên

              Comment


              • #22
                Nguyên văn bởi arthasherovu Xem bài viết
                Cho mình hỏi là sao mình ko thể capture ảnh bằng hàm captureFromCAM với openCV 1.1 được,
                CvCapture* capture = cvCaptureFromCAM( 0 );
                sau khi capture thì biến capture có giá trị Null ko ah`,mặc dù ko báo lỗi , bạn nào giúp mình zới, mình dùng Webcam của Laptop.
                Thanks
                Thử lại theo cách sau:
                CvCapture* capture = cvCaptureFromCAM(-1);

                Nếu vấn không được, kiểm tra lại wc vì có thể nó đang được sử dụng bởi một ứng dụng khác hoặc reset lại wc của bạn.

                Thân !

                Comment


                • #23
                  Nguyên văn bởi compvis Xem bài viết
                  Thử lại theo cách sau:
                  CvCapture* capture = cvCaptureFromCAM(-1);

                  Nếu vấn không được, kiểm tra lại wc vì có thể nó đang được sử dụng bởi một ứng dụng khác hoặc reset lại wc của bạn.

                  Thân !
                  Vì trường hợp này bạn bảo không có lỗi gì nên chắc là bạn ấy chưa hiển thị được.
                  Nếu wc đang sử dụng ở ứng dụng khác hoặc không tồn tại thì cvCaptureFromCAM() sẽ báo lỗi ngay !
                  Bể học vô biên

                  Comment


                  • #24
                    IplImage* frame = 0;
                    frame = cvQueryFrame( capture );
                    cvshowImage("vidu",frame);
                    mình có phần này luôn và kết quả vẫn vậy, hiện ra màn hình đen báo là biến capture có giá trị null,
                    minh dùng Webcam của laptop và có thử với WC ngoài nhưng cũng zay,
                    mình dùng openCV 1.1 , Win7, chưa cài Platform SKD
                    mình ko biết là có cần cài chương trình gì cho Webcam để có thể open nó bằng OpenCV ko
                    Rất mong được sự giúp đỡ của anh em trong giai đoạn bắt đầu
                    |

                    Comment


                    • #25
                      Nguyên văn bởi arthasherovu Xem bài viết
                      mình có phần này luôn và kết quả vẫn vậy, hiện ra màn hình đen báo là biến capture có giá trị null,
                      minh dùng Webcam của laptop và có thử với WC ngoài nhưng cũng zay,
                      mình dùng openCV 1.1 , Win7, chưa cài Platform SKD
                      mình ko biết là có cần cài chương trình gì cho Webcam để có thể open nó bằng OpenCV ko
                      Rất mong được sự giúp đỡ của anh em trong giai đoạn bắt đầu
                      Mình đoán là bạn để hàm release không hợp lý nên image chưa kịp hiện đã bị release. Tuy nhiên
                      Bạn thử với doạn code này xem sao .

                      int _tmain(int argc, _TCHAR* argv[])
                      {
                      cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
                      CvCapture* capture = cvCaptureFromCAM(0);
                      IplImage* frame;
                      while(1) {
                      frame = cvQueryFrame( capture );
                      if( !frame ) break;
                      cvShowImage( "Example2", frame );
                      char c = cvWaitKey(33);
                      if( c == 27 ) break;
                      }
                      cvReleaseCapture( &capture );
                      cvDestroyWindow( "Example2" );
                      return 0;
                      }
                      Bể học vô biên

                      Comment


                      • #26
                        cụ thể đây là code của mình

                        #include <highgui.h>
                        #include <cv.h>

                        int main( ) {
                        CvCapture* capture = cvCaptureFromCAM( 0 );
                        IplImage* src = NULL;
                        cvNamedWindow( "Webcam", CV_WINDOW_AUTOSIZE );
                        while(1)
                        {

                        src = cvQueryFrame( capture );
                        if( !src ) break;
                        char c = cvWaitKey(33);
                        if (c == 27)
                        {
                        break;
                        }

                        cvShowImage( "Webcam", src );
                        }


                        cvReleaseImage( &src );
                        cvDestroyWindow( "Webcam" );
                        return 0;

                        }


                        kết quả biến src vẫn là giá trị null
                        Mình đoán là do Webcam của mình, nhưng mà mở bằng chương trình CyberLink YouCam thì bình thường
                        Last edited by arthasherovu; 16-12-2010, 23:28.
                        |

                        Comment


                        • #27
                          Nếu bạn dùng Cyberlink youcam thì lúc khởi động opencv có hiện như thế này không?

                          Bể học vô biên

                          Comment


                          • #28
                            Nếu bạn dùng Cyberlink youcam thì lúc khởi động opencv có hiện như thế này không?
                            đúng là như zay đó bạn ah`, còn nếu ko mở Cyberlink thì ko có gì xảy ra cả
                            |

                            Comment


                            • #29
                              Nguyên văn bởi arthasherovu Xem bài viết
                              đúng là như zay đó bạn ah`, còn nếu ko mở Cyberlink thì ko có gì xảy ra cả
                              Ồ không bạn của tôi!

                              Chắc là máy bạn cấu hình hơi yếu rồi, cyberlink chạy hơi nặng đó bạn chờ một lúc cyberlink YouCam nó khởi động lên là được. Tốt nhất là bạn chạy Cyberlink youcam trước đi khi nào thấy biểu tượng của cyberlink nằm ở góc dưới bên phải ở chỗ mấy chương trình như yahoo hay nằm ấy là ok. Nếu cyberlink đang chạy trên desktop thì tắt nó đi.

                              bạn dùng cyberlink có bản quyền không nếu không để mình gửi cho?

                              OK ?

                              Thân!
                              Bể học vô biên

                              Comment


                              • #30
                                bạn ah`, Cyberlink của mình bình thường, mình muốn hỏi về OpenCV cơ, mình ko thể open Webcam của laptop với đoạn code như trên, trong trường hợp mình mở Cyberlink rồi chạy OpenCV thì ra màn hình của VC++ giống của bạn đó,
                                Thanks
                                |

                                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