[問題] Opencv 2.2 讀取Camera影像的問題??

看板C_and_CPP (C/C++)作者 (芒果煉乳)時間13年前 (2012/07/18 17:11), 編輯推噓10(10013)
留言23則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) MS VS 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenCV-2.2.0-win32-vs2010 問題(Question): 小弟是剛接觸OpenCV不久的新手, 想讀取攝影機來做影像辨識方面的研究, 但參考了網路上許多的範例程式, ex:OpenCV wiki http://opencv.willowgarage.com/wiki/CameraCapture 和 昨日 http://yester-place.blogspot.tw/2008/06/opencv2.html 還有許多網友分享的code,但讀出來的畫面都是全灰的(如下) http://ppt.cc/0B~M (此為Open Wiki的code) 1.cvCaptureFromCAM( CV_CAP_ANY ); 這部分有試過0、-1抓出來都是全灰,1、2等其它的值程式執行後會直接結束。 2.fprintf( stderr, "Camera is OK \n"); 有加入一小段判斷如果有抓到畫面就印出字樣也有顯示。 3.攝影機為SONY HDR-XR150,影像擷取卡為UPMOST UPG305, 使用擷取卡附的軟體TV Expert可以正確的顯示攝影機畫面, 根據以上三點,硬體與程式的語法部分應該是沒有問題的才對, Google有看到跟我一樣問題但好像沒看到能用的解決辦法? 是不是哪邊還要作額外的設定我漏了呢?? 跪求版上各位指教!! (連不上攝影機,研究完全做不下去> <) 程式碼(Code):(請善用置底文網頁, 記得排版) 感謝Zero0910提供網頁版 http://ideone.com/Qzs7Q #include "stdafx.h" #include "cv.h" #include "highgui.h" #include <cxcore.h> #include <stdio.h> #include <math.h> #include <iostream> // A Simple Camera Capture Framework int main() { CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY ); if ( !capture ) { fprintf( stderr, "ERROR: capture is NULL \n" ); getchar(); return -1; } else fprintf( stderr, "Camera is OK \n"); // Create a window in which the captured images will be presented cvNamedWindow( "mywindow", CV_WINDOW_AUTOSIZE ); // Show the image captured from the camera in the window and repeat while ( 1 ) { // Get one frame IplImage* frame = cvQueryFrame( capture ); if ( !frame ) { fprintf( stderr, "ERROR: frame is null...\n" ); getchar(); break; } cvShowImage( "mywindow", frame ); // Do not release the frame! //If ESC key pressed, Key=0x10001B under OpenCV 0.9.7(linux version), //remove higher bits using AND operator if ( (cvWaitKey(10) & 255) == 27 ) break; } // Release the capture device housekeeping cvReleaseCapture( &capture ); cvDestroyWindow( "mywindow" ); return 0; } 補充說明(Supplement): 讀取電腦裡圖片來做一些簡單的影像辨識都是正常的 所以環境設定應該也沒問題... 不知道到底是哪邊的錯>"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.138.115

07/18 17:31, , 1F
1.請善用syntax網站 http://ideone.com/Qzs7Q
07/18 17:31, 1F

07/18 17:31, , 2F
2.或許你的截取卡不支援其他軟體去抓取影像
07/18 17:31, 2F
先謝謝你提供的網站!! 擷取卡本身應該也沒問題,因為這套設備是接手學長的 (但裝在不同電腦) 但目前連絡不到學長,所以才上來求救> < ※ 編輯: magicjoker 來自: 140.138.138.115 (07/18 17:43)

07/18 17:57, , 3F
用CV_CAP_PROP_FRAME_WIDTH跟CV_CAP_PROP_FRAME_HEIGHT
07/18 17:57, 3F

07/18 17:57, , 4F
設定capture的長跟寬試試 函式我不知道是哪個 跟2.2不熟
07/18 17:57, 4F

07/18 17:57, , 5F
不然就看學長的code是怎麼呼叫的 XD
07/18 17:57, 5F

07/18 18:02, , 6F
我用1.1是cvSetCaptureProperty() 不知道2.2有沒有
07/18 18:02, 6F

07/18 18:02, , 7F

07/18 18:03, , 8F
別再看昨日的網站了,他都是1.0指標寫法
07/18 18:03, 8F

07/18 18:03, , 9F
07/18 18:03, 9F
參考上面的網站,試了dia大貼的程式碼後,畫面一樣還是全灰@@ 另外把原本的程式cvCaptureFromCAM改成cvCaptureFromFile來讀資料夾裡的影片檔 也是能正常播放...不知道為何Camera讀出來就是灰的... ((p.s:學長電話打不通,囧)) ※ 編輯: magicjoker 來自: 140.138.138.115 (07/18 20:00)

07/18 20:23, , 10F
你先找其他軟體確定硬體是ok的
07/18 20:23, 10F

07/18 20:40, , 11F
用影像擷取卡附的軟體看攝影機輸出到電腦的影像是正常
07/18 20:40, 11F

07/18 20:53, , 12F
重編opencv呢?之前有遇過讀不到,重編就可以讀到
07/18 20:53, 12F

07/18 21:05, , 13F
不好意思,重編的意思是指?? 小弟剛接觸這塊不太懂@@
07/18 21:05, 13F

07/18 21:13, , 14F
抓opencv的src下來,自己重新編輯,不要用包好的
07/18 21:13, 14F

07/18 23:22, , 15F
不確定可行,但是我之前這樣就可以
07/18 23:22, 15F
重編src是指precomp.hpp檔裡面改成 #include "cvconfig.h" #if defined WIN32 || defined _WIN32 void FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin ); #endif 這樣嘛? 也改過了...不行 還是有其他要改的?

07/18 23:52, , 16F
看有沒有漏裝什麼driver或軟體
07/18 23:52, 16F

07/19 00:55, , 17F
我使用上會先用AMCap這軟體開看看,能開的話OpenCV就能開。
07/19 00:55, 17F
※ 編輯: magicjoker 來自: 140.138.138.115 (07/19 14:21)

07/19 14:29, , 18F
AMCap可以用,但是OpenCV還是不能 囧
07/19 14:29, 18F

07/19 15:01, , 19F
在Matlab也能使用QQ
07/19 15:01, 19F

07/19 16:37, , 20F
cvCreateCameraCapture() 這個指令用看看 死馬當活馬醫
07/19 16:37, 20F
這個指令有試過,也是不行...

07/19 18:24, , 21F
試試最新版本OpenCV?
07/19 18:24, 21F

07/19 23:30, , 22F
通常不會是版本的問題
07/19 23:30, 22F
※ 編輯: magicjoker 來自: 140.138.138.115 (07/20 12:44) 聯絡上學長了... 他說他之前也會有問題,用Ctrl+F5跳過偵錯就可以了。 但是他的視窗畫面是全黑,而我的是全灰,好像不太一樣@@? 還有人能有想到可能的其他解決方法嘛??QQ ※ 編輯: magicjoker 來自: 140.138.138.115 (07/20 18:55)

07/21 14:22, , 23F
我用過UPG304或306都沒什麼問題
07/21 14:22, 23F
文章代碼(AID): #1G1dswDx (C_and_CPP)
文章代碼(AID): #1G1dswDx (C_and_CPP)