main.cpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include <QCoreApplication>
  2. #include <iostream>
  3. #include "modulecomm.h"
  4. #include "rawpic.pb.h"
  5. #include "opencv2/video.hpp"
  6. #include "opencv2/videoio.hpp"
  7. #include <opencv2/opencv.hpp>
  8. #include <opencv2/core.hpp>
  9. #ifdef SYSTEM_AGX
  10. #include <opencv2/imgcodecs/legacy/constants_c.h> //OpenCV4 use this line
  11. #include <opencv2/imgproc/types_c.h> //OpenCV4 use this line
  12. #endif
  13. cv::VideoWriter mWriter;
  14. bool mbSave = true;
  15. void encode(iv::vision::rawpic & xrawpic)
  16. {
  17. std::cout<<"jpg size : "<<xrawpic.picdata().size()<<std::endl;
  18. cv::Mat mat(xrawpic.height(),xrawpic.width(),xrawpic.mattype());
  19. if(mbSave)
  20. {
  21. if(xrawpic.type() == 1)
  22. memcpy(mat.data,xrawpic.picdata().data(),mat.rows*mat.cols*mat.elemSize());
  23. else
  24. {
  25. std::vector<unsigned char> buff(xrawpic.picdata().data(),xrawpic.picdata().data()+xrawpic.picdata().size());
  26. mat = cv::imdecode(buff,CV_LOAD_IMAGE_COLOR);
  27. }
  28. int font = cv::FONT_HERSHEY_DUPLEX;
  29. QDateTime xrecvtime = QDateTime::fromMSecsSinceEpoch(xrawpic.time());
  30. // char strtext[256];
  31. // snprintf(strtext,"%s",xrecvtime.toString("yyyy-MM-dd hh:mm:ss:zzz").toLatin1().data());
  32. std::string strtext = xrecvtime.toString("yyyy-MM-dd hh:mm:ss:zzz").toStdString();
  33. double fratio = xrawpic.width()/640;
  34. int fontsize = 0.5*fratio;
  35. if(fontsize<1)fontsize = 1;
  36. cv::putText(mat,strtext,cv::Point(xrawpic.width() - 230*fratio,30*fratio),font,0.5*fratio,cv::Scalar(0,255,0),fontsize);
  37. // cv::putText(mat,mstrvin,cv::Point(10,30*fratio),font,0.5*fratio,cv::Scalar(0,255,0),fontsize);
  38. }
  39. static int ncount = 0;
  40. ncount++;
  41. if(ncount<11)
  42. {
  43. QTime xTime;
  44. xTime.start();
  45. mWriter<<mat;
  46. std::cout<<"comp time :"<<xTime.elapsed()<<std::endl;
  47. }
  48. if(ncount == 11)
  49. {
  50. mWriter.release();
  51. }
  52. return;
  53. }
  54. void ListenPicData(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
  55. {
  56. iv::vision::rawpic xrawpic;
  57. if(xrawpic.ParseFromArray(strdata,nSize))
  58. {
  59. encode(xrawpic);
  60. }
  61. }
  62. int main(int argc, char *argv[])
  63. {
  64. QCoreApplication a(argc, argv);
  65. char strpath[256];
  66. snprintf(strpath,256,"%s/testcv.mkv",getenv("HOME"));
  67. mWriter.open(strpath,cv::VideoWriter::fourcc('M','P','4','2'),30.0,cv::Size(1920,1080),1);
  68. void * pa = iv::modulecomm::RegisterRecv("picfront",ListenPicData);
  69. return a.exec();
  70. }