시작 방법 (터미널 또는 Qt 생성자)에 따라 프로그램의 런타임 동작에 문제가 있습니다.프로그램 시작 방법에 따라 다른 런타임 동작 (터미널 대 Qt 생성자)
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에서 프로그램을 시작하면 어떻게됩니까? – vahancho
"릴리스"및 "디버그"키트를 사용해 보았지만 동일한 동작입니다. –