【发布时间】:2017-12-12 07:58:11
【问题描述】:
我的程序的运行时行为有问题,这取决于我如何启动它(终端或 Qt Creator)。
这是一个使用 openCV 匹配两个图像的简短程序。在内部,openCV 大概做了一些优化,所以运行时使用/可以使用多核。
当我从终端启动程序时,我可以观察到所有内核都已使用。 => 快速程序
如果我直接从 Qt Creator 启动程序,将只使用一个内核。 => 慢程序
有人对此行为有解释吗? 我用 Qt Creator 创建了二进制文件,为什么我会得到两种不同的行为,这取决于我的执行方法?
这是一个例子:
//main.cpp
#include <opencv2/opencv.hpp>
using namespace cv;
void compute(Mat &img, vector<KeyPoint> &kVec, Mat &dMat) {
StarFeatureDetector featureDectector(16, 5, 10, 8, 5);
featureDectector.detect(img, kVec);
BriefDescriptorExtractor descriptorExtractor(64);
descriptorExtractor.compute(img, kVec, dMat);
}
int main(int argc, char** argv) {
Mat img1 = cv::imread("img1.pgm", CV_LOAD_IMAGE_GRAYSCALE);
Mat img2 = cv::imread("img2.pgm", CV_LOAD_IMAGE_GRAYSCALE);
Mat dMat1, dMat2;
vector<KeyPoint> kVec1, kVec2;
for (int i = 0; i < 10; i++) {
std::cout << i << std::endl;
compute(img1, kVec1, dMat1); // compute Key-Points first image
compute(img2, kVec2, dMat2); // compute Key-Points second image
vector< vector<DMatch> > cVec;
BFMatcher matcher(NORM_HAMMING, false);
matcher.knnMatch(dMat1, dMat2, cVec, 2);
}
}
#.pro file
CONFIG += console
CONFIG -= app_bundle
CONFIG += c++14
TARGET = test
TEMPLATE = app
CONFIG += opencv
include(3rdparty.pri) #openCV include
SOURCES += main.cpp
【问题讨论】:
-
如果在调试模式下从 IDE 启动程序会怎样?
-
我尝试了“发布”和“调试”工具包,但行为相同。
标签: c++ qt opencv qt-creator