Visual C++ 2010 Express에서 OpenCV를 사용하기 시작했습니다. 왜냐하면 MATLAB보다 빠르기 때문입니다.OpenCV와 MATLAB 속도 비교
둘 사이의 공정한 비교를 위해 RGB 이미지를 그레이 스케일로 변환하고 변환 이미지 공간 작업 경과 시간을 계산하는 프로그램을 실행하고 있습니다.
C++ 릴리스에서 작업을 수행하기 위해 cvtColor
명령을 사용하면 평균 약 5 밀리 초가 걸립니다. MATLAB에서 동일한 작업을 수행하면 평균 시간이 다소 줄어 듭니다.
이미 테스트를 마쳤으며 두 프로그램 모두 정상적으로 작동합니다.
OpenCV 속도를 향상시킬 수있는 사람이 있습니까?
C++ 코드.
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <opencv2/imgproc/imgproc.hpp>
#include <windows.h>
using namespace cv;
using namespace std;
double PCFreq = 0.0;
__int64 CounterStart = 0;
void StartCounter()
{
LARGE_INTEGER li;
if(!QueryPerformanceFrequency(&li))
cout << "QueryPerformanceFrequency failed!\n";
PCFreq = double(li.QuadPart)/1000.0;
QueryPerformanceCounter(&li);
CounterStart = li.QuadPart;
}
double GetCounter()
{
LARGE_INTEGER li;
QueryPerformanceCounter(&li);
return double(li.QuadPart-CounterStart)/PCFreq;
}
int main()
{
double time;
Mat im, result;
im = imread("C:/Imagens_CV/circles_rgb.jpg");
StartCounter();
cvtColor(im,result, CV_BGR2GRAY);
time = GetCounter();
cout <<"Process time: "<< time << endl;
}
MATLAB 코드에서 OpenCV에서
tic
img_gray = rgb2gray(img_rgb);
toc
FYI : 타이밍면에서 여러 번 평균 시간을 계산하는 것이 좋습니다. – herohuyongtao
예,이 작업을 수행했습니다. 5ms는 평균 시간입니다. 이 질문에이 정보를 추가했습니다. –
이 경우 MATLAB의 속도가 느려지는 이유는 무엇입니까? 함수가 제공되면 최적화 된 구현이 가능할 수 있습니다. 무슨 느린 matlab에 프로그래밍, 명시적인 루프, 등등을하고있다. –