问题
在学习OpenCV时,用OpenCV官方示例(XML/YAML Persistence — OpenCV 2.4.13.7 documentation)运行出现如下的报错。
#include "opencv2/opencv.hpp"
#include <time.h>
using namespace cv;
int main(int, char** argv)
{
FileStorage fs("test.yml", FileStorage::WRITE);
fs << "frameCount" << 5;
time_t rawtime; time(&rawtime);
fs << "calibrationDate" << asctime(localtime(&rawtime));
Mat cameraMatrix = (Mat_<double>(3,3) << 1000, 0, 320, 0, 1000, 240, 0, 0, 1);
Mat distCoeffs = (Mat_<double>(5,1) << 0.1, 0.01, -0.001, 0, 0);
fs << "cameraMatrix" << cameraMatrix << "distCoeffs" << distCoeffs;
fs << "features" << "[";
for( int i = 0; i < 3; i++ )
{
int x = rand() % 640;
int y = rand() % 480;
uchar lbp = rand() % 256;
fs << "{:" << "x" << x << "y" << y << "lbp" << "[:";
for( int j = 0; j < 8; j++ )
fs << ((lbp >> j) & 1);
fs << "]" << "}";
}
fs << "]";
fs.release();
return 0;
}
问题原因
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4996 'asctime': This function or variable may be unsafe. Consider using
asctime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online
help for details.
opencv_test D:\Learn\opencv_learning\opencv_test\opencv_test\opencv_test.cpp 267
根据上面的的错误提醒可以知道,由于微软官方不推荐使用C的asctime函数,这里会报不安全,所以推荐使用新的asctime_s函数。
问题解决
可以使用命令行的方式来取消掉这个警告,这里具体原理不太懂,只会照葫芦画瓢。
感谢该篇博文的博主解决了我的问题问题error C4996: 'asctime': This function or variable may be unsafe. Consider using asctime_s instead_IDMer的博客-CSDN博客
右击工程-->属性-->配置属性 --> C/C++ --> 命令行-->输入"/D _CRT_SECURE_NO_WARNINGS"-->"确定",这样问题就可以解决了。