#include <iostream>
#include <string>
// 包含SpireCV SDK头文件
#include <sv_world.h>
using namespace std;
int main(int argc, char *argv[]) {
// 实例化 通用目标 检测器类
sv::CommonObjectDetector cod;
// 手动导入相机参数,如果使用Amov的G1等吊舱或相机,则可以忽略该步骤,将自动下载相机参数文件
cod.loadCameraParams("/home/xfkj/SpireCV/calib_zr10_1280x720.yaml");
cod.loadAlgorithmParams(sv::get_home() + "/SpireCV/sv_algorithm_params.json");
// 打开摄像头
sv::Camera cap;
cap.setRtspUrl("rtsp://192.168.144.25:8554/main.264");
cap.open(sv::CameraType::RTSP, 0); // CameraID 0
// 实例化OpenCV的Mat类,用于内存单帧图像
cv::Mat img;
int frame_id = 0;
// 实例化视频推流类sv::VideoStreamer
sv::VideoStreamer streamer;
// 初始化 推流分辨率(640, 480),端口号8554,比特率1Mb
streamer.setup(cv::Size(640, 360), 8554, 1);
while (1)
{
// 实例化SpireCV的 单帧检测结果 接口类 TargetsInFrame
sv::TargetsInFrame tgts(frame_id++);
// 读取一帧图像到img
cap.read(img);
// 执行通用目标检测
cod.detect(img, tgts);
// 可视化检测结果,叠加到img上
sv::drawTargetsInFrame(img, tgts);
// 打印当前检测的FPS
printf(" FPS = %.2f\n", tgts.fps);
// 将img推流到 地址:rtsp://ip:8554/live
cv::resize(img, img, cv::Size(640, 360));
streamer.stream(img);
// 显示检测结果img
// cv::imshow("img", img);
cv::waitKey(10);
}
return 0;
}