|
@@ -0,0 +1,89 @@
|
|
|
+#include <QCoreApplication>
|
|
|
+
|
|
|
+#include <iostream>
|
|
|
+
|
|
|
+#include "modulecomm.h"
|
|
|
+
|
|
|
+
|
|
|
+#include "rawpic.pb.h"
|
|
|
+
|
|
|
+#include "opencv2/video.hpp"
|
|
|
+#include "opencv2/videoio.hpp"
|
|
|
+
|
|
|
+#include <opencv2/opencv.hpp>
|
|
|
+#include <opencv2/core.hpp>
|
|
|
+
|
|
|
+//#ifdef NVIDIA_AGX
|
|
|
+#include <opencv2/imgcodecs/legacy/constants_c.h> //OpenCV4 use this line
|
|
|
+#include <opencv2/imgproc/types_c.h> //OpenCV4 use this line
|
|
|
+//#endif
|
|
|
+
|
|
|
+cv::VideoWriter mWriter;
|
|
|
+
|
|
|
+bool mbSave = true;
|
|
|
+
|
|
|
+void encode(iv::vision::rawpic & xrawpic)
|
|
|
+{
|
|
|
+ std::cout<<"jpg size : "<<xrawpic.picdata().size()<<std::endl;
|
|
|
+
|
|
|
+ cv::Mat mat(xrawpic.height(),xrawpic.width(),xrawpic.mattype());
|
|
|
+
|
|
|
+ if(mbSave)
|
|
|
+ {
|
|
|
+ if(xrawpic.type() == 1)
|
|
|
+ memcpy(mat.data,xrawpic.picdata().data(),mat.rows*mat.cols*mat.elemSize());
|
|
|
+ else
|
|
|
+ {
|
|
|
+ std::vector<unsigned char> buff(xrawpic.picdata().data(),xrawpic.picdata().data()+xrawpic.picdata().size());
|
|
|
+ mat = cv::imdecode(buff,CV_LOAD_IMAGE_COLOR);
|
|
|
+ }
|
|
|
+ int font = cv::FONT_HERSHEY_DUPLEX;
|
|
|
+ QDateTime xrecvtime = QDateTime::fromMSecsSinceEpoch(xrawpic.time());
|
|
|
+ // char strtext[256];
|
|
|
+ // snprintf(strtext,"%s",xrecvtime.toString("yyyy-MM-dd hh:mm:ss:zzz").toLatin1().data());
|
|
|
+ std::string strtext = xrecvtime.toString("yyyy-MM-dd hh:mm:ss:zzz").toStdString();
|
|
|
+ double fratio = xrawpic.width()/640;
|
|
|
+ int fontsize = 0.5*fratio;
|
|
|
+ if(fontsize<1)fontsize = 1;
|
|
|
+ cv::putText(mat,strtext,cv::Point(xrawpic.width() - 230*fratio,30*fratio),font,0.5*fratio,cv::Scalar(0,255,0),fontsize);
|
|
|
+ // cv::putText(mat,mstrvin,cv::Point(10,30*fratio),font,0.5*fratio,cv::Scalar(0,255,0),fontsize);
|
|
|
+
|
|
|
+ }
|
|
|
+ static int ncount = 0;
|
|
|
+ ncount++;
|
|
|
+ if(ncount<11)
|
|
|
+ {
|
|
|
+ QTime xTime;
|
|
|
+ xTime.start();
|
|
|
+ mWriter<<mat;
|
|
|
+ std::cout<<"comp time :"<<xTime.elapsed()<<std::endl;
|
|
|
+ }
|
|
|
+ if(ncount == 11)
|
|
|
+ {
|
|
|
+ mWriter.release();
|
|
|
+ }
|
|
|
+
|
|
|
+ return;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void ListenPicData(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
|
|
|
+{
|
|
|
+ iv::vision::rawpic xrawpic;
|
|
|
+ if(xrawpic.ParseFromArray(strdata,nSize))
|
|
|
+ {
|
|
|
+ encode(xrawpic);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+int main(int argc, char *argv[])
|
|
|
+{
|
|
|
+ QCoreApplication a(argc, argv);
|
|
|
+ mWriter.open("/home/nvidia/testcv.mkv",cv::VideoWriter::fourcc('M','P','4','2'),30.0,cv::Size(1920,1080),1);
|
|
|
+
|
|
|
+ void * pa = iv::modulecomm::RegisterRecv("picfront",ListenPicData);
|
|
|
+
|
|
|
+ return a.exec();
|
|
|
+
|
|
|
+}
|