在使用Visual Studio2013和opencv读取图像时,会出现读取的图像为空的情况,编译并没有错误。总结了以下可能原因:
一、fopen函数出现问题
这个问题比较隐秘,由于编译和生成时没有报错,可能会被掩盖住。当只引入opencv头文件而不输入任何其他opencv的命令时,会出现
1>—— 已启动生成: 项目: test, 配置: Debug Win32 ——
1> stdafx.cpp
1>d:\test\stdafx.cpp(18): error C4996: ‘fopen’:
This function or variable may be unsafe. Consider using fopen_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
解决方法:
点击项目 ->属性 -> c/c++ -> 预处理器 -> 预处理器定义,在后面追加_CRT_SECURE_NO_WARNINGS
二、路径问题
由于windows系统和linux系统的差异,在windows下路径的表示使用反斜杠\,但由于反斜杠在字符串里表示转义,因此我们在书写路径时,需要两个反斜杠\。在Linux下路径表示使用斜杠/。
但是目前在VS2013中这种差异已经消除了,两种情况都是正确的。