OpenCV 2.4.4 버전을 사용하고 있습니다. - 나는 그 베타가 인 것을 알고있다.하지만 이라는 예제 폴더에있는 메서드는 cv::calcOpticalFlowSF
이라는 예제가있다. 그러나이 데모를 복사하여 입력 이미지와 함께 사용하면 처리가 시작되고 몇 초 후에 충돌 보고서가 다시 나타납니다. 메서드에 대한 설명서는 약간 이상합니다. 출력 파일은 메서드에서 실제로 원하는 cv::Mat& flow
대신 x 및 yflow입니다. 아이디어를 통해 문제를 해결하고 기능을 작동 시키려면 어떻게해야합니까?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);
이제는 opticalFlow DualTVL1도 함께 사용해 주셔서 감사합니다. – user1651460
고맙습니다. 코드가 많은 도움이되었습니다. 하지만 나는 회색 이미지에 문제가있다. \t'cv :: cvtColor (image1Re, gray, CV_BGR2GRAY); cv :: cvtColor (image2Re, prevgray, CV_BGR2GRAY);'프레임 1 및 프레임 2의 입력 인디케이터로 gray 및 prevgray를 사용합니다. 이 경우 무엇이 잘못 될지 아십니까? – user1651460
calcOpticalFlowSF 문서의 변수 이름을 살펴 보았을 때 색상이 알고리즘에서 사용되는 것처럼 보이므로 입력으로 필요합니다. –
을 예에서 OpenCV의/샘플/CPP/코드 블록
이 simpleflow_demo.cppif (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 :: Mat를 cv :: Matx33f로 변환하는 방법
- 2. cv :: setMouseCallback 사용 방법
- 3. cv :: matwise 매트릭스의 cv :: bitwise_not
- 4. open cv cv :: neon_cvtColorBGRA2GRAY issue
- 5. IplImage에서 cv :: imencode를 사용하는 방법?
- 6. cv haarclassifier 캐스케이드 사용 방법
- 7. cv :: mat에서 CvArr로 변환하는 방법?
- 8. cv :: Mat에서 데이터에 액세스하는 방법
- 9. OpenCV에서 cv :: BackgroundSubtractorMOG를 사용하는 방법?
- 10. cv :: Mat를 파이썬으로 변환하는 방법
- 11. cv :: imwrite는 CV_32FC4를 저장하지 않습니다. cv :: Mat
- 12. cv :: Point를 cv :: Mat에 저장할 수 있습니까?
- 13. 이진 cv :: mat에 cv :: Erode 오류가 발생했습니다.
- 14. 'cv :: pointPolygonTest'사용
- 15. cv :: bilateralFilter
- 16. cv :: Mat의 요소에 액세스하기
- 17. 여기서 cv :: adaptiveBilateralFilter가 사라졌습니까?
- 18. opencv에서 cv :: Mat
- 19. 올바르게 cv :: triangulatePoints()를 사용하는 방법
- 20. 변경없이 이미지에 openCV cv :: Mat를 저장하는 방법
- 21. Emgu CV 얼굴 인식 : 정확도 향상 방법
- 22. cv :: Mat의 값을 * CvMat로 변환하는 방법
- 23. cv :: mat type을 CV_16UC1에서 CV_8UC1로 변환하는 방법
- 24. cv :: Mat의 서브 세트를 효율적으로 추출하는 방법
- 25. 픽셀 데이터의 소유권을 cv :: Mat에 전달하는 방법
- 26. 장고 prefetch_related 작동하는 방법?
- 27. C에서 포인터가 작동하는 방법
- 28. .Net에서 직렬화가 작동하는 방법
- 29. 쿼리가 작동하는 방법, %
- 30. '에서'및 '또는'SQL에서 작동하는 방법
크래시 보고서의 실제 세부 정보를 게시해야합니다. 별도의 X 및 Y 플로우에 대한 비트는 C++ API가 아닌 C API 용입니다. – ajshort