Files
project_capture/main.cc
2024-05-24 19:10:41 +08:00

97 lines
2.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <opencv2/opencv.hpp>
#include <zmq.hpp>
#include <unistd.h>
#include <stdlib.h>
#include <cstring>
#include <iostream>
#include "logc/log.h"
#include "tomlc99/toml.h"
#include "capture.h"
#define config_file_path "../config.toml"
int main(int argc, char **argv)
{
FILE *fp;
char errbuf[200];
fp = fopen(config_file_path, "r");
if (!fp)
{
log_error("can not open conifg file");
return -1;
}
toml_table_t *conf = toml_parse_file(fp, errbuf, sizeof(errbuf));
fclose(fp);
if (!conf)
{
log_error("cannot parse - %s", errbuf);
}
toml_table_t *server = toml_table_in(conf, "server");
if (!server)
{
log_error("missing [server]");
}
toml_datum_t server_0_index = toml_int_in(server, "server_0_index");
toml_datum_t server_1_index = toml_int_in(server, "server_1_index");
toml_datum_t server_2_index = toml_int_in(server, "server_2_index");
toml_datum_t server_0_port = toml_int_in(server, "server_0_port");
toml_datum_t server_1_port = toml_int_in(server, "server_1_port");
toml_datum_t server_2_port = toml_int_in(server, "server_2_port");
capture cap0(server_0_index.u.i, server_0_port.u.i);
capture cap1(server_1_index.u.i, server_1_port.u.i, 320, 240, 25);
capture cap2(server_2_index.u.i, server_2_port.u.i);
cap0.start();
// cap1.start();
cap2.start();
while (1)
{
usleep(1);
}
// while (true)
// {
// cap >> frame;
// if (frame.empty())
// {
// std::cerr << "Empty frame" << std::endl;
// break;
// }
// // 确保图像是连续的
// if (!frame.isContinuous())
// {
// frame = frame.clone().reshape(1, frame.total());
// }
// // std::cout << frame.cols << ":" << frame.rows << std::endl;
// // cv::imshow("realtime", frame);
// // 发送帧的元数据(宽度、高度、类型等)
// // 这里简单起见,只发送宽度和高度(假设类型为 CV_8UC3
// zmq::message_t header_msg(sizeof(int) * 2);
// int *header_data = static_cast<int *>(header_msg.data());
// header_data[0] = frame.cols;
// header_data[1] = frame.rows;
// // socket.send(header_msg, zmq::send_flags::sndmore);
// // 发送帧数据
// zmq::message_t frame_msg((size_t)frame.total() * frame.elemSize());
// memcpy(frame_msg.data(), frame.data, frame.total() * frame.elemSize());
// socket.send(frame_msg, zmq::send_flags::none);
// // 在这里添加一些延迟,以控制帧率
// cv::waitKey(1);
// }
// // 关闭视频捕获和 ZMQ 套接字
// cap.release();
// socket.close();
return 0;
}