繁体   English   中英

C ++和OpenCV断言失败

[英]C++ & OpenCV assertion failed

我在需要在opencv中进行以下MATLAB代码切换的应用程序上工作。 这是我在MATLAB中的代码:

HSV = imread(k);
S=size(HSV)
x = zeros(3,S(1)*S(2));
k=1;
for i = 1:S(1)
  for j = 1:S(2)
    x(1,k)=i;
    x(2,k)=j; 
    x(3,k)=HSV(i,j,1); %H
    x(4,k)=HSV(i,j,2); %S 
    k=k+1;
  end
end

这是我在OpenCV中的代码,但是我认为这是错误的:

IplImage* img;
img = cvLoadImage("---");

CvMat* x = cvCreateMat(4, img->width*img->height, CV_8UC3);
int k = 1;
for (int h = 1; h <= img->height; h++)
 {
  for (int w = 1; w <= img->width; w++)
  {
    CV_MAT_ELEM(*x, int, 1, k) = h; 
    CV_MAT_ELEM(*x, int, 2, k) = w;
    CV_MAT_ELEM(*x, int, 3, k) = CV_IMAGE_ELEM(img, uchar, h, 3 * w); //H
    CV_MAT_ELEM(*x, int, 4, k) = CV_IMAGE_ELEM(img, uchar, h, 3 * w + 1); //S 
    k = k + 1;
  }
}

我收到这样的错误:
断言失败:(无符号)(4)<(无符号)(k)&&(无符号)(k)<(无符号)(* x).cols

Matlab有1个基于索引的索引,C有0个基于索引的索引-您的所有for循环和左侧CV_MAT_ELEM上的1-4必须从0变为length-1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM