核心转储 - 32S、32F、8U
Core dump - 32S, 32F, 8U
我正在尝试 运行 这个代码序列:
DescriptorMatcher * matcher = new BFMatcher(NORM_HAMMING);
vector<DMatch> matches;
matcher -> match(descriptorsImage1, descriptorsImage2, matches);
导致此错误:
OpenCV Error: Assertion failed ((type == CV_8U && dtype == CV_32S) || dtype == CV_32F) in batchDistance, file /home/.../OpenCV/opencv-2.4.10/modules/core/src/stat.cpp, line 2480
terminate called after throwing an instance of 'cv::Exception'
what(): /home/.../OpenCV/opencv-2.4.10/modules/core/src/stat.cpp:2480: error: (-215) (type == CV_8U && dtype == CV_32S) || dtype == CV_32F in function batchDistance
Aborted (core dumped)
有人以前看过这个吗?
正如评论中提到的那样,您可能会误用描述符的类型及其适当的规范类型。
正如 OpenCV 的文档所说:
BFMatcher::BFMatcher(int normType=NORM_L2, bool crossCheck=false )
normType
– NORM_L1
、NORM_L2
、NORM_HAMMING
、NORM_HAMMING2
之一。 L1
和 L2
规范是 SIFT
和 SURF
描述符的首选,NORM_HAMMING
应该与 ORB
和 BRIEF
一起使用,当 WTA_K==3
或 4
时,NORM_HAMMING2
应与 ORB
一起使用(参见 ORB::ORB
构造函数说明)。
我正在尝试 运行 这个代码序列:
DescriptorMatcher * matcher = new BFMatcher(NORM_HAMMING);
vector<DMatch> matches;
matcher -> match(descriptorsImage1, descriptorsImage2, matches);
导致此错误:
OpenCV Error: Assertion failed ((type == CV_8U && dtype == CV_32S) || dtype == CV_32F) in batchDistance, file /home/.../OpenCV/opencv-2.4.10/modules/core/src/stat.cpp, line 2480
terminate called after throwing an instance of 'cv::Exception'
what(): /home/.../OpenCV/opencv-2.4.10/modules/core/src/stat.cpp:2480: error: (-215) (type == CV_8U && dtype == CV_32S) || dtype == CV_32F in function batchDistance
Aborted (core dumped)
有人以前看过这个吗?
正如评论中提到的那样,您可能会误用描述符的类型及其适当的规范类型。
正如 OpenCV 的文档所说:
BFMatcher::BFMatcher(int normType=NORM_L2, bool crossCheck=false )
normType
– NORM_L1
、NORM_L2
、NORM_HAMMING
、NORM_HAMMING2
之一。 L1
和 L2
规范是 SIFT
和 SURF
描述符的首选,NORM_HAMMING
应该与 ORB
和 BRIEF
一起使用,当 WTA_K==3
或 4
时,NORM_HAMMING2
应与 ORB
一起使用(参见 ORB::ORB
构造函数说明)。