ImageTest.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef IMAGE_TEST_H
  2. #define IMAGE_TEST_H
  3. #include <opencv4/opencv2/opencv.hpp>
  4. #include <string>
  5. #include <sys/time.h>
  6. #include <chrono>
  7. namespace ImageTest
  8. {
  9. void saveImageFromData(unsigned char *data, int width, int height, const std::string &filename = "./output.png")
  10. {
  11. cv::Mat image(height, width, CV_8UC3, data);
  12. cv::imwrite(filename, image);
  13. }
  14. class HighResolutionTimer
  15. {
  16. public:
  17. // 开始计时
  18. void start()
  19. {
  20. start_time = std::chrono::high_resolution_clock::now();
  21. }
  22. // 停止计时
  23. void stop()
  24. {
  25. end_time = std::chrono::high_resolution_clock::now();
  26. }
  27. // 获取经过的时间(以秒为单位)
  28. double elapsed() const
  29. {
  30. return std::chrono::duration<double>(end_time - start_time).count();
  31. }
  32. // 获取经过的时间(以毫秒为单位)
  33. double elapsed_milliseconds() const
  34. {
  35. return std::chrono::duration<double, std::milli>(end_time - start_time).count();
  36. }
  37. // 获取经过的时间(以微秒为单位)
  38. double elapsed_microseconds() const
  39. {
  40. return std::chrono::duration<double, std::micro>(end_time - start_time).count();
  41. }
  42. private:
  43. std::chrono::high_resolution_clock::time_point start_time;
  44. std::chrono::high_resolution_clock::time_point end_time;
  45. };
  46. }
  47. #endif // IMAGE_TEST_H