异常 KernelBase.dll

Posted

技术标签:

【中文标题】异常 KernelBase.dll【英文标题】:Exception KernelBase.dll 【发布时间】:2016-01-20 14:40:40 【问题描述】:

我正在使用带有 OpenCV 3.0 的 Visual Studio 2010。

以下代码尝试提取 HOG 特征以训练 SVM 分类器。但是,当我尝试在行中使用 HOG 的函数“计算”时

hog.compute(grayImg,descriptor,Size(),Size(),positions);

出现如下错误:

TrainSVM.exe 中 0x000007fefd9bb16d (KernelBase.dll) 中未处理的异常:Microsoft C++ 异常:内存位置 0x0026e1b0 处的 cv::Exception。

            String imagesPath = "Positivas/*.jpg"; 
            vector<String> fn;
            glob(imagesPath, fn, true); // recursive, if you want
            for (size_t i=0; i<fn.size(); i++)
            
                Mat img = imread(fn[i]);     
                std::vector<cv::Point> positions;
                positions.push_back(cv::Point(0,0));
                std::vector<float> descriptor;
                cv::Mat grayImg;//(patchHeight,patchWidth,CV_8UC1,0);
                cvtColor( img, grayImg, COLOR_BGR2GRAY );
                hog.compute(grayImg,descriptor,Size(),Size(),positions);

                Mat auxDescriptor = cv::Mat(descriptor);
                Mat descriptorMat(1,auxDescriptor.rows,CV_32FC1);
                transpose(auxDescriptor, descriptorMat);
                trainingData.push_back(descriptorMat);
                trainingLabels.push_back(labelPositive);

            

对此有什么想法吗?提前致谢!

【问题讨论】:

这可能是 OpenCV 代码中的断言失败。我不使用 VS,但如果您可以使用它向您显示与异常相关的消息,这将帮助您识别问题。 @SSteve 我已经按照你的建议做了,我得到了下一条消息:OpenCV Error: Assertion failed ((n & (n - 1)) == 0) in cv::alignSize, file C:\builds\master_PackSlave-win64-vc12-shared\opencv\modules\core\include\opencv2/core /utility.hpp,第 347 行 好的,所以您知道调用alignSize 有问题。查看alignSize 的文档,它说n 必须是2 的幂。如果 VS 会为您提供异常堆栈跟踪,您可以找出调用 alignSize 的内容以及为什么它使用不是 2 的幂的东西来执行此操作。或者查看hog.compute 的文档,看看是否要求您传递的参数之一的大小必须是 2 的幂。 谢谢你,你是对的!我使用的窗口大小不是 2 的幂;) 太棒了!我将此作为答案发布。 【参考方案1】:

在收到异常消息后,我们发现调用 alignSize 时断言失败。 alignSize 的文档要求参数是 2 的幂。从那里,我们查看了 hog.compute 的文档,发现它需要的窗口大小是 2 的幂。

【讨论】:

以上是关于异常 KernelBase.dll的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 协程协程异常处理 ① ( 根协程异常处理 | 自动传播异常 | 在协程体捕获异常 | 向用户暴露异常 | 在 await 处捕获异常 | 非根协程异常处理 | 异常传播特性 )

Kotlin 协程协程异常处理 ① ( 根协程异常处理 | 自动传播异常 | 在协程体捕获异常 | 向用户暴露异常 | 在 await 处捕获异常 | 非根协程异常处理 | 异常传播特性 )

异常--异常体系异常的处理异常的捕获finally语句块和自定义异常

Java❤️认识异常异常的基本使用认识异常(异常详解)❤️

异常(异常)

JavaSE基础七----<异常>常见的异常,异常处理机制,自定义异常