记录一个opencv的imread方法无法读取成功的问题,【设计到visual studio和静态库(lib)匹配的问题】

news/2024/9/24 11:29:00

一、为什么会遇到这个问题

公司需要对多图进行拼接,经过多番查找发现了OpenStitching这个库。可以实现多图拼接。在python段尝试了之后感觉效果不错,所以使用Visual Studio进行C++开发。
在读取图片的时候发现imread方法无论怎么样都无法读取到图片。

二、解决办法

我一开始以为是路径的问题,在尝试过相对路径、绝对路径无果后,就开始排查其他的问题。最后的解决办法:
image

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

image

这样就解决了问题。

三、为什么会有这个问题

小弟不才😀,还是问了AI。以下是AI给出的解释,大家当个参考吧。

调试版本库和发布版本库之间的主要区别在于编译器的设置和优化。以下是一些关键区别:调试信息:调试版本库(Debug Build):包含了额外的调试信息,比如符号表和源代码映射,这使得你在调试时能够更容易地跟踪代码和诊断问题。调试版本库没有经过优化,代码的执行速度可能较慢,但调试信息能帮助你更好地理解代码的执行情况。
发布版本库(Release Build):不包含调试信息,经过优化以提高代码的执行效率和性能。优化可能会改变代码的执行方式,使得调试信息不再有效,因此在发布版本时,调试信息通常是不需要的。
优化:调试版本库:编译器通常会关闭优化,以便你可以逐步执行代码并检查变量的值。这使得调试过程更可控,但可能导致生成的代码效率较低。
发布版本库:编译器会开启各种优化选项,试图提高程序的执行速度和减少代码体积。这些优化可能会对代码行为产生影响,比如内联函数、循环展开等。
运行时检查:调试版本库:通常会启用额外的运行时检查,比如边界检查、断言等。这些检查帮助捕捉潜在的错误,但也会带来额外的运行时开销。
发布版本库:通常会关闭这些运行时检查,以提高性能。
库文件的命名:调试版本库:通常会带有 d 后缀(例如 opencv_world4100d.lib 和 opencv_world4100d.dll)。
发布版本库:没有 d 后缀(例如 opencv_world4100.lib 和 opencv_world4100.dll)。
在项目中混用调试和发布版本库可能会导致不兼容的问题,特别是在使用第三方库(如 OpenCV)时。如果你在调试模式下使用了发布版本库,或者在发布模式下使用了调试版本库,可能会遇到一些无法预测的行为或错误。因此,确保你的编译设置与链接库版本相匹配是非常重要的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/56948.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

外卖霸王餐系统如何加入运营

加入运营外卖霸王餐系统可以从以下几个方面着手: 1. **系统搭建与选择**: - **自行开发**: - **需求分析**:明确系统的功能需求,比如要支持用户注册与登录、活动展示与报名、订单管理、评价系统、返现功能等。同时确定目标用户群体,是面向学生、上班族还是其他特定人群,…

LVGL有关Linux的移植(8.2)

LVGL的移植 下载的源码总共有三个部分: LVGL源码 + LVGL Linux平台总源码框架 + LVGL驱动源码 LVGL源码下载 进入LVGL的GitHup选择要下载的版本,以下以8.2的版本为例GitHup提供多种下载方式,我们以压缩包的形式下载下载arm Linux开发板fb0的源码主框架 LVGL 配置为使用标准 …

GBJ3510-ASEMI新能源专用整流桥GBJ3510

GBJ3510-ASEMI新能源专用整流桥GBJ3510编辑:ll GBJ3510-ASEMI新能源专用整流桥GBJ3510 型号:GBJ3510 品牌:ASEMI 封装:GBJ-4 批号:2024+ 分类:整流桥 特性:整流扁桥、整流桥 平均正向整流电流(Id):35A 最大反向击穿电压(VRM):1000V 恢复时间:>2000ns 结温:-55℃…

自增主键去哪了?---一次开发过程中的思考

前情提要: 最近新接了一个需求,需要去创建两张表,其中有一张表需要根据业务id和业务类型建立唯一索引,对数据唯一性进行约束。 因为涉及到业务嘛,表结构就进行缩略了 表结构示例如下:CREATE TABLE `example_table` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT C…

linux操作MySQL

查看mysql是否正确安装 sudo rpm -qa | grep mysql查看mysql服务单元文件所在位置 一般情况下,mysql的服务单元文件所在路径: /usr/lib/systemd/system说明: 这个目录下面,如果放置的是mysqld.service文件,那么启动MySQL的时候需要使用的是mysqld; 如果放置的是mysql.ser…

Oracle隐式转换

收到数据库服务器cpu告警,当时在吃饭,来不及登录查看。(数据库80%的问题都是SQL引起的) 后续通过会话快照信息进行分析。 select sample_time,sql_id,count(*) from dba_hist_active_sess_historywhere sample_time>to_date(20240904 17:58:00,yyyymmdd hh24:mi:ss)and …

通过DashScope API调用将多种模态转换为向量

​ 本文介绍如何通过模型服务灵积DashScope进行多模态向量生成,并入库至向量检索服务DashVector中进行向量检索。本文介绍如何通过模型服务灵积DashScope进行 多模态向量生成 ,并入库至向量检索服务DashVector中进行向量检索。 模型服务灵积DashScope,通过灵活、易用的模型A…

Gitee

Git 分布式版本控制工具 课程内容Git概述 Git代码托管服务 Git常用命令 在IDEA中使用Git1. 前言 1.1 什么是Git Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等),在软件开发过程中被广泛使用。 在IDEA开发工具中可以集成Git…