Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include <opencv2/opencv.hpp>
  6. #include <opencv2/core/core.hpp>
  7. #include <opencv2/imgproc/imgproc.hpp>
  8. #include <opencv2/video/video.hpp>
  9. #include <opencv2/highgui/highgui.hpp>
  10. #include <opencv2/objdetect/objdetect.hpp>
  11. #include <opencv2/video/tracking.hpp>
  12. #include <cmath>
  13. #include <vector>
  14. using namespace std;
  15. using namespace cv ;
  16. int main()
  17. {
  18. int count;
  19. Mat frame, img, prevImg, temp, gray, img_temp;
  20. VideoCapture cap("04.avi");
  21. //namedWindow("Frame");
  22. cap >> img_temp;
  23. cvtColor(img_temp, gray, CV_BGR2GRAY);
  24. gray.convertTo(temp, CV_8U);
  25. bilateralFilter(temp, prevImg, 5, 20, 20);
  26. double fps = cap.get(CV_CAP_PROP_FPS);
  27. while(true)
  28. {
  29. count=0;
  30. cap >> frame;
  31. cvtColor(frame, img, CV_BGR2GRAY);
  32. int win_size = 3;
  33. int maxCorners = 1000;
  34. double qualityLevel = 0.01;
  35. double minDistance = 1;
  36. int blockSize = 7;
  37. double k = 0.04;
  38. vector<Point2f> img_corners;
  39. img_corners.reserve(maxCorners);
  40. vector<Point2f> prevImg_corners;
  41. prevImg_corners.reserve(maxCorners);
  42. int width = img.cols;
  43. int height = img.rows;
  44. //goodFeaturesToTrack(img, img_corners, maxCorners,qualityLevel,minDistance,Mat(),blockSize,true,k);
  45. int g_size = 10;
  46. Point2f points;
  47. for(int i =0; i< width/g_size;++i){
  48. for(int j =0; j< width/g_size;++j){
  49. points.x = i* g_size + g_size/2;
  50. points.y = j* g_size + g_size/2;
  51. }
  52. img_corners.push_back(points);
  53. }
  54.  
  55. /*cornerSubPix( img, img_corners, Size( win_size, win_size ), Size( -1, -1 ),
  56. TermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 10, 0.03 ) );
  57. */
  58. vector<uchar> features_found;
  59. features_found.reserve(maxCorners);
  60. vector<float> feature_errors;
  61. feature_errors.reserve(maxCorners);
  62. calcOpticalFlowPyrLK( img, prevImg, img_corners, prevImg_corners, features_found, feature_errors ,
  63. Size( win_size, win_size ), 3,
  64. cvTermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 10, 0.3 ), 0, k);
  65. for( int i=0; i < features_found.size(); i++ ){
  66. Point2f p0( ceil( img_corners[i].x ), ceil( img_corners[i].y ) );
  67. Point2f p1( ceil( prevImg_corners[i].x ), ceil( prevImg_corners[i].y ) );
  68. line( frame, p0, p1, CV_RGB(255,0,0), 5 );
  69. }
  70. imshow("frame", frame);
  71. if(waitKey(5) >= 0)
  72. break;
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement