记录一个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++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库 ...
随机推荐
- STM32F3, STM32F4编程手册
1. Cortex-M4的内核设备 NVIC, Nested vectored interrupt controller SCB, System control block SysTick, The ...
- 斐讯 N1 刷机记录
Prerequisites USB 公对公线 Windows 操纵系统 AMLogic USB Burning Tool,安装后名字为 Aml_Burn_Tool. 降级 打开终端,输入 hdwwiz ...
- 怎样在局域网中给网站作ssl认证,使其能以https协议访问(转)
如果要在局域网达到效果需要满足以下几点要求: 1. 证书由可信任的CA机构颁发 2. 证书在有效期 3. 访问地址和证书的认证地址一致 说明: 1. 需要在局域网内构建CA机构 2. 证书的有效期建议 ...
- IDEA maven 项目 如何获取项目离线运行所需的全部依赖( .m2格式)
背景:maven项目要将整个项目的依赖移植到某无法联网服务器进行测试,需要项目离线运行所需的全部依赖 步骤: 1. 首先需要有项目源码,解压后,使用IDEA Open Project 2. 在Sett ...
- DB\redis\zookeeper分布式锁设计
redis 参考目录: 生产级Redis 高并发分布式锁实战1:高并发分布式锁如何实现 https://www.cnblogs.com/yizhiamumu/p/16556153.html 生产级Re ...
- sql 查询死锁
1 -- 查询死锁 2 --第一种 3 sp_lock 4 5 --第二种 6 select object_name(resource_associated_entity_id) as tableNa ...
- Google Analytics & Ads 学习笔记 2 (GA4 版本)
首先去 control panel admin 升级 GA4 https://support.google.com/analytics/answer/9744165?hl=en 它其实是开多一个 pr ...
- ChatGPT论文降重Prompt
你是一个已经阅读过大量论文的论文写作专家.我正在设计一个基于xxx系统.接下来,我将给你一个论文段落,你可以使用调整句子用词.句子结构等方法,重新描述这段话,对文章的内容进行润色,使之更加接近论文的写 ...
- IP地址集中管控:从分配规划、现网管理到合规性监测、准入控制全周期监管
当前,网络已成为企业必不可少的资源,企业网络系统也在不断扩展,IP地址数量不断增长,随之而来的是IP地址管理问题凸显.如何高效集中地管理网络中的IP地址,IP如何有效划分,成为影响企业网络可用性和质量 ...
- 一款基于Uniapp开发的开源低代码平台
rtvue-lowcode低代码开发平台 rtvue-lowcode一款基于uniapp框架和uview组件库的低代码开发平台,项目提供可视化拖拽编辑器,采用MIT开源协议,适用于app.小程序等项目 ...