c - OpenCV 代码示例错误

标签 c opencv runtime-error

我编写了以下代码示例,它应该创建一个外观奇特的渐变并将其保存到用户指定的文件中:

#include <stdio.h>
#include <cv.h>
#include <highgui.h>

static IplImage *image = 0;

void main() {
   char path[1024];
   int x, y;
   CvScalar scalar;

   scanf("%s", path);
   image = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);

   for (y = 0; y < 480; y++) {
      for (x = 0; x < 640; x++) {
         scalar = cvGet2D(image, x, y);
         scalar.val[0]=(unsigned char)(x + y);
         cvSet2D(image, x, y, scalar);
      }
   }

   cvSaveImage(path, image, 0);
}

我编译它使用:gcc opencv.c -o opencv `pkg-config --libs --cflags opencv` -lm 一切似乎都正常。但是,在运行时(输入:“sample.png”),出现以下错误:

OpenCV Error: One of arguments' values is out of range (index is out of range) in cvPtr2D, file /builddir/build/BUILD/OpenCV-2.3.1/modules/core/src/array.cpp, line 1797
terminate called after throwing an instance of 'cv::Exception'
  what():  /builddir/build/BUILD/OpenCV-2.3.1/modules/core/src/array.cpp:1797: error: (-211) index is out of range in function cvPtr2D

Aborted (core dumped)

有什么帮助吗?提前致谢! :)

最佳答案

cvGet2D 和 cvSet2D 像 opencv 中的许多其他函数一样使用 [行,列] 约定。

进一步阅读: http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/

关于c - OpenCV 代码示例错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677660/

相关文章:

c - 使用 I/O 套件访问串口转 USB 设备

c - 空结构 typedef

c - 在 C 中使用 MPI_Type_create_struct() 传输包含动态数组的结构

c++ - 为什么SADWinowSize_slider 的trackbar 的值在分配给sbm->state.SADWindowSize 时变为0,在我的代码中

c - 用于查找素数的埃拉托色尼筛算法的上限使程序停止工作

c - 在波形文件上使用 KissFFT

opencv - matchTemplate 与非矩形模板

Python数组减法循环回到高数而不是给出负值

c# - 10秒后出现未处理的异常错误,为什么?

java - Liquibase 导致 java 堆空间 fatal error