gpt4 book ai didi

cvLoadImage 返回 int?

转载 作者:行者123 更新时间:2023-11-30 16:42:13 27 4
gpt4 key购买 nike

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

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

#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->width 时它会导致崩溃,编译上面的代码时会出现警告

/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 输入一些负整数值

#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);
}

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

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");

我失眠了,google也帮不上忙,这和OpenCV版本还是C版本有关吗?,我用的是Opencv2 3.3.0,请随时询问是否需要任何信息

最佳答案

第一个代码没有任何问题,如果使用 g++ 而不是 gcc 编译,应该可以正常运行。

您从 IplImage* 隐式转换为 int 的第二个代码是错误的,不会运行。

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

其他帖子提到了有关 C API 中的 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 以获得最佳结果。

关于cvLoadImage 返回 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45916209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com