记录一个opencv的imread方法无法读取成功的问题,【设计到visual studio和静态库(lib)匹配的问题】
一、为什么会遇到这个问题
公司需要对多图进行拼接,经过多番查找发现了OpenStitching这个库。可以实现多图拼接。在python段尝试了之后感觉效果不错,所以使用Visual Studio进行C++开发。
在读取图片的时候发现imread方法无论怎么样都无法读取到图片。
二、解决办法
我一开始以为是路径的问题,在尝试过相对路径、绝对路径无果后,就开始排查其他的问题。最后的解决办法:

如果工程配置的是debug,那么在添加 “配置属性 -> 链接器 -> 输入 -> 附加依赖项” 的时候,需要添加的静态库是带有d结尾的lib文件。

这样就解决了问题。
三、为什么会有这个问题
小弟不才,还是问了AI。以下是AI给出的解释,大家当个参考吧。
调试版本库和发布版本库之间的主要区别在于编译器的设置和优化。以下是一些关键区别:
调试信息:
调试版本库(Debug Build):包含了额外的调试信息,比如符号表和源代码映射,这使得你在调试时能够更容易地跟踪代码和诊断问题。调试版本库没有经过优化,代码的执行速度可能较慢,但调试信息能帮助你更好地理解代码的执行情况。
发布版本库(Release Build):不包含调试信息,经过优化以提高代码的执行效率和性能。优化可能会改变代码的执行方式,使得调试信息不再有效,因此在发布版本时,调试信息通常是不需要的。
优化:
调试版本库:编译器通常会关闭优化,以便你可以逐步执行代码并检查变量的值。这使得调试过程更可控,但可能导致生成的代码效率较低。
发布版本库:编译器会开启各种优化选项,试图提高程序的执行速度和减少代码体积。这些优化可能会对代码行为产生影响,比如内联函数、循环展开等。
运行时检查:
调试版本库:通常会启用额外的运行时检查,比如边界检查、断言等。这些检查帮助捕捉潜在的错误,但也会带来额外的运行时开销。
发布版本库:通常会关闭这些运行时检查,以提高性能。
库文件的命名:
调试版本库:通常会带有 d 后缀(例如 opencv_world4100d.lib 和 opencv_world4100d.dll)。
发布版本库:没有 d 后缀(例如 opencv_world4100.lib 和 opencv_world4100.dll)。
在项目中混用调试和发布版本库可能会导致不兼容的问题,特别是在使用第三方库(如 OpenCV)时。如果你在调试模式下使用了发布版本库,或者在发布模式下使用了调试版本库,可能会遇到一些无法预测的行为或错误。因此,确保你的编译设置与链接库版本相匹配是非常重要的。
记录一个opencv的imread方法无法读取成功的问题,【设计到visual studio和静态库(lib)匹配的问题】的更多相关文章
- windows中静态库lib和动态dll的区别及使用方法
1. 静态库lib和动态dll的区别 1.1 项目类型 VS在建Win32项目时,有以下选项: windows应用程序控制台应用程序DLL静态库最后两个类型:DLL和静态库,这两种项目类型是不可以单独 ...
- Compaq Visual Fortran生成静态库的方法及使用
Compaq Visual Fortran 6.5生成lib静态库详细方法: 打开Compaq Visual Fortran,新建Fortran Static Library工程,命名为ForLib: ...
- 记录一个 关于 python 普通方法,静态方法和类方法 的介绍。@classmethod @staticmethod
上班时间 只贴看到最厉害的答案 回头总结 http://stackoverflow.com/questions/12179271/python-classmethod-and-staticmethod ...
- 利用CMake和OpenCV源代码生成Visual Studio工程
OpenCV1.0版本有windows,linux之分,笔者曾经一直使用Opencv1.0.这个版本在下载,安装之后,在 \OpenCV\_make文件夹下面已经存在了一个opencv.dsw的工程文 ...
- VS编译linux项目生成静态库并在另一个项目中静态链接的方法
VS2017也推出很久了,在单位的时候写linux的服务端程序只能用vim,这让用惯了IDE的我很难受. 加上想自己撸一套linux上的轮子,决定用VS开工远程编写调试linux程序. 在window ...
- opencv的imread函数相对路径问题和 main 参数问题
参考: https://blog.csdn.net/u013404374/article/details/80178822 https://blog.csdn.net/fujilove/article ...
- 各种方法配置 Visual Studio 第三方库
配置第三方库如Opencv,或者软件开发商提供的SDK时,一般需要配置三个文件: 头文件(.h),引入库(.lib)文件(也称“导入库文件”),动态链接库(.dll)文件 下面以度申科技的相机sdk配 ...
- qt 4.6.2 与visual studio 2005 集成(编译方法,以及中间遇到的问题)
不知不觉在蒂森差不多半个月了,哈哈,时间过得很快,过得很充实,近来研究QT,首先嘛,肯定要学会安装了,这最基础的不会更不用说下面的啦.闲话少说,进正题,基本的安装步骤网上多的是,但参考一个大多数情况是 ...
- 打包静态库.a文件的方法(ar,ranlib,nm命令介绍)
一 常用脚本 1 打包脚本 脚本如下,下面附上ar 和 ranlib命令参考(命令来自于网络) ALLLIB=*.aFILE=`ls *.a`#原来的库解压重命名 for F in $FILEdo ...
- 动态库与静态库的学习 博主写的很好 静态库 编译的时候 需要加上 static 动态库编译ok运行不成功就按照文章中的方法修改
来源连接 http://www.cnblogs.com/skynet/p/3372855.html C++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库 ...
随机推荐
- PPT或Visio比较舒适的RGB配色参数
1.187 204 235 2.222 156 83 3.117 156 83 4.64 116 52 5.117 121 74 6.69 137 148 7.182 194 154 8.207 19 ...
- 中考游记 & 暑假集训大记
中考游记 & 暑假集训大记 前言 如今已经回归 \(OI\) ,望着如烟的往事,或是将将知道的讯息,心中早是凄然. 我真的希望这世间有我所期望的浦岛隧道,带回所有的遗憾,同时带走迷茫与害怕,重 ...
- Ubuntu 安裝 VMware Workstation Pro
安装 下载依赖: # Ubuntu 22.04 及以前 sudo apt install libaio1 # Ubuntu 24.04 及以后 sudo apt install libaio1t64 ...
- python pyqt6 QMainWindow 使用QComboBox 窗口移位
QMainWindow 可拖拽移动,但是点击QComboBox 时,窗口有时会误识别为拖拽移动,导致窗口自动移动位置 在QMainWindow中,新增事件筛选器 # 避免点击QComboBox时,窗 ...
- 使用 nuxi generate 进行预渲染和部署
title: 使用 nuxi generate 进行预渲染和部署 date: 2024/9/4 updated: 2024/9/4 author: cmdragon excerpt: 通过 nuxi ...
- windows server 2019 IIS网站属性上没有asp.net标签 ,aspnet_regiis -i 不能安装
在新的服务器版本已经不能通过 aspnet_regiis -i安装了,可以通过以下语句完成: dism /online /enable-feature /featurename:IIS-ASPNET4 ...
- HttpContext.SignInAsync 失效(表面解决了问题,未深入到.net core 源码去找问题,记录一下,等有时间翻一下.net core 源码试试能不能找到根本原因)
今天在弄 identityServer4 项目的时候,发现好好的登录竟然没用了. 各种跟踪后发现是 HttpContext.SignInAsync 这个方法不写cookies了 原本经过这个方法后,会 ...
- Ubuntu18.04未发现WiFi适配器情况解决方案之一
问题: 第一次你可能会遇见这种情况,ubuntu未发现Wifi适配器解决方案 无法打开WIfi 并告诉你没有WiFi适配器 解决方案: 解决方案如下: sudo modprobe -r ideapa ...
- 鸿蒙(HarmonyOS)常见的三种弹窗方式
最近有一个想法,做一个针对鸿蒙官方API的工具箱项目,介绍常用的控件,以及在项目中如何使用,今天介绍Harmony中如何实现弹窗功能. 警告弹窗 警告弹窗是一个App中非常常用的弹窗,例如: 删除一条 ...
- ASP.NET Core Library – scriban (Template Engine)
前言 有些项目会需要让 end user 写模板 (rich text) 同时又需要做一些 data binding. 这几乎是 programmer 的工作了... 在 C#, 大可以使用 Razo ...