- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我找到了那个方便的 opencv 库,并尝试使用 C 语言用它编写一个简单的图像修改器。当我开始编译我的代码时,我遇到了一些错误,这些错误有点令人困惑,因为它们似乎没有意义。这是我第一次使用 netbeans 进行编程,也是我第一次尝试制作除那些基本计算器等程序以外的东西。以下是编译器给出的代码和错误:
int iscolor = -1; /* Used to load the image as it is*/
IplImage* image = 0;
/* Load Image */
image = cvLoadImage(const char* 'test.jpg', iscolor); /* line 34 */
/*Modify image*/
...
/* Save Image */
int cvSaveImage(const char* 'modified.jpg', const CvArr* image); /* line 43 */
/*End*/
编译错误
main.c: In function ‘main’:
main.c:34: error: expected expressionbefore ‘const’
main.c:34:37: warning: characterconstant too long for its type
main.c:34: error: too few arguments tofunction ‘cvLoadImage’
main.c:43:33: warning: characterconstant too long for its type
main.c:43: error: expected ‘;’, ‘,’ or‘)’ before '\x2e6a7067'
这些错误让我有点困惑,因为
引用 opencv c 引用 cvLoadImage 只需要两个参数。
为什么字符常量太长了?
'const' 之前的预期表达式?嗯……我一点都不明白
在 '\x2e6a7067' 之前需要 ';'、',' 或 ')'...我也不明白
那么有人可以告诉我我做错了什么吗?任何帮助都会很好:)
最佳答案
在 C 中,单引号用于表示单个(文字)字符常量,此类常量的结果类型为 int
。所以,'a'
可以,'a1'
不行,因为那是两个字符。 C定义了一些转义序列,例如'\n'
,它被当作一个表示换行符的字符,或者'\xff'
,它是一个十六进制值的字符0xff
。由于 'test.jpg'
包含多个字符,编译器告诉您您的文字字符常量太长。你想要一个需要双引号的字符串。
你需要在一个转换中加上括号:(const char *)x
可以,const char * x
不行(如果你声明x
作为 const char *
)。我认为您添加了该强制转换是因为编译器警告您“将 int 转换为指针而无需强制转换”。一般来说,除非您真的知道自己在做什么,否则强制转换以使编译器静音是一个非常糟糕的主意。
基于以上,第34行应该是:
image = cvLoadImage("test.jpg", iscolor);
如果你真的想将 "test.jpg"
转换为 const char *
,请执行以下操作:
image = cvLoadImage((const char *)"test.jpg", iscolor);
另外,现在你知道如何修复这一行了:
int cvSaveImage(const char* 'modified.jpg', const CvArr* image);
关于混淆错误与 opencv cvLoadImage 和 netbeans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2119417/
#include "cv.h" #include "highgui.h" #include int main(int argc, char* argv[]){ cvNamedWindow("
我正在使用 CvLoadImage(C 编程语言)。 不是传递我的路径或名称,比方说,.jpg 文件作为函数的参数,我可以使用一个列表(动态结构),它包含每个 .jpg 图片我要打开? 例如,我认为代
根据 OpenCV 文档,cvLoadImage 必须返回指向 IplImage 的指针,但看起来它返回的是 int。 当我运行下面的程序时,我收到一些警告,如下程序所示 #include "high
我从事图像识别程序已有一段时间了,但突然我注意到,当我长时间测试我的程序时,函数 cvLoadImage 有时会停止返回图像。我看不到发生这种情况的明确模式或时间,但在它失败一次后,它将在程序的其余部
我想知道是否有办法强制将图像加载为 8U。我在 OpenCV 文档中看到您可以指定是将图像加载为单 channel 还是三 channel ,但没有提及颜色深度。有什么建议吗? 感谢您的帮助!!! :
我尝试在我的代码中使用 OpenCV C Api。我在 usr/include 下有 opencv 和 opencv2 文件夹。我可以使用 OpenCV C++ Api。 C++代码和编译链接命令如下
我在 pictureBox 中制作了一个强度计。为了制作这个强度计,我使用了一张图片作为 Dialer(Dialer.bmp) 并使用一条线制作针。我正在使用 openCV 执行此操作。并更改指针指针
我是 OpenCV 的新手,在尝试使用 cvLoadImage() 函数加载图像时遇到了问题。 以下代码尝试使用 (1) 工作目录(注释掉的代码行)或 (2) 桌面上文件的显式路径加载图像“testI
我正在尝试获取 this 中提供的算法在 Windows 上工作的存储库。在无数问题之后,我只剩下一个无法识别的函数 cvLoadImage ,它已被贬低。我被指示使用 c++ API,但问题是我还必
我在 Ubuntu 12.04、32 位平台上工作,在 eclipse ide 上使用 OpenCV 2.4.1 版。即使将图像放在我拥有 cpp 文件的项目的当前位置后,cvLoadImage()
我正在使用 cvloadimage 在我的程序中打开图像。图像位于外部目录中,使用文件名中的当前时间生成。 当我尝试以这种方式加载图像时: IplImage *image = cvLoadImage(
我正在尝试使用 OpenCV 2.1 处理 16 位单 channel 未压缩 TIFF 图像,但是当我调用 cvLoadImage 时,显然它们被转换为 8 位: IplImage* img = c
我安装了 JavaCV/OpenCV 库,但基本示例代码有问题。 根据我看过的几个例子,这段代码应该加载一张图片: IplImage image = cvLoadImage("C:\\img.jpg"
我找到了那个方便的 opencv 库,并尝试使用 C 语言用它编写一个简单的图像修改器。当我开始编译我的代码时,我遇到了一些错误,这些错误有点令人困惑,因为它们似乎没有意义。这是我第一次使用 netb
我在 Windows 上使用 OpenCV 2.1 中的 cvLoadImage 加载 .bmp 文件。 (遗留应用程序,维护代码,而不是新开发。) 它是以 RGB 还是 BGR 顺序加载的?文档 h
我有两个文件: 测试.cpp : #include "highgui.h" #include int main( int argc, char** argv ) { IplImage* im
我正在尝试使用 cvLoadImage 函数加载 JPEG 图像,但它失败了。我得到输出“图像未加载”(参见下面的代码)。但是出现一个窗口但没有图片。当尝试加载 png 图片时,cvLoadImage
我使用的是 OS X 10.7.1。我已经下载了最新的 JavaCV 二进制文件,并从当前的颠覆检查中构建了 OpenCV。 cvLoadImage() 函数返回 null,无论我传递给它什么。我已经
我有个问题。 这是错误: undefined symbols for architecture x86_64 " cvloadimage" ,referenced from:_main in main
这是我的代码,它将检测图像中的面部并在面部周围绘制矩形。 CvHaarClassifierCascade *cascade; CvMemStorage *storage; void detectFac
我是一名优秀的程序员,十分优秀!