fix(api): device stream data dup frames remove
This commit is contained in:
parent
af8e188ae1
commit
d453f98b6d
|
@ -43,9 +43,11 @@ int main(int argc, char *argv[]) {
|
||||||
auto &&left_data = api->GetStreamData(Stream::LEFT);
|
auto &&left_data = api->GetStreamData(Stream::LEFT);
|
||||||
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
||||||
|
|
||||||
cv::Mat img;
|
if (!left_data.frame.empty() && !right_data.frame.empty()) {
|
||||||
cv::hconcat(left_data.frame, right_data.frame, img);
|
cv::Mat img;
|
||||||
cv::imshow("frame", img);
|
cv::hconcat(left_data.frame, right_data.frame, img);
|
||||||
|
cv::imshow("frame", img);
|
||||||
|
}
|
||||||
|
|
||||||
auto &&depth_data = api->GetStreamData(Stream::DEPTH);
|
auto &&depth_data = api->GetStreamData(Stream::DEPTH);
|
||||||
if (!depth_data.frame.empty()) {
|
if (!depth_data.frame.empty()) {
|
||||||
|
|
|
@ -43,9 +43,11 @@ int main(int argc, char *argv[]) {
|
||||||
auto &&left_data = api->GetStreamData(Stream::LEFT);
|
auto &&left_data = api->GetStreamData(Stream::LEFT);
|
||||||
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
||||||
|
|
||||||
cv::Mat img;
|
if (!left_data.frame.empty() && !right_data.frame.empty()) {
|
||||||
cv::hconcat(left_data.frame, right_data.frame, img);
|
cv::Mat img;
|
||||||
cv::imshow("frame", img);
|
cv::hconcat(left_data.frame, right_data.frame, img);
|
||||||
|
cv::imshow("frame", img);
|
||||||
|
}
|
||||||
|
|
||||||
// auto &&disp_data = api->GetStreamData(Stream::DISPARITY);
|
// auto &&disp_data = api->GetStreamData(Stream::DISPARITY);
|
||||||
// if (!disp_data.frame.empty()) {
|
// if (!disp_data.frame.empty()) {
|
||||||
|
|
|
@ -44,30 +44,32 @@ int main(int argc, char *argv[]) {
|
||||||
auto &&left_data = api->GetStreamData(Stream::LEFT);
|
auto &&left_data = api->GetStreamData(Stream::LEFT);
|
||||||
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
||||||
|
|
||||||
cv::Mat img;
|
if (!left_data.frame.empty() && !right_data.frame.empty()) {
|
||||||
cv::hconcat(left_data.frame, right_data.frame, img);
|
cv::Mat img;
|
||||||
|
cv::hconcat(left_data.frame, right_data.frame, img);
|
||||||
|
|
||||||
auto &&motion_datas = api->GetMotionDatas();
|
auto &&motion_datas = api->GetMotionDatas();
|
||||||
/*
|
/*
|
||||||
for (auto &&data : motion_datas) {
|
for (auto &&data : motion_datas) {
|
||||||
LOG(INFO) << "Imu frame_id: " << data.imu->frame_id
|
LOG(INFO) << "Imu frame_id: " << data.imu->frame_id
|
||||||
<< ", timestamp: " << data.imu->timestamp
|
<< ", timestamp: " << data.imu->timestamp
|
||||||
<< ", accel_x: " << data.imu->accel[0]
|
<< ", accel_x: " << data.imu->accel[0]
|
||||||
<< ", accel_y: " << data.imu->accel[1]
|
<< ", accel_y: " << data.imu->accel[1]
|
||||||
<< ", accel_z: " << data.imu->accel[2]
|
<< ", accel_z: " << data.imu->accel[2]
|
||||||
<< ", gyro_x: " << data.imu->gyro[0]
|
<< ", gyro_x: " << data.imu->gyro[0]
|
||||||
<< ", gyro_y: " << data.imu->gyro[1]
|
<< ", gyro_y: " << data.imu->gyro[1]
|
||||||
<< ", gyro_z: " << data.imu->gyro[2]
|
<< ", gyro_z: " << data.imu->gyro[2]
|
||||||
<< ", temperature: " << data.imu->temperature;
|
<< ", temperature: " << data.imu->temperature;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
painter.DrawImgData(img, *left_data.img);
|
||||||
|
if (!motion_datas.empty()) {
|
||||||
|
painter.DrawImuData(img, *motion_datas[0].imu);
|
||||||
|
}
|
||||||
|
|
||||||
|
cv::imshow("frame", img);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
painter.DrawImgData(img, *left_data.img);
|
|
||||||
if (!motion_datas.empty()) {
|
|
||||||
painter.DrawImuData(img, *motion_datas[0].imu);
|
|
||||||
}
|
|
||||||
|
|
||||||
cv::imshow("frame", img);
|
|
||||||
|
|
||||||
char key = static_cast<char>(cv::waitKey(1));
|
char key = static_cast<char>(cv::waitKey(1));
|
||||||
if (key == 27 || key == 'q' || key == 'Q') { // ESC/Q
|
if (key == 27 || key == 'q' || key == 'Q') { // ESC/Q
|
||||||
|
|
|
@ -61,6 +61,10 @@ int main(int argc, char *argv[]) {
|
||||||
<< ", diff_prev=" << (img_stamp - prev_img_stamp);
|
<< ", diff_prev=" << (img_stamp - prev_img_stamp);
|
||||||
prev_img_stamp = img_stamp;
|
prev_img_stamp = img_stamp;
|
||||||
|
|
||||||
|
// if (left_data.frame.empty() || right_data.frame.empty()) {
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
|
||||||
cv::Mat img;
|
cv::Mat img;
|
||||||
cv::hconcat(left_data.frame, right_data.frame, img);
|
cv::hconcat(left_data.frame, right_data.frame, img);
|
||||||
|
|
||||||
|
|
|
@ -41,10 +41,11 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
auto &&left_data = api->GetStreamData(Stream::LEFT);
|
auto &&left_data = api->GetStreamData(Stream::LEFT);
|
||||||
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
||||||
|
if (!left_data.frame.empty() && !right_data.frame.empty()) {
|
||||||
cv::Mat img;
|
cv::Mat img;
|
||||||
cv::hconcat(left_data.frame, right_data.frame, img);
|
cv::hconcat(left_data.frame, right_data.frame, img);
|
||||||
cv::imshow("frame", img);
|
cv::imshow("frame", img);
|
||||||
|
}
|
||||||
|
|
||||||
auto &&points_data = api->GetStreamData(Stream::POINTS);
|
auto &&points_data = api->GetStreamData(Stream::POINTS);
|
||||||
if (!points_data.frame.empty()) {
|
if (!points_data.frame.empty()) {
|
||||||
|
|
|
@ -37,8 +37,10 @@ int main(int argc, char *argv[]) {
|
||||||
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
auto &&right_data = api->GetStreamData(Stream::RIGHT);
|
||||||
|
|
||||||
cv::Mat img;
|
cv::Mat img;
|
||||||
cv::hconcat(left_data.frame, right_data.frame, img);
|
if (!left_data.frame.empty() && !right_data.frame.empty()) {
|
||||||
cv::imshow("frame", img);
|
cv::hconcat(left_data.frame, right_data.frame, img);
|
||||||
|
cv::imshow("frame", img);
|
||||||
|
}
|
||||||
|
|
||||||
char key = static_cast<char>(cv::waitKey(1));
|
char key = static_cast<char>(cv::waitKey(1));
|
||||||
if (key == 27 || key == 'q' || key == 'Q') { // ESC/Q
|
if (key == 27 || key == 'q' || key == 'Q') { // ESC/Q
|
||||||
|
|
|
@ -34,9 +34,6 @@ class DepthProcessor : public Processor {
|
||||||
std::string Name() override;
|
std::string Name() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
inline Processor::process_type ProcessOutputConnection() override {
|
|
||||||
return Processor::WITHOUT_CLONE;
|
|
||||||
}
|
|
||||||
inline Processor::process_type ProcessInputConnection() override {
|
inline Processor::process_type ProcessInputConnection() override {
|
||||||
return Processor::WITHOUT_CLONE;
|
return Processor::WITHOUT_CLONE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,9 +29,6 @@ class DepthProcessorOCV : public Processor {
|
||||||
virtual ~DepthProcessorOCV();
|
virtual ~DepthProcessorOCV();
|
||||||
|
|
||||||
std::string Name() override;
|
std::string Name() override;
|
||||||
inline Processor::process_type ProcessOutputConnection() override {
|
|
||||||
return Processor::WITHOUT_CLONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Object *OnCreateOutput() override;
|
Object *OnCreateOutput() override;
|
||||||
|
|
|
@ -44,9 +44,6 @@ class DisparityProcessor : public Processor {
|
||||||
inline Processor::process_type ProcessOutputConnection() override {
|
inline Processor::process_type ProcessOutputConnection() override {
|
||||||
return Processor::WITHOUT_CLONE;
|
return Processor::WITHOUT_CLONE;
|
||||||
}
|
}
|
||||||
inline Processor::process_type ProcessInputConnection() override {
|
|
||||||
return Processor::WITHOUT_CLONE;
|
|
||||||
}
|
|
||||||
Object *OnCreateOutput() override;
|
Object *OnCreateOutput() override;
|
||||||
bool OnProcess(
|
bool OnProcess(
|
||||||
Object *const in, Object *const out,
|
Object *const in, Object *const out,
|
||||||
|
|
|
@ -116,7 +116,15 @@ api::StreamData s1s2Processor::GetStreamData(const Stream &stream) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (enable_mode == Synthetic::MODE_ON) {
|
if (enable_mode == Synthetic::MODE_ON) {
|
||||||
return data2api(device_->GetStreamData(stream));
|
auto res = data2api(device_->GetStreamData(stream));
|
||||||
|
if (res.img == nullptr ||
|
||||||
|
res.img->timestamp == last_frame_id_cd ||
|
||||||
|
res.frame.empty()) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
last_frame_id_cd = res.img->timestamp;
|
||||||
|
return res;
|
||||||
|
// return data2api(device_->GetStreamData(stream));
|
||||||
}
|
}
|
||||||
LOG(ERROR) << "Failed to get device stream data of " << stream
|
LOG(ERROR) << "Failed to get device stream data of " << stream
|
||||||
<< ", unsupported or disabled";
|
<< ", unsupported or disabled";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user