我需要将OpenCV与GigE Vision以太网相机一起使用,但我找不到有关如何执行此操作的任何有用信息,任何指针,文档和示例代码?
我需要从相机读取帧.
Mar*_*ett 20
Gig-E是各种相机的通信标准.OpenCV现在包含基于Prosilica Gig-E的摄像头的包装器(参见CV_CAP_PVAPI)
但一般来说,最好使用相机的原生API来获取数据,然后使用openCV将返回的数据转换为图像,openCv包含许多Bayer模式 - > RGB例程.
CvCapture模块便于测试,因为它可以从相机或文件中无缝读取 - 但它并不适合高速实时视觉
你可以这样做!我使用了Baumer GAPI SDK,这是一个GenTL消费者.GenTL是一个通用传输层,是genIcam中的一个模块.你可以在这里阅读GenTL .使用像Baumer的GAPI或Basler API这样的GenTL消费者可以让事情变得更容易.它们应该适用于任何GigE相机.
我在这里用另一个答案做了一个更全面的方式来使用堡盟的GAPI SDK ,所以我将总结你需要什么.
C:\Program Files\Baumer\Baumer GAPI SDK\Docs\Programmers_Guide
).请参阅第4.3.1节.C:\Program Files\Baumer\Baumer GAPI SDK\Components\Examples\C++\src\0_Common\005_PixelTransformation
)中.复制C++文件并将其粘贴到新项目的源目录中.将这些#include语句添加到.cpp源文件的顶部:
#include <opencv2\core\core.hpp
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\video\video.hpp>
Run Code Online (Sandbox Code Playgroud)
在main()
函数的开头添加这些变量声明
// OPENCV VARIABLE DECLARATIONS
cv::VideoWriter cvVideoCreator; // Create OpenCV video creator
cv::Mat openCvImage; // create an OpenCV image
cv::String videoFileName = "openCvVideo.avi"; // Define video filename
cv::Size frameSize = cv::Size(2048, 1088); // Define video frame size
cvVideoCreator.open(videoFileName, CV_FOURCC('D', 'I', 'V', 'X'), 20, frameSize, true); // set the codec type and frame rate
Run Code Online (Sandbox Code Playgroud)
在原始的005_PixelTransformation.cpp文件中,第569行有一个for
循环,循环超过8个图像,这表示for(int i = 0; i < 8; i++)
.我们想要改变它以持续运行.我通过将其更改为while
循环来实现此目的
while (pDataStream->GetIsGrabbing())
Run Code Online (Sandbox Code Playgroud)
在while循环中有一个if
和else
语句来检查图像像素格式.在else
语句结束括号之后和语句之前pImage->Release();
,添加以下行
// OPEN CV STUFF
openCvImage = cv::Mat(pTransformImage->GetHeight(), pTransformImage->GetWidth(), CV_8U, (int *)pTransformImage->GetBuffer());
// create OpenCV window ----
cv::namedWindow("OpenCV window: Cam", CV_WINDOW_NORMAL);
//display the current image in the window ----
cv::imshow("OpenCV window : Cam", openCvImage);
cv::waitKey(1);
Run Code Online (Sandbox Code Playgroud)
确保为openCvImage
对象选择了正确的像素格式.我选择CV_8U
是因为我的相机是单声道8位.
在构建和编译时,你应该得到一个openCV窗口,显示你相机的实时信息!
就像我说的那样,可以做到,因为我已经做到了.如果遇到问题,请参阅程序员指南.
归档时间: |
|
查看次数: |
42414 次 |
最近记录: |