日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

OpenCV代码提取:Windows上通过DShow获取Camera视频

發布時間:2023/11/27 生活经验 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV代码提取:Windows上通过DShow获取Camera视频 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在OpenCV 3.1中獲取視頻的模塊在videoio(video input and output module)中,調用VideoCapture類接口,除了videoio模塊外還依賴core、highgui、imgproc、imgcodecs四個模塊,而OpenCV 2.4.13.6僅需要core、highgui、imgproc三個模塊。3.1中的videoio模塊其實是將2.4.13.6 highgui模塊中與視頻相關的code挪到了videoio中。

3.1中默認走的是IVideoCapture類流程,如果IVideoCapture創建失敗再試著走CvCapture類流程,而在2.4.13.6中就只能走CvCapture類流程。對外接口類VideoCapture的實現都在cap.cpp文件中。IVideoCapture的實現比CvCapture實現要復雜的多,因此這里以2.4.13.6中的code為參考進行code提取。

無論是3.1還是2.4.13.6,無論是IVideoCapture還是CvCapture,在Windows下它們默認的首選都是DShow即DirectShow,微軟提供的一套在Windows平臺上進行流媒體處理的開發包。除了DShow外,在Windows上還可以選擇VFW即Video for Windows,由微軟開發的使Windows能編解碼數字視頻的多媒體框架;也可以選擇MSMF即Microsoft Media Foundation,是微軟在Windows上推出的下一代多媒體開發庫。這里提取DShow code。

主要涉及到的opencv cpp文件包括:

(1). highgui/src/cap.cpp:此文件是對外接口類VideoCapture的實現。

(2). highgui/src/cap_dshow.cpp:此文件是DShow相關的代碼,主要包含三個類videoDevice、videoInput、CvCaptureCAM_DShow。CvCaptureCAM_DShow繼承自CvCapture類。

(3). core/src/array.cpp:僅需要此文件中的很少一部分,主要涉及IplImage的創建和釋放。

提取的所有相關code可在https://github.com/fengbingchun/OpenCV_Test/tree/master/src/fbc_cv 獲取到。

測試代碼如下:注:OpenCV原始代碼中并不支持輸入設備名獲取視頻,只能輸入索引值,這里也先僅支持索引值的方式

#include "fbc_cv_funset.hpp"
#include <videocapture.hpp>
#include <opencv2/opencv.hpp>int test_dshow()
{
#ifdef _MSC_VERint width = 640;int height = 480;int length = width * height * 3;fbc::VideoCapture capture(0);if (!capture.isOpened()) {fprintf(stderr, "fail to open capture\n");return -1;}capture.set(fbc::CV_CAP_PROP_FOURCC, fbc::CV_FOURCC('M', 'J', 'P', 'G'));capture.set(fbc::CV_CAP_PROP_FRAME_WIDTH, width);capture.set(fbc::CV_CAP_PROP_FRAME_HEIGHT, height);fbc::Mat_<unsigned char, 3> image(height, width);cv::Mat mat(height, width, CV_8UC3);const char* winname = "dshow video";cv::namedWindow(winname, 1);while (1) {capture >> image;mat.data = image.data;cv::imshow(winname, mat);if (cv::waitKey(30) >= 0)break;}return 0;
#elsefprintf(stderr, "Error: only support windows platform\n");return -1;
#endif
}

GitHub:https://github.com/fengbingchun/OpenCV_Test

總結

以上是生活随笔為你收集整理的OpenCV代码提取:Windows上通过DShow获取Camera视频的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。