读取Mat数据
通过迭代器访问Mat类矩阵中的元素
错误提示:0x00007FFD5C714FFC 处(位于 learn about opencv.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000A45F16EFD0 处。
分析:错误主要出现在迭代器MatIterator的begin 中,在网上搜索了Mat迭代器模板类对象Mat迭代器模板类对象 - 迷途小菜鸟 - 博客园 (cnblogs.com)
发现了主要错误是在读取多通道数据的时候直接在begin里写的是uchar,这种应该是单通道的读取方式,像我定义的3通道,应该是Vec3b这种读取方式
修改后成功~实现矩阵中每一个元素的遍(但是指针具体应该怎么使用我还是不清楚)
安装opencv contrib里踩坑
无法打开文件opencv_word410d.lib
一路解决下来都不行,索性直接安装了opencv4.7.0,这个里面直接就有sift函数,不需要再安装contrib了(搞了一天搞不明白,我恨)
struct NameCompare: std::binary_function <const char *, const char *, bool>这个函数反复出错!
应该是C++语言版本比较低的问题,我安装的opencv是4.1.0,安装在VS2022上就巨多问题,还是选择版本差不多的安装
struct NameCompare: std::binary_function <const char *, const char *, bool>
{
bool
operator () (const char *x, const char *y) const
{
return strcmp (x, y) < 0;
}
};
直接把这段代码替换成:
struct NameCompare {
bool operator()(const char* x, const char* y) const {
return strcmp(x, y) < 0;
}
};
这个函数就不再报错,很多报错的函数都是这个原理,因此C++语言版本不匹配的问题