小编GpG*_*GpG的帖子

在调试配置中将两个 cv::Mat 矩阵与 opencv 3.0/3.1 相乘时出现 cv::Exception

我在运行以下代码时观察到异常(Microsoft C++ 异常:内存位置 0x000000000028C510 处的 cv::Exception。):

cv::Mat a(5,60, CV_32FC1);
cv::Mat b(60,5, CV_32FC1);
cv::Mat c = a*b;

cv::Mat d(5, 60, CV_32FC1);
cv::Mat e(60,5, CV_32FC1);
cv::Mat f = d*e; 
Run Code Online (Sandbox Code Playgroud)

执行第三行代码时抛出异常:

cv::Mat c = a*b;
Run Code Online (Sandbox Code Playgroud)

之后不再发生( cv::Mat f = d*e; 不再抛出)。调试将我引导到以下 opencv 的功能:

inline
MatExpr::operator Mat() const
{
    Mat m;
    op->assign(*this, m);
    return m;   <- this is supposed to throw the exception
}
Run Code Online (Sandbox Code Playgroud)

如果我写:

auto c = a*b;
Run Code Online (Sandbox Code Playgroud)

而不是抛出异常,而是在最后一次调用时抛出:

cv::Mat f = d*e;
Run Code Online (Sandbox Code Playgroud)

仅在调试模式下和使用opencv 3.03.1时才会抛出异常。在发布模式或使用 opencv 2.4 时不会抛出异常。 …

c++ opencv visual-studio

6
推荐指数
0
解决办法
577
查看次数

使用 Windows API 写入和读取 Windows 注册表

我正在尝试从 Windows 寄存器中写入和读取:

写作:

std::string path = "c:\\"
LPCTSTR str_data = TEXT(path.c_str());
auto size = static_cast<DWORD>(strlen(str_data));
LONG setRes = RegSetValueEx(*key, TEXT("DumpFolder"), 0, REG_EXPAND_SZ, (LPBYTE)str_data, size);
Run Code Online (Sandbox Code Playgroud)

读:

char str_data[1028];
DWORD keyType;
DWORD size;
auto sk = TEXT("SOFTWARE\\Microsoft\\Windows\\Windows Error reporting\\LocalDumps");
auto status = RegGetValue(HKEY_LOCAL_MACHINE, sk, TEXT("DumpFolder"), RF_RT_REG_EXPAND_SZ, &keyType, str_data, &size);
Run Code Online (Sandbox Code Playgroud)

写入似乎工作正常,至少它在 regedit.exe 中看起来不错。

读取失败,ERROR_INVALID_PARAMETER = 87。如果我将 RF_RT_REG_EXPAND_SZ 更改为 RRF_RT_ANY,它可以在调试模式下工作,但在发布时仍然失败,错误代码为 ERROR_MORE_DATA = 234。我尝试过:

std::string path = "c:\\";
path = path + "\0"  (it should be null terminated anyway
Run Code Online (Sandbox Code Playgroud)

但它没有帮助

更新

首先,感谢您的回答,我现在对这件事有了更好的了解。不幸的是,我仍然无法成功读取字符串。

以下是结合以下答案的测试示例:

HKEY …
Run Code Online (Sandbox Code Playgroud)

c++ winapi visual-studio-2017

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

标签 统计

c++ ×2

opencv ×1

visual-studio ×1

visual-studio-2017 ×1

winapi ×1