我正在使用OpenCV的2.4.4版本。 - 我知道它的测试版 ,但在示例文件夹中有一个关于cv::calcOpticalFlowSF
的示例,名为:simpleflow_demo.cpp
。但是,当我复制这个演示,并与我的输入图像一起使用它时,它开始处理,并在几秒钟后回来一个崩溃报告。 有关该方法的文档有点奇怪,说输出文件是x和yflow,而不是该方法实际需要的cv::Mat& flow
。 任何想法如何解决问题以获得该功能的工作?如何让cv :: calcOpticalFlowSF工作?
回答
试试这个简单的演示,对我的工作,然后(从here显示帮助),修改您的需求:
Mat frame1 = imread("/home/radford/Desktop/1.png");
Mat frame2 = imread("/home/radford/Desktop/2.png");
namedWindow("flow");
Mat flow;
calcOpticalFlowSF(frame1, frame2, flow, 3, 2, 4);
Mat xy[2];
split(flow, xy);
//calculate angle and magnitude
Mat magnitude, angle;
cartToPolar(xy[0], xy[1], magnitude, angle, true);
//translate magnitude to range [0;1]
double mag_max;
minMaxLoc(magnitude, 0, &mag_max);
magnitude.convertTo(magnitude, -1, 1.0/mag_max);
//build hsv image
Mat _hsv[3], hsv;
_hsv[0] = angle;
_hsv[1] = Mat::ones(angle.size(), CV_32F);
_hsv[2] = magnitude;
merge(_hsv, 3, hsv);
//convert to BGR and show
Mat bgr;//CV_32FC3 matrix
cvtColor(hsv, bgr, COLOR_HSV2BGR);
imshow("flow", bgr);
waitKey(0);
谢谢你,我现在也有了使用这种光纤的DualFlow Dual。 – user1651460 2013-02-21 06:29:26
谢谢你,你的代码帮助了很多!但我仍然有灰色图像的问题:\t cv :: cvtColor(image1Re,gray,CV_BGR2GRAY); cv :: cvtColor(image2Re,prevgray,CV_BGR2GRAY);'使用:gray和prevgray作为frame1和frame2的输入intead。你知道在这种情况下出了什么问题吗? – user1651460 2013-02-21 06:52:05
只需查看calcOpticalFlowSF文档中的变量名称,就可以在算法中使用颜色,并且必须将其作为输入。 – 2013-02-21 13:59:43
在这个例子中的OpenCV /样品/ CPP/simpleflow_demo.cpp有一个代码块
if (frame1.type() != 16 || frame2.type() != 16) {
printf(APP_NAME "Images should be of equal type CV_8UC3\n");
exit(1);
}
因此,灰色图像应转换为CV_8UC3。例如使用cvtColor(gray,grey3,CV_GRAY2RGB);
- 1. cv :: calcCovarMatrix如何工作?
- 2. 如何让pytesser(Tesseract)工作?
- 3. 如何让svn_cat工作?
- 4. 如何让API工作?
- 5. 如何让案件工作
- 6. 如何让RoleProvider工作?
- 7. 如何让poedit工作?
- 8. 如何让#if DEBUG工作?
- 9. 如何让kXML工作?
- 10. 我如何让jsoup工作?
- 11. 如何让emcc工作?
- 12. 如何让MahApps CleanWindow工作?
- 13. 如何让netbeans工作?
- 14. 如何让WS_MAXIMIZE工作?
- 15. 如何让FQL工作?
- 16. 如何让RadioButton工作
- 17. 如何让android studio工作?
- 18. 如何让DebuggerBrowsable RootHidden工作?
- 19. 如何让Sass工作?
- 20. 如何让jQuery maphilight工作?
- 21. 如何让Rails select()工作?
- 22. 如何让mysqli_connect()工作?
- 23. 如何让adb remount工作?
- 24. 如何让jQuery Counter工作?
- 25. 如何使USB摄像头在C#中的Open CV中工作?
- 26. Emgu CV EigenObjectRecognizer不能正常工作
- 27. 打开CV进口不工作
- 28. 开放CV安装工作不正常
- 29. 如何让xslReportBuildPlugin在CruiseControl.net上工作
- 30. 如何让Python更快地工作?
你需要发布崩溃报告的实际细节。关于X和Y流分开的位是C API,而不是C++ API。 – ajshort 2013-02-20 11:38:19