本人的环境是Qt 5.14.1+VS2017+OpenCV 3.4.16,创建HelloWorld项目后一直读不到图片内容,针对能搜到的经验,全都尝试了还是无果,以下是尝试过程。
HelloWorld代码
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char *argv[])
{
Mat image = imread("C:/Users/Henry/Desktop/single/IMG_2447.JPG");
std::cout << image.cols << std::endl;
std::cout << image.rows << std::endl;
// resize(image, image, Size(192, 108));
// imshow("test", image);
// waitKey(0);
return 0;
}
1、网上经验-确认图片确实存在,这个我是非常确定的。
2、网上经验-确认路径的书写方式
以下几种我都进行了尝试,均无效。
Mat image = imread("C:/Users/Henry/Desktop/single/IMG_2447.JPG");
Mat image = imread("C://Users//Henry//Desktop//single//IMG_2447.JPG");
Mat image = imread("C:\\Users\\Henry\\Desktop\\single\\IMG_2447.JPG");
3、网上经验-确认当前工程为Debug还是Release使用对应的库文件和动态连接库文件。
我当前为Debug模式,确认所用的文件均为对应的Debug模式的文件。
LIBS += \
-LD:/ThridPartyLibrary/opencv/opencv-3.4.16/build/x64/vc14/lib/ \
-lopencv_world3416d
尝试后还是无效。
4、到这里已经接近崩溃,已经过了三天了,开始病急乱投医,因为之前用的是官网下载的安装版本,所以尝试自己编译opencv,具体教程比较多这里就不详细介绍了。编译完成后,再尝试以上方法,还是无效。厚礼蟹!
5、虽然精神和信心受到极大打击,学习还是要继续。说来也是笨,刚想起来调试,调试发现竟然在我的路径前面出现多余的三个字符!!!
狂喜,问题终于找到了!!!盲猜是编码问题,然后就去qt中设置文件的编码
果然,路径中出现了乱码,修改后编译运行,成功了!!!
还是太菜了,要是及时调试不会浪费这么多时间。总归问题也解决了,也成功实现了导入unet网络训练的模型,对目标图片进行预测。
到这里是一个结束,更是一个开始!