Loading [MathJax]/jax/input/TeX/config.js
社区首页 >问答首页 >cvLoadImage要返回int?

cvLoadImage要返回int?
EN

Stack Overflow用户
提问于 2017-08-28 01:51:32
回答 1查看 580关注 0票数 0

根据OpenCV文档,cvLoadImage必须返回指向IplImage的指针,但看起来它正在返回int。

当我运行下面的程序时,我会收到一些警告,如下所示

代码语言:javascript
代码运行次数:0
复制
#include "highgui.h"
#include <stdio.h>

int main(int argc, char** argv)
{
    IplImage *img = cvLoadImage ("/path/to/file/face.jpg");
    if(img != NULL)
            printf("%d", img->width);
}

此外,当我运行上面的代码时,我也会遇到分段错误,我猜测,因为img是int,所以当我试图访问img->宽度时,它会导致崩溃,在编译上面的代码时会发出警告。

代码语言:javascript
代码运行次数:0
复制
/usr/local/Cellar/opencv/3.3.0_3/include/opencv2/core/types_c.h:929:13: warning: 
      implicit declaration of function 'cvRound' is invalid in C99
      [-Wimplicit-function-declaration]
    ipt.x = cvRound(point.x);
            ^
    main.c:7:21: warning: implicit declaration of function 'cvLoadImage' is invalid
          in C99 [-Wimplicit-function-declaration]
        IplImage *img = cvLoadImage ("/path/to/file/face.jpg");
                        ^
    main.c:7:15: warning: incompatible integer to pointer conversion initializing
          'IplImage *' (aka 'struct _IplImage *') with an expression of type 'int'
          [-Wint-conversion]
        IplImage *img = cvLoadImage ("/path/to/file/face.jpg");

警告表示不兼容的int会话,因此我不得不将IplImage更改为int,它运行良好,并为img设置了一些负整数值。

代码语言:javascript
代码运行次数:0
复制
#include "highgui.h"
#include <stdio.h>

int main(int argc, char** argv)
{
    printf("%s\n","hello world");
    int img = cvLoadImage ("/path/to/file/face.jpg");
    printf("%d", img);
}

我收到关于上述程序的以下警告

代码语言:javascript
代码运行次数:0
复制
implicit declaration of function 'cvRound' is invalid in C99
      [-Wimplicit-function-declaration]
    ipt.x = cvRound(point.x);
            ^
main.c:7:15: warning: implicit declaration of function 'cvLoadImage' is invalid
      in C99 [-Wimplicit-function-declaration]
    int img = cvLoadImage ("/path/to/file/face.jpg");

我不眠之夜想弄清楚,谷歌帮不了忙,是OpenCV版本还是C版本?,我使用的是Opencv2 3.3.0,请随时询问是否需要任何信息

EN

回答 1

Stack Overflow用户

发布于 2017-08-28 05:37:10

第一段代码没有什么问题,如果用g++而不是gcc编译,应该运行得很好。

您正在隐式地将第二段代码从IplImage*转换为int,这是错误的,不会运行。

有关cvRound()函数的警告和错误与OpenCV C有关,它已经有一段时间没有更新了,很可能会在将来的版本中删除。大多数新的OpenCV功能只存在于C++ API中。

在have中提到与cvRound()函数有关的错误的其他帖子:

https://github.com/opencv/opencv/issues/6076

https://github.com/opencv/opencv/issues/8438

https://github.com/opencv/opencv/issues/8658

在未来,尝试使用OpenCV C++ API以获得最佳的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45916209

复制
相关文章
Spring Cloud Task 核心组件-Task Application
Spring Cloud Task是Spring Cloud生态系统中的一个重要组件,用于支持有状态的短暂任务的开发和执行。
堕落飞鸟
2023/04/16
6111
Spring Cloud Task 核心组件-Task Repository
Spring Cloud Task是一个用于构建简单任务的框架。它提供了Task Application、Task Launcher和Task Repository三个核心组件,分别用于定义和执行任务、启动和管理任务、以及存储任务相关的元数据和状态信息。其中,Task Repository是Spring Cloud Task的核心组件之一,它负责管理和存储任务相关的数据。
堕落飞鸟
2023/04/16
2880
【C# 基础精讲】Task和Task<T>的应用
当涉及异步编程时,Task 和 Task<T> 是C#中的重要概念。它们不仅是处理异步操作的关键类型,还提供了一些强大的功能和方法,使异步编程更加高效和灵活。在本文中,我们将深入探讨 Task 和 Task<T> 的应用,从创建、执行、等待到取消和异常处理等方面进行详细讨论,帮助您更好地理解如何在C#中应用这些类型。
繁依Fanyi
2023/10/12
7310
【C# 基础精讲】Task和Task<T>的应用
Spring Cloud Task 核心组件-Task Launcher
Spring Cloud Task是一个用于快速创建和执行短暂任务的框架。Task Launcher是Spring Cloud Task的另一个核心组件,它可以帮助我们在多个环境中部署和执行Task Application。
堕落飞鸟
2023/04/16
7941
Spring Cloud Task 核心组件-Task Explorer
在使用Spring Cloud Task时,我们通常需要查看已经执行的任务以及任务的执行状态等信息。而Task Explorer正是为我们提供了这些信息的组件。
堕落飞鸟
2023/04/16
5610
Spring Cloud Task 核心组件-Task Execution Listener
Spring Cloud Task是一个用于构建简单任务的框架。它提供了Task Application、Task Launcher、Task Repository等多个核心组件,分别用于定义和执行任务、启动和管理任务、以及存储任务相关的元数据和状态信息。其中,Task Execution Listener是Spring Cloud Task的核心组件之一,它用于监控和管理任务的执行过程。
堕落飞鸟
2023/04/16
6301
C++核心准则T.65:使用标签分发提供函数的不同实现
T.65: Use tag dispatch to provide alternative implementations of a function
面向对象思考
2020/09/21
1K0
C++核心准则T.64​:使用特化提供类模板的不同实现
T.64: Use specialization to provide alternative implementations of class templates
面向对象思考
2020/09/21
6740
Task和backStack(本篇章核心)
摘要总结:通过分析Task和backStack的关系,可以得出一个task内可以有多个Activity,一个Task也可以对应多个Process。同时,通过adb shell dumpsys activity命令可以观察到,一个Task内的Activity可以属于同一个App,也可以属于不同的App。通过学习源码,可以发现,在ActivityManagerService中,Task被封装成TaskRecord对象,每个Task对应一个TaskStack,每个TaskStack包含一个mHistory Stack。在mHistory Stack中,每个元素都是一个ActivityRecord对象,ActivityRecord对象通过TaskRecord与对应的Task关联,通过Activity info与对应的Activity关联。同时,同一个Task内的ActivityRecord在mHistory中会按照先入先出的顺序进行排序。
梦里茶
2017/12/29
5740
Task和backStack(本篇章核心)
T-SQL取时间的不同方法
超级实用的T-SQL取时间的不同方法 CONVERT(nvarchar(10),count_time,121): CONVERT为日期转换函数,一般就是在时间类型 (datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到的函数的3个参数,第1个参数为,转换后的大小,第2个为转换日期的字段或函数,第3个为转换的格式,具体如下: 0 | 0 or 100 | mon dd yyyy hh:miAM(或PM) 1 | 101 |
用户1719978
2018/07/05
5970
T24银行核心业务系统
http://www.pianshen.com/article/8248107255/
全栈程序员站长
2022/09/20
1.2K0
通过JavaScript实现HTTP到HTTPS的强制跳转 By HKL,
最近通过一些在线文件云空间测试云存储部署静态网站遇到HTTP到HTTPS的强制跳转的问题,平时通过nginx配置是比较简单实现的, 但是例如七牛云虽然可以设置HTTPS访问,但是不支持设置HTTP到HTTPS的强制跳转, 解决方法可以是先通过设置HSTS,通过浏览器级的强制跳转实现,但是本方法只能在webkit内核的浏览器上生效,而且由一定的时间差, 所以最后寻找到通过前端JavaScript脚本实现HTTP到HTTPS的强制跳转,代码如下
hiplon
2020/07/22
1.8K0
阻塞队列的核心方法&对阻塞的不同处理
阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:
名字是乱打的
2022/05/13
6920
阻塞队列的核心方法&对阻塞的不同处理
从T+1到T+0,浅谈PetaBase的实时流式处理
随着互联网+的进一步发展,各行业对大数据技术的应用日趋成熟,企业的信息化范围正在高速扩展。
数据狗忙忙忙
2019/08/13
2.5K0
从T+1到T+0,浅谈PetaBase的实时流式处理
【leetcode刷题】T156-不同路径
https://leetcode-cn.com/problems/unique-paths/
木又AI帮
2019/09/03
2940
PHP实现根据请求的域名跳转到不同目录 By HKL, T
使用一些PHP虚拟主机的时候,多个域名绑定到同一空间下,但是希望不同域名能通过不同目录实现访问不同网站的效果:
hiplon
2020/07/22
2.3K0
Locust性能测试工具核心技术@task和@events
Tasks和Events是Locust性能测试工具的核心技术,有了它们,Locust才能称得上是一个性能工具。
dongfanger
2021/06/10
4590
生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型
发布于 2018-01-31 05:38 更新于 2018-05-25 12:33
walterlv
2018/09/18
1.4K0
生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型
从1.6T光模块到51.2T交换芯片,寡头的狂欢!
400G网络设备产业现状:完结篇 800G网络设备产业现状:技术篇 800G网络设备产业现状:芯片篇 800G网络设备产业现状:思科篇 800G网络设备产业现状:光模块篇 当诺基亚这种老厂 都说400G已经到了拐点 那就代表400G已经是池中物 因此在早前 结束的OFC2021 800G技术成为国内外 各大光模块厂商的主战场 华安证券 在会议结束后推出的 通信行业周报对800G现状 做了一个简单明了的梳理总结 除了高端光模块 相关产业链的进展 报告将重心放在数据中心 因为以太网光模块将占
用户6874558
2023/02/15
1.2K0
从1.6T光模块到51.2T交换芯片,寡头的狂欢!
Spark Task 的执行流程② - 创建、分发 Task
task 的创建本应该放在分配 tasks 给 executors一文中进行介绍,但由于创建的过程与分发及之后的反序列化执行关系紧密,我把这一部分内容挪到了本文。
codingforfun
2018/08/24
7250
Spark Task 的执行流程② - 创建、分发 Task

相似问题

await Task<T>和Task<T>.Result有什么不同?

23

IAsyncEnumerable<T>和IEnumerable<Task<T>>有什么不同?

232

ASP.NET核心应用编程接口- ActionResult<T>与异步Task<T>

20

将Task<DbSet<T>>转换为Task<IEnumerable<T>>

36

不等待从EF核心查询返回Task<IReadOnlyCollection<T>>?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档