记录一个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++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库 ...
随机推荐
- flink + iceberg 快速搭建指南
flink + iceberg 快速搭建 the environment includes: minio iceberg flink Centos 更换 tencent 的yum源 备份系统旧配置文件 ...
- 生产者消费者模式,以及基于BlockingQueue的快速实现
生产者消费者模式,以及基于BlockingQueue的快速实现什么是生产者消费者模式,简单来说就是有两个角色,一个角色主要负责生产数据,一个角色主要负责消费(使用)数据.那么生产者直接依赖消费者,然后 ...
- Python 绘制 K 线图
import mplfinance as mpf import pandas as pd # 示例数据 data = pd.DataFrame({ 'Date': ['2023-01-01', '20 ...
- Coursera self-driving2, State Estimation and Localization Week4, LIDAR
operating principles 工作原理 Velodyne 加州,Hokuyo 日本,SICK 德国 TOF 就是用发出去收到的时间差和光速算距离 basic LIDAR models (2 ...
- Vue.js 异步组件传参
本文主要展示一下如何给异步组件进行参数传递: 通过 h 函数就可以啦 versions: vue@3.2.13 子组件 Async.vue <template> <div> & ...
- 线性dp:LeetCode122.买卖股票的最佳时机ll
买卖股票 本文所讲解的内容与LeetCode122. 买卖股票的最佳时机ll,这道题题意相同,阅读完本文后可以自行挑战一下 力扣链接 题目叙述: 给定一个长度为N的数组,数组中的第i个数字表示一个给定 ...
- C++17新特性探索:拥抱std::optional,让代码更优雅、更安全
std::optional 背景 在编程时,我们经常会遇到可能会返回/传递/使用一个确定类型对象的场景.也就是说,这个对象可能有一个确定类型的值也可能没有任何值.因此,我们需要一种方法来模拟类似指针的 ...
- 学习问题记录:RocketMQ集成到SpringBoot后,消费者无法自动进行消息消费。
情况说明 在SpringBoot中集成了RocketMQ,实践过程中,通过RocketMQ DashBoard观察,生产者可以正常将进行消息提交:通过日志及DashBoard观察,消费者成功在Rock ...
- 基于图扑 HT for Web 实现的昼夜切换场景应用
图扑软件 HT 的案例中有许多白天黑夜效果.这种效果在各类不同的项目中得到了广泛的应用和认可. 白天黑夜效果是视觉设计和交互设计中常见的一种手法.通过细致巧妙地调整色彩.亮度.对比度等视觉参数,即可成 ...
- [TK] BLO
初步分析 此题描述让我们想到Tarjan求割点,因此我们从割点的角度来探讨一下这道题. 假如我们去掉的不是一个割点,那么它实际上不会对连通性造成影响,但是根据样例可以看出来,删去这个点导致了其余点与当 ...