小编cho*_*_ff的帖子

将Basler图像转换为OpenCV

我正在尝试将从Basler相机捕获的帧转换为OpenCV的Mat格式.Basler API文档中没有很多信息,但这些是Basler示例中的两行,在确定输出格式时应该有用:

// Get the pointer to the image buffer
const uint8_t *pImageBuffer = (uint8_t *) Result.Buffer();
cout << "Gray value of first pixel: " << (uint32_t) pImageBuffer[0] << endl << endl;
Run Code Online (Sandbox Code Playgroud)

我知道图像格式是什么(目前设置为单声道8位),并尝试过:

img = cv::Mat(964, 1294, CV_8UC1, &pImageBuffer);
img = cv::Mat(964, 1294, CV_8UC1, Result.Buffer());
Run Code Online (Sandbox Code Playgroud)

两者都不奏效.任何建议/建议将不胜感激,谢谢!

编辑:我可以通过以下方式访问Basler图像中的像素:

for (int i=0; i<1294*964; i++)
  (uint8_t) pImageBuffer[i];
Run Code Online (Sandbox Code Playgroud)

如果这有助于将其转换为OpenCV的Mat格式.

opencv

3
推荐指数
1
解决办法
8544
查看次数

将引用变量初始化为类成员

我正在尝试将函数从我正在使用的相机SDK转换为类,因此我可以单独调用函数的不同部分(初始化,捕获图像,清理).我遇到的一个问题是函数中的一些变量定义为:

type& var = type::init();
Run Code Online (Sandbox Code Playgroud)

当我这样做时,这不起作用:

class myClass
{
private:
type& var;
};
Run Code Online (Sandbox Code Playgroud)

我试图改变:

type& var;
Run Code Online (Sandbox Code Playgroud)

至:

type* var;
Run Code Online (Sandbox Code Playgroud)

当我将所有内容都放在一个函数中时,这很好用,但是当我尝试将它分解为类中的单独函数时,代码会编译但不会运行.我的代码有什么根本原因吗?

编辑:代码来自Basler的SDK,原始代码是:

Pylon::CTlFactory& TlFactory = Pylon::CTlFactory::GetInstance();
Run Code Online (Sandbox Code Playgroud)

在头文件中:

Pylon::CTlFactory *TlFactory;
Run Code Online (Sandbox Code Playgroud)

和cpp文件:

TlFactory = &Pylon::CTlFactory::GetInstance();
Run Code Online (Sandbox Code Playgroud)

如上所述,当所有代码都在一个函数中时,它编译并运行正常,只有当我将其分解为类函数时才会出现问题...

c++ reference class

0
推荐指数
1
解决办法
1334
查看次数

标签 统计

c++ ×1

class ×1

opencv ×1

reference ×1