我正在使用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. cv :: TermCriteria如何在opencv中工作?
- 3. 如何讓emcc工作?
- 4. 如何讓Django prefetch_related工作?
- 5. 如何讓netbeans工作?
- 6. 如何讓FQL工作?
- 7. 如何讓pytesser(Tesseract)工作?
- 8. 如何讓svn_cat工作?
- 9. 如何讓WS_MAXIMIZE工作?
- 10. 如何讓setInterval工作?
- 11. 如何讓jQuery maphilight工作?
- 12. 如何讓tell()工作
- 13. 如何讓Gitzilla工作
- 14. 如何讓DebuggerBrowsable RootHidden工作?
- 15. 如何讓API工作?
- 16. 如何讓JDBC工作?
- 17. 如何讓RadioButton工作
- 18. 如何讓adb remount工作?
- 19. 如何讓案件工作
- 20. 如何讓#if DEBUG工作?
- 21. 如何讓Sass工作?
- 22. 如何讓thread.sleep工作
- 23. 如何讓kXML工作?
- 24. 如何讓jQuery Counter工作?
- 25. 如何讓mysqli_connect工作?
- 26. 如何讓Rcpp工作?
- 27. 如何讓poedit工作?
- 28. 如何讓Rails select()工作?
- 29. 如何讓-flto工作?
- 30. 如何讓PdfpTable Width工作?
你需要發佈崩潰報告的實際細節。關於X和Y流分開的位是C API,而不是C++ API。 – ajshort 2013-02-20 11:38:19