作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将 (Pleora SDK)PvBuffer 转换为 Opencv 缓冲区并处理流时遇到问题。
这是我在(Pleora SDK C++示例代码)中找到的示例代码
while ( !PvKbHit() )
{
PvBuffer *lBuffer = NULL;
PvResult lOperationResult;
PvBufferWriter lBufferWriter;
// Retrieve next buffer
PvResult lResult = aStream->RetrieveBuffer( &lBuffer, &lOperationResult, 1000 );
if ( lResult.IsOK() )
{
if ( lOperationResult.IsOK() )
{
PvPayloadType lType;
//
// We now have a valid buffer. This is where you would typically process the buffer.
// -----------------------------------------------------------------------------------------
lFrameRate->GetValue( lFrameRateVal );
lBandwidth->GetValue( lBandwidthVal );
// If the buffer contains an image, display width and height.
uint32_t lWidth = 0, lHeight = 0;
lType = lBuffer->GetPayloadType();
cout << fixed << setprecision( 1 );
cout << lDoodle[ lDoodleIndex ];
cout << " BlockID: " << uppercase << hex << setfill( '0' ) << setw( 16 ) << lBuffer->GetBlockID();
if ( lType == PvPayloadTypeImage )
{
// Get image specific buffer interface.
PvImage *lImage = lBuffer->GetImage();
// Read width, height.
lWidth = lBuffer->GetImage()->GetWidth();
lHeight = lBuffer->GetImage()->GetHeight();
unsigned char * data = lBuffer->GetImage()->GetDataPointer();
Mat OpencvImg = Mat(Size(lWidth, lHeight), CV_8UC1, data);
threshold(OpencvImg, OpencvImg, 100, 255, 0);
如果您检查最后 3 行,我正在尝试将缓冲区转换为 Mat 但没有成功。我也想显示流。
提前致谢。
最佳答案
我在以下方面取得了一些成功,但是这个结果确实效率低下,我希望找到一种不涉及中间写入磁盘的转换方法。
cv::Mat workImage;
lBuffer->GetImage()->Alloc(lWidth, lHeight, PvPixelBGR8);
lBufferWriter.Store(lBuffer, "ImageOriginal.bmp", PvBufferFormatBMP);
workImage = cv::imread("ImageOriginal.bmp", CV_LOAD_IMAGE_COLOR);
编辑(有效):
cv::Mat workImage;
PvImage* lImage = lBuffer->GetImage();
lImage->Alloc(lWidth, lHeight, PvPixelRGB8);
// Get image data pointer so we can pass it to CV::MAT container
unsigned char *img = lImage->GetDataPointer();
// Copy/convert Pleora Vision image pointer to cv::Mat container
cv::Mat lframe(lHeight, lWidth, CV_8UC3, img, cv::Mat::AUTO_STEP);
lframe.copyTo(workImage);
关于c++ - PvBuffer (Pleora SDK) 到 -> Opencv 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34218482/
我目前正在尝试使用 pleora SDK 连接到 FLIR AX5 热像仪。我尝试运行在 ebus_sdk/share/sample 中找到的所有示例程序。但是,当我尝试运行它们时,我可以选择相机,但
我在将 (Pleora SDK)PvBuffer 转换为 Opencv 缓冲区并处理流时遇到问题。 这是我在(Pleora SDK C++示例代码)中找到的示例代码 while ( !PvKbHit(
我目前正在尝试使用从 Pleora SDK 提供的示例(特别是图像处理示例)派生的 C++ 代码保存来自 Basler acA1280 彩色相机的图像。我想更正我目前能够保存的图像的一些问题: 它是蓝
我是一名优秀的程序员,十分优秀!