返回信息流我想用java来实现光流法,方法是调用javacv的cvCalcOpticalFlowPyrLK,现在碰到一个参数传递的问题。
javacv中cvCalcOpticalFlowPyrLK函数的声明是:
public static native void cvCalcOpticalFlowPyrLK(CvArr prev, CvArr curr, CvArr prev_pyr,
CvArr curr_pyr, CvPoint2D32f prev_features, CvPoint2D32f curr_features,
int count, @ByVal CvSize win_size, int level, @Cast("char*") byte[] status,
float[] track_error, @ByVal CvTermCriteria criteria, int flags);
其中第五第六两个参数的类型是 CvPoint2D32f ,参数prev_features和curr_features分别表示前一帧图像的特征点和后一帧图像的特征点。
因为特征点不是一个,因此我是这样定义的:
CvPoint2D32f[] point1 = new CvPoint2D32f[MAX_CORNERS] ;
CvPoint2D32f[] point2 = new CvPoint2D32f[MAX_CORNERS] ;
就是用point1、point2数组来存储特征点
cvCalcOpticalFlowPyrLK(image, image2,prev_pyr,curr_pyr, point1, point2,……)
但是传入函数中时会报错,因为函数中的类型是CvPoint2D32f,而不是CvPoint2D32f[]
但是CvPoint2D32f只代表一个特征点啊,我想要传入一个特征点集,这种情况下我应该怎么做呢?
请各位专家批评指正.
这是一条镜像帖。来源:北邮人论坛 / java / #40176同步于 2015/4/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java大神看过来!!重点呼叫@暖羊羊
zczyde
2015/4/26镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
【 在 lixing 的大作中提到: 】
: 解决办法1:把特征点化为1维的
: 解决办法2:重载该函数,前提是你知道源码写了什么,怎么操作
: ps:回去好好看语法吧
我看不到源码写了什么。。。
特征点化为1维的是什么意思?
卧槽好高端
【 在 zczyde (阿牛) 的大作中提到: 】
: 我想用java来实现光流法,方法是调用javacv的cvCalcOpticalFlowPyrLK,现在碰到一个参数传递的问题。
: javacv中cvCalcOpticalFlowPyrLK函数的声明是:
: public static native void cvCalcOpticalFlowPyrLK(CvArr prev, CvArr curr, CvArr prev_pyr,
: ...................
关键是编写这个函数的人把这个函数设计成接受一个点的。如果你传入一个点集,这个函数并不知道应该怎么做呀。
就像买了一台DVD机,它的功能是每次只能读一张光盘。但你说“我想10碟连放,然后把10张光盘一起塞进去了,结果机器怀了”,和这是一样的。要真想10碟连放,应该买一台支持10碟连放的DVD机。
【 在 nuanyangyang 的大作中提到: 】
: 关键是编写这个函数的人把这个函数设计成接受一个点的。如果你传入一个点集,这个函数并不知道应该怎么做呀。
: 就像买了一台DVD机,它的功能是每次只能读一张光盘。但你说“我想10碟连放,然后把10张光盘一起塞进去了,结果机器怀了”,和这是一样的。要真想10碟连放,应该买一台支持10碟连放的DVD机。
谢谢