网站建设 中小企业龙岩做网站的地方
2026/4/18 16:17:00 网站建设 项目流程
网站建设 中小企业,龙岩做网站的地方,做司考题的网站,微营销是什么笔者在基于opencv库的qt开发中#xff0c;使用cv::imread读取图片时总是读到空图片#xff0c;但是用QImage读同样的图片就没问题#xff0c;说明图片并未损坏#xff0c;路径是对的。那问题在哪里呢#xff1f;首先#xff0c;在程序运行目录下放一张简单的jpg格式图片使用cv::imread读取图片时总是读到空图片但是用QImage读同样的图片就没问题说明图片并未损坏路径是对的。那问题在哪里呢首先在程序运行目录下放一张简单的jpg格式图片如果jpg格式都不能读说明本身库的调用就有问题。测试代码如下// 测试读取一个简单的 JPG 文件 cv::Mat testImg cv::imread(test.jpg); // 放在构建目录下用相对路径 if (testImg.empty()) { std::cout 连普通的 JPG 都读不了说明 imread 功能彻底坏了。 std::endl; } else { std::cout JPG 读取成功说明 imread 功能正常只是那个 BMP 文件有问题。 std::endl; }结果确实是连jpg都读不了。我们临时生成一个图片看看能不能读#include QCoreApplication #include opencv2/opencv.hpp #include iostream #include fstream int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 测试1: 检查OpenCV是否能读取任何图片 std::cout 测试1: OpenCV文件读取能力 std::endl; // 创建并保存一个测试图片 cv::Mat test_img cv::Mat::ones(100, 100, CV_8UC3) * cv::Scalar(100, 150, 200); cv::imwrite(test_saved.png, test_img); std::cout 1. 已创建 test_saved.png std::endl; // 立即读取刚才保存的文件 cv::Mat loaded cv::imread(test_saved.png); if (loaded.empty()) { std::cout ❌ OpenCV无法读取自己刚保存的文件 std::endl; std::cout 这表明OpenCV的imgcodecs模块有问题 std::endl; } else { std::cout ✅ OpenCV能读取自己保存的文件 std::endl; std::cout 尺寸: loaded.size() std::endl; } return a.exec(); }结果连测试图片都没有创建只打印了程序开头第一句 程序就崩溃了崩溃提示如下这是典型的DLL依赖问题或OpenCV库冲突。经过排查pro文件发现我导入opencv库的语句如下unix|win32: LIBS -L$$PWD/../../../../../opencv/build/x64/vc14/lib/ -lopencv_world440 INCLUDEPATH $$PWD/../../../../../opencv/build/x64/vc14 DEPENDPATH $$PWD/../../../../../opencv/build/x64/vc14 unix|win32: LIBS -L$$PWD/../../../../../opencv/build/x64/vc14/lib/ -lopencv_world440d INCLUDEPATH $$PWD/../../../../../opencv/build/x64/vc14 DEPENDPATH $$PWD/../../../../../opencv/build/x64/vc14AI问题分析VC14 vs VC15冲突你的错误信息显示OpenCV是vc15编译的但你的.pro文件链接的是vc14库这是ABI不兼容必然崩溃Release/Debug库同时链接你同时链接了opencv_world440(Release) 和opencv_world440d(Debug)这会导致符号冲突总结Release/Debug库混用和版本不匹配问题。修复方案区分debug和release配置# 删除原来的配置改为 # OpenCV包含路径 INCLUDEPATH $$PWD/../../../../../opencv/build/include # Debug配置 - 链接Debug库 CONFIG(debug, debug|release) { message(Debug配置使用Debug版OpenCV) LIBS -L$$PWD/../../../../../opencv/build/x64/vc15/lib/ LIBS -lopencv_world440d # 注意最后的d表示Debug } # Release配置 - 链接Release库 CONFIG(release, debug|release) { message(Release配置使用Release版OpenCV) LIBS -L$$PWD/../../../../../opencv/build/x64/vc15/lib/ LIBS -lopencv_world440 # 没有d表示Release }现在再读取最开始的jpg文件就没报错了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询