输入参数的大小在cvcalcopticalflowbm opencv 2.4.7中不匹配 [英] Sizes of input arguments do not match in cvcalcopticalflowbm opencv 2.4.7

查看:171
本文介绍了输入参数的大小在cvcalcopticalflowbm opencv 2.4.7中不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在opencv 2.4.7中使用cvcalcopticalflowBM函数计算光流 当我编译下面的代码时.错误消息为"cvcalcopticalflowbm中的输入参数的大小不为macth()

I want to calculate optical flow using cvcalcopticalflowBM function in opencv 2.4.7 When I complied the belowed code. The error message is "Sizes of input arguments do not macth() in cvcalcopticalflowbm

我不明白为什么会这样.请帮我.谢谢你提前.

I do not understand why it is. Please help me. Thank you advance.

#define BS 5

IplImage *imgA = NULL, *imgB = NULL;
IplImage *grayA = NULL, *grayB = NULL;
IplImage *velx = NULL, *vely = NULL;
IplImage *result = NULL;
imgA = cvLoadImage("00.jpg", 1);
imgB = cvLoadImage("01.jpg", 1);
grayA = cvCreateImage(cvGetSize(imgA), IPL_DEPTH_8U, 1);
grayB = cvCreateImage(cvGetSize(imgA), IPL_DEPTH_8U, 1);

cvCvtColor(imgA, grayA, CV_BGR2GRAY);
cvCvtColor(imgB, grayB, CV_BGR2GRAY);

CvSize size = cvGetSize(imgA);
size.width /= BS;
size.height /= BS;
result = cvCreateImage(size, IPL_DEPTH_8U, 1);
for (int i=0; i<size.height; i++) {
    for (int j=0; j<size.width; j++) {
        cvSet(result, CV_RGB(255,255,255), NULL);
    }
}
velx = cvCreateImage(size, IPL_DEPTH_32F, 1);
vely = cvCreateImage(size, IPL_DEPTH_32F, 1);
cvCalcOpticalFlowBM(grayB, grayA, cvSize(BS, BS), cvSize(1, 1), cvSize(1, 1), 0, velx, vely);
//
cvNamedWindow("HorFlowBM", CV_WINDOW_AUTOSIZE);
cvShowImage("HorFlowBM", velx);
cvNamedWindow("VerFlowBM", CV_WINDOW_AUTOSIZE);
cvShowImage("VerFlowBM", vely);
for (int i=0; i<size.height; i+=2) {
    for (int j=0; j<size.width; j+=2) {
        int dx = (int)cvGetReal2D(velx, i, j);
        int dy = (int)cvGetReal2D(vely, i, j);
        cvLine(result, cvPoint(j, i), cvPoint(j+dx, i+dy), CV_RGB(0,0,0), 1, 8, 0);
    }
}
cvNamedWindow("OpticalFlow", CV_WINDOW_AUTOSIZE);
cvShowImage("OpticalFlow", result);
cvWaitKey(0);

推荐答案

我认识到此错误. velx和vely的大小应为

I recognized this error. The size of velx and vely should be

CvSize velSize =
{
    (grayA->width - BLOCK_SIZE + SHIFT_SIZE)/SHIFT_SIZE,
    (grayA->height - BLOCK_SIZE + SHIFT_SIZE)/SHIFT_SIZE
};

在编译程序时它会正确显示

It becomes correctly when complie the program

这篇关于输入参数的大小在cvcalcopticalflowbm opencv 2.4.7中不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆