- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在使用 Basler 相机 acA1300-30gc 开发机器视觉应用程序。为此,我正在使用 Basler Pylon 4 和 OPENCV 2.4.9 版,但出现了一些问题。我正在尝试使用 Pylon SDK 捕获图像并将其转换为 Mat 格式以供进一步分析。由于处理时间的限制,我的目标是避免将图像保存到硬盘驱动器,而是对其进行即时分析。
在下面的代码中,我 try catch 图像,将其转换为 Mat 格式并在新窗口中显示,但我得到的窗口是空白的。如果有人可以帮助我找出我的错误,或者解释我如何以不同的方式实现我的目标,我将不胜感激。 (我可能应该补充一点,相机工作正常,我已经能够将图像保存到硬盘)。
谢谢。
这是我的代码:
PylonAutoInitTerm autoInitTerm;
try
{
CInstantCamera camera( CTlFactory::GetInstance().CreateFirstDevice());
cout << "Dispositivo usado:"<<camera.GetDeviceInfo().GetModelName()<<endl;
CGrabResultPtr ptrGrabResult;
camera.GrabOne(500,ptrGrabResult,TimeoutHandling_ThrowException);
if(ptrGrabResult->GrabSucceeded())
{
CPylonImage target;
CImageFormatConverter converter;
converter.OutputPixelFormat=PixelType_RGB8packed;
converter.OutputBitAlignment=OutputBitAlignment_MsbAligned;
converter.Convert(target,ptrGrabResult);
Mat image(target.GetWidth(),target.GetHeight(),CV_8UC1,target.GetBuffer(),Mat::AUTO_STEP);
if(image.empty())
{
cout << "No se pudo cargar la imagen Mat" << endl;
return -1;
}
cout << "La imagen se presenta en la ventana *Captura*" << endl;
namedWindow("Captura",WINDOW_AUTOSIZE);
imshow( "Captura", image );
}
else
{
cout<<"Error: "<<ptrGrabResult->GetErrorCode()<<" "<<ptrGrabResult->GetErrorDescription()<<endl;
}
}
最佳答案
您必须确保像素类型匹配。在您的代码示例中,您使用 PixelType_RGB8packed
作为相机图像,使用 CV_8UC1
作为 Mat 像素类型。您应该改用 CV_8UC3
。此外,我会使用 PixelType_BGR8packed
而不是 PixelType_RGB8packed
,因为 BGR 与 Windows 位图兼容。我假设你使用 Windows。
关于c++ - Basler Pylon 4 SDK 和 OPENCV 2.4.9,CPylonImage 到 Mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101877/
我有 Basler acA3800 USB 相机。 IGrabResult grabResult = camera.StreamGrabber.RetrieveResult(5
我正在尝试使用 C++ 程序来使用 Basler 相机捕获图像。我拿到来自制造商的代码,它应该是“非常容易使用”,但是,链接它有成为一场噩梦。我的C++时代过去了(最近才用Matlab),所以我可能犯
我在实时图像处理项目中工作,我使用的是 Basler 相机型号 acA1300-200uc,通过 USB3 进行通信,但我的 C++ 程序的 fps 有问题,因为相机支持超过 200 fps 但我的程
我正在尝试将从 Basler 相机捕获的帧转换为 OpenCV 的 Mat 格式。 Basler API 文档中没有太多信息,但 Basler 示例中的这两行应该有助于确定输出格式: // Get t
我在尝试使用我的 basler cam 使 opencv 人脸检测在 QT 中工作时遇到了一些麻烦;我尝试了许多不同的方法来让它工作,使用许多不同的在线示例代码。我似乎根本无法让它工作;此外,我所做的
我正在尝试在 openframeworks 上使用带有一些 openCV 内容的 Basler ( https://www.baslerweb.com/) 相机。我以前使用过 Point Grey 相
我正在尝试将 Qt 与 Qt Creator 项目中的 Pylon 相机 SDK 链接起来。 我从这个 pylon for OS X 安装了 pylon Camera Software Suite 应
我曾尝试从不同的项目调用 pylon5 C++ 库,但没有成功。 我一直在寻找答案有一段时间了,但就是无法弄清楚我做错了什么。 我想我的问题可能出在设置环境变量和/或库路径上? (我是基于 Linux
我正在开发一个简单的相机查看器来测试 Basler 相机 acA1300-30gc。我在使用 Basler Pylon 4 和 OPENCV 2.4.8 版的 Ubuntu 14.04 中工作,因为我
我在 python3 gstreamer1.0 中使用 pylonsrc 元素从 basler 相机中捕捉视频片段。 例如使用这个管道: [GST_DEBUG=pylonsrc:5 gst-launc
我目前正在使用 Basler 相机 acA1300-30gc 开发机器视觉应用程序。为此,我正在使用 Basler Pylon 4 和 OPENCV 2.4.9 版,但出现了一些问题。我正在尝试使用
我是一名优秀的程序员,十分优秀!