none
關於VS2010+openCV2.2在win7下 有webcam bug RRS feed

  • 一般討論

  • 本人是研究生 目前在做機器人的SLAM 有幸使用VS2010

    之前裝好opencv 遇到一個問題就是除了webcam沒有畫面外 其他的code 順利運行

    這幾天找很久 卻發現在台灣只能在網路上找答案 卻很少人PO指導文跟問題經驗分享

    找的答案與教學文大都是從中國找到  所以我在這裡提供一個經驗給大家 

    PS.最好下載OpenCV-2.2.0-win.zip  (需要編譯的) 不是OpenCV-2.2.0-win32-vs2010.exe

     win7與openCV 2.2 有一個bug  編譯前要修改一個檔案

    $(安裝OpenCV目錄)\modules\highgui\src\precomp.hpp

    再找到:

    #if !defined WIN32 && !defined _WIN32

    #include "cvconfig.h"
    #else
    void  FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin );
    #endif


    取代成:

    #include "cvconfig.h"

    #if defined WIN32 || defined _WIN32
    void  FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin );
    #endif

    這樣就可以照官網編譯成功 並且webcam可以擷取畫面成功

     



    2011年5月16日 下午 03:28

所有回覆

  • 您好:

    我是準備要做機器人相關 SLAM技術

    要在windows底下開發APP 所以採用VS2010 + opencv + EnguCV

    可是最主要webcam 畫面卻一直跑不出來

    實驗環境

    OS:windows 7 32 bit

    CPU:AMD Athlon 64x2 3800+

    RAM:DDR 400 1G

    WebCam: LifeCam studio

    IDE:VS2010

    首先是先測試OpenCV + C++

    官網提供的測試範例 基本上都可以執行 所以在設定opencv應該是沒有問題

    不過要測試別人寫的webcam

     

    #include "stdafx.h"
    #include "cv.h"
    #include "highgui.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
     
     IplImage* pImg; //聲明IplImage指針
            cvNamedWindow( "Camera", 1 );
     
            CvCapture *capture;
     int c; 
        
     capture = cvCaptureFromCAM(0);
     if(!capture)
    return -1;
    else
            printf("Camera is OK! \n");

    while(true){
      if(cvGrabFrame(capture)){
    pImg = cvRetrieveFrame(capture);
    cvShowImage( "Camera", pImg );
    }
    //等待ESC按鍵按下則結束
    if(cvWaitKey(10) == 27)
    break;
    } // end of while 
      cvWaitKey(0);

           cvDestroyWindow( "Camera" );//銷毀視窗

    cvReleaseCapture( &capture );  
    return 0;
    }

    卻會一直出現灰色 畫面顯示不出來 我換用Ubuntu+Qtcreator 卻沒問題 成功有畫面

    到底是出在OS?? VS2010??  起初以為是webcam支援性問題 因為可以在其他OS下執行就排除

     

    最後在試EnguCV+C# 也是一樣...範例基本上都沒問題可以執行 就是關於webcam功能都無法顯示畫面

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using Emgu.CV;

    using Emgu.CV.UI;

    using Emgu.CV.Structure;

    using System.Drawing;

    using System.Windows.Forms;

    namespace test02

    {

        class Program

        {

            static void Main(string[] args)

            {

                ImageViewer viewer = new ImageViewer(); //create an image viewer

                Capture capture = new Capture(); //create a camera captue

                Application.Idle += new EventHandler(delegate(object sender, EventArgs e)

                {  //run this until application closed (close button click on image viewer)

                    viewer.Image = capture.QueryFrame(); //draw the image obtained from camera

                });

                viewer.ShowDialog(); //show the image viewer

            }

        }

    }

    PS.在執行上面code webcam上的燈有亮 卻沒畫面

     



    • 已合併 小歐ouMVP 2011年5月17日 上午 01:10 相同文章
    2011年5月15日 上午 10:48
  • 原文借轉至此,謝謝大大解決了我的問題!!
    2011年6月23日 上午 08:24