OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 5742|回复: 7

EMCV cvCopy调用出错

[复制链接]
发表于 2010-9-7 17:16:36 | 显示全部楼层 |阅读模式
程序部分代码
      printf("the grayImg width= %d, height = %d\n", grayImg->width, grayImg->height);
      printf("the tmpImg width= %d, height = %d\n", tmpImg->width, tmpImg->height);
      printf("copy begin\n");
      cvCopy(grayImg, tmpImg, NULL);
      printf("copy end\n");

交叉编译通过
在DSP上运行输出:
the grayImg width= 360, height = 288
the tmpImg width= 360, height = 288
copy begin
OpenCV ERROR: Formats of input arguments do not match ()
        in function cvCopy, ./cxcopy.cpp(89)
Terminating the application...
jiance: ./cxerror.cpp:318: void cvError(int, const char*, const char*, const char*, int).
Killed

通过源码查看cxcopy.cpp(89)如下:
75 /* dst = src */
76 CV_IMPL void
77 cvCopy( const void* srcarr, void* dstarr, const void* maskarr )
78 {
79     CV_FUNCNAME( "cvCopy" );
80
81     __BEGIN__;
82
83     int pix_size;
84     CvMat *src = (CvMat*)srcarr;
85     CvMat *dst = (CvMat*)dstarr;
86     CvSize size;
87
88     if( !CV_IS_MAT(src) || !CV_IS_MAT(dst) )   //这里出错,但是我给的两个参数都相同啊,为什么?
89         CV_ERROR_FROM_CODE( CV_StsUnmatchedFormats );
90
91     if( !CV_ARE_TYPES_EQ( src, dst ))
92         CV_ERROR_FROM_CODE( CV_StsUnmatchedFormats );
93
94     if( !CV_ARE_SIZES_EQ( src, dst ))
95         CV_ERROR_FROM_CODE( CV_StsUnmatchedSizes );
96
97     size = cvGetMatSize( src );
98     pix_size = CV_ELEM_SIZE(src->type);

谢谢各位大虾相助。
回复

使用道具 举报

 楼主| 发表于 2010-9-8 07:56:28 | 显示全部楼层

EMCV cvCopy调用出错

顶起来~~~

热心的兄弟们来相互探讨一下嘛
回复 支持 反对

使用道具 举报

发表于 2010-9-28 09:44:14 | 显示全部楼层

EMCV cvCopy调用出错

程序部分代码
      printf("the grayImg width= %d, height = %d\\n", grayImg->width, grayImg->height);
      printf("the tmpImg width= %d, height = %d\\n", tmpImg->width, tmpImg->height);
      printf("copy begin\\n");
      cvCopy(grayImg, tmpImg, NULL);
      printf("copy end\\n");

交叉编译通过
在DSP上运行输出:
the grayImg width= 360, height = 288
the tmpImg width= 360, height = 288
copy begin
OpenCV ERROR: Formats of input arguments do not match ()
        in function cvCopy, ./cxcopy.cpp(89)
Terminating the application...
jiance: ./cxerror.cpp:318: void cvError(int, const char*, const char*, const char*, int).
Killed

通过源码查看cxcopy.cpp(89)如下:
75 /* dst = src */
76 CV_IMPL void
77 cvCopy( const void* srcarr, void* dstarr, const void* maskarr )
78 {
79     CV_FUNCNAME( "cvCopy" );
80
81     __BEGIN__;
82
83     int pix_size;
84     CvMat *src = (CvMat*)srcarr;
85     CvMat *dst = (CvMat*)dstarr;
86     CvSize size;
87
88     if( !CV_IS_MAT(src) || !CV_IS_MAT(dst) )   //这里出错,但是我给的两个参数都相同啊,为什么?
89         CV_ERROR_FROM_CODE( CV_StsUnmatchedFormats );
90
91     if( !CV_ARE_TYPES_EQ( src, dst ))
92         CV_ERROR_FROM_CODE( CV_StsUnmatchedFormats );
93
94     if( !CV_ARE_SIZES_EQ( src, dst ))
95         CV_ERROR_FROM_CODE( CV_StsUnmatchedSizes );
96
97     size = cvGetMatSize( src );
98     pix_size = CV_ELEM_SIZE(src->type);

谢谢各位大虾相助。

排版!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-10-15 13:20:53 | 显示全部楼层

EMCV cvCopy调用出错

谢谢,初次使用,以后注意
回复 支持 反对

使用道具 举报

发表于 2010-12-31 10:23:03 | 显示全部楼层

EMCV cvCopy调用出错

请问,你的这个问题解决了么,我也遇到了一样的问题
我的情况是:
pCurrentImg =cvLoadImage(pFile, 0 );
imgSize        = cvSize(pCurrentImg->width, pCurrentImg->height);
pBkImg        = cvCreateImage(imgSize, IPL_DEPTH_8U, 1);

cvCopy(pCurrentImg, pBkImg,0);

然后出现一样的错误
回复 支持 反对

使用道具 举报

发表于 2010-12-31 14:21:00 | 显示全部楼层

EMCV cvCopy调用出错

我又试了一下,把图像格式转为矩阵格式就通过了
我曾经试图强制转换成矩阵格式
cvCopy((CvMat*)pCurrentImg, (CvMat*)pBkImg,0);
但是仍然行不通
最后将图像自己转换为矩阵格式就通过了
cvCopy(pCurrentMat, pBkMat,0);

是不是cvCopy源程序中的
CvMat *src = (CvMat*)srcarr;
CvMat *dst = (CvMat*)dstarr;
这两步没有转换成功的原因呢
回复 支持 反对

使用道具 举报

发表于 2011-1-4 10:46:05 | 显示全部楼层

EMCV cvCopy调用出错

我又试了一下,把图像格式转为矩阵格式就通过了
我曾经试图强制转换成矩阵格式
cvCopy((CvMat*)pCurrentImg, (CvMat*)pBkImg,0);
但是仍然行不通
最后将图像自己转换为矩阵格式就通过了
cvCopy(pCurrentMat, pBkMat,0);

是不是cvCopy源程序中的
CvMat *src = (CvMat*)srcarr;
CvMat *dst = (CvMat*)dstarr;
这两步没有转换成功的原因呢

强制转换的语法是哪里教的?
C语言强制转换指针的前提是:你对内存的数据格式很清楚!

CvMat和IplImage的内存结构不清楚的情况下做强制转换,不出问题才是不正常的。

ps:代码还是没排版!
回复 支持 反对

使用道具 举报

发表于 2011-7-5 17:00:15 | 显示全部楼层

EMCV cvCopy调用出错

请教LZ,类型转换是如何做的,我也碰到同样的问题。网上看到mtx这个函数,不过没有找到在库里。
请教chai2010,这个问题需要怎样解决呢?我也很困惑,望指教。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-4-29 03:23 , Processed in 0.010424 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表