C++ 将矩阵传递到函数时数据的严重丢失(OpenCV 2.4.6和Qt 4.8.4)
我一直在与一个可怕的问题作斗争,这个问题涉及到矩阵数据的丢失,因为矩阵(Mat)作为一个参数传递到我的一个自定义函数中 这个问题让我有些吃惊,因为它在单独运行示例程序(使用Visual Studio 2012编译)时没有出现。对于独立应用程序,数据被传递并处理得很好。只有在将示例应用程序编译到静态库(.lib)并链接到Qt4.8.4下运行的主应用程序时,问题才会出现 基本代码 主应用程序 头文件 函数定义 主要观察结果C++ 将矩阵传递到函数时数据的严重丢失(OpenCV 2.4.6和Qt 4.8.4),c++,qt,opencv,matrix,C++,Qt,Opencv,Matrix,我一直在与一个可怕的问题作斗争,这个问题涉及到矩阵数据的丢失,因为矩阵(Mat)作为一个参数传递到我的一个自定义函数中 这个问题让我有些吃惊,因为它在单独运行示例程序(使用Visual Studio 2012编译)时没有出现。对于独立应用程序,数据被传递并处理得很好。只有在将示例应用程序编译到静态库(.lib)并链接到Qt4.8.4下运行的主应用程序时,问题才会出现 基本代码 主应用程序 头文件 函数定义 主要观察结果 对于大多数缓冲区,数据会传入和传出函数Find_courses_Valida
Mat导入了您的图像,
Mat导入的_图像_bin,
...
垫和前端(缓冲器连接器)
{
...
导入的\u IMAGE\u bin.copyTo(FOREGR\u BUFFER\u连接器);
imwrite(“FOREGR\u BUFFER\u CONNECTORS2.png”,FOREGR\u BUFFER\u CONNECTORS);
} -->观察结果总是一样的:FOREGR\u BUFFER\u连接器在函数调用外部显示良好,但在内部显示为空。 正如我所说:只有当我将代码作为链接到集成应用程序中的静态库运行时(而不是单独运行时),问题才会出现
有什么建议吗?
我试着通过参数和值传递缓冲区FOREGR\u buffer\u连接器:
通过参数传递是什么意思?C++中没有“传递参数”这一点,你如何观察冒犯矩阵的值?由于Mat
只不过是一个引用计数智能指针,大多数时候通过引用传递它是没有意义的。我的意思是说通过值传递或通过引用传递,如示例语句所示:Mat-FOREGR\u BUFFER\u连接器与Mat&FORGR\u BUFFER\u连接器
IMPORTED_IMAGE_bin.copyTo( FOREGR_BUFFER_CONNECTORS );
imwrite( "FOREGR_BUFFER_CONNECTORS1.png", FOREGR_BUFFER_CONNECTORS );
...
ind_Contours_Validate( IMPORTED_IMAGE, ..., FOREGR_BUFFER_CONNECTORS, ...);
void Find_Contours_Validate(
Mat IMPORTED_IMAGE,
...
Mat &FOREGR_BUFFER_CONNECTORS );
void Find_Contours_Validate(
Mat IMPORTED_IMAGE,
...
Mat &FOREGR_BUFFER_CONNECTORS )
{
...
imwrite( "FOREGR_BUFFER_CONNECTORS2.png", FOREGR_BUFFER_CONNECTORS );
}