我写了一个简单的代码来评估opencv中不同图像格式的写入时间......
void main()
{
#define SIZE 1024 ;//2048,4096 ...
cv::Mat image = cv::Mat(Size,Size,CV_8UC3,cv::Scalar(255));
for(int i = 0 ; i < 10 ; i++)
{
double t1 = cv::getTickCount();
QString Address = "Data/" + QString::number(i) + ".bmp";
cv::imwrite(Address.toUtf8().constData(),image);
t1 = (cv::getTickCount()-t1)*1000/cv::getTickFrequency();
qDebug()<<"Writing time is: "<<t1<<"\n";
cv::waitKey(100);
}
}
2048 * 2048的输出是:
11.7852 ms - 11.7595 ms - 11.765 ms - 11.5781 ms - 11.5957 ms - 11.4912 ms
248.912 ms - 263.184 ms - 11.8521 ms - 221.688 ms
当我为4096 * 4096运行此代码时,输出为:
43.3954 ms - 310.977 ms
1061.97 ms - 624.651 ms
1114.33 ms - 563.779 ms
1055.95毫秒 - 1115.99毫秒
345毫秒 - 1135.97毫秒
你可以看到写作时间因图像而异...这种差异非常大,我不知道为什么所有图像的写入时间都不一样。
我在qt环境下的linux ubuntu 12.04中编写代码。我的PC规格是Core-i7 sandybridge Harddisk 5400rpm和8 GB内部ram
我尝试使用“.jpg”格式的代码,输出为:
写作时间是:
105.14毫秒
105.797毫秒
101.163 ms
103.342毫秒
105.057毫秒
100.315毫秒
105.821毫秒
104.271毫秒
102.357毫秒
102.396毫秒
正如您所看到的那样,以.jpg格式写作时间没有任何实质性差异,但对于.bmp来说,写作时间的突然变化......
是因为硬盘访问时间?如果是这样,为什么这不会以.jpg格式发生?
感谢。