diff --git a/include/mynteye/types.h b/include/mynteye/types.h index a7836d1..4e5bf7e 100644 --- a/include/mynteye/types.h +++ b/include/mynteye/types.h @@ -195,14 +195,14 @@ enum class Option : std::uint8_t { * Max exposure time, valid if auto-exposure *

* range of standard 1: [0,240], default: 240
- * range of standard 2: [0,1000], default: 333 + * range of standard 2: [0,655], default: 333 *

*/ MAX_EXPOSURE_TIME, /** * min exposure time, valid if auto-exposure *

- * range: [0,1000], default: 0
+ * range: [0,655], default: 0
*

*/ MIN_EXPOSURE_TIME, @@ -576,7 +576,7 @@ struct MYNTEYE_API ImuIntrinsics { double scale[3][3]; /** Assembly error [3][3] */ double assembly[3][3]; - /* Zero-drift: X, Y, Z */ + /** Zero-drift: X, Y, Z */ double drift[3]; /** Noise density variances */ double noise[3]; diff --git a/samples/ctrl_auto_exposure.cc b/samples/ctrl_auto_exposure.cc index 53f18c3..911c86b 100644 --- a/samples/ctrl_auto_exposure.cc +++ b/samples/ctrl_auto_exposure.cc @@ -32,6 +32,8 @@ int main(int argc, char *argv[]) { Model model = api->GetModel(); + api->Start(Source::VIDEO_STREAMING); + // Set auto exposure options fo s1030 if (model == Model::STANDARD) { // auto-exposure: 0 @@ -83,8 +85,6 @@ int main(int argc, char *argv[]) { << api->GetOptionValue(Option::MIN_EXPOSURE_TIME); } - api->Start(Source::VIDEO_STREAMING); - CVPainter painter(frame_rate); cv::namedWindow("frame"); diff --git a/samples/dataset.cc b/samples/dataset.cc index 74a5ef7..3295e65 100644 --- a/samples/dataset.cc +++ b/samples/dataset.cc @@ -122,7 +122,7 @@ void Dataset::SaveStreamData( std::stringstream ss; ss << writer->outdir << MYNTEYE_OS_SEP << std::dec << std::setw(IMAGE_FILENAME_WIDTH) << std::setfill('0') << seq << ".png"; - cv::imwrite(ss.str(), data.frame); + cv::imwrite(ss.str(), data.frame); } ++stream_counts_[stream]; } @@ -137,8 +137,8 @@ void Dataset::SaveMotionData(const api::MotionData &data) { << data.imu->gyro[0] << ", " << data.imu->gyro[1] << ", " << data.imu->gyro[2] << ", " << data.imu->temperature << std::endl; - ++motion_count_; + motion_count_++; /* if(motion_count_ != seq) { LOG(INFO) << "motion_count_ != seq !" << " motion_count_: " << motion_count_ @@ -166,6 +166,15 @@ Dataset::writer_t Dataset::GetStreamWriter(const Stream &stream) { case Stream::DISPARITY: { writer->outdir = outdir_ + MYNTEYE_OS_SEP "disparity"; } break; + case Stream::RIGHT_RECTIFIED: { + writer->outdir = outdir_ + MYNTEYE_OS_SEP "right_rect"; + } break; + case Stream::LEFT_RECTIFIED: { + writer->outdir = outdir_ + MYNTEYE_OS_SEP "left_rect"; + } break; + case Stream::DISPARITY_NORMALIZED: { + writer->outdir = outdir_ + MYNTEYE_OS_SEP "disparity_norm"; + } break; default: LOG(FATAL) << "Unsupported stream: " << stream; } diff --git a/samples/record.cc b/samples/record.cc index d5edfc1..b3cf508 100644 --- a/samples/record.cc +++ b/samples/record.cc @@ -42,7 +42,7 @@ int main(int argc, char *argv[]) { // std::uint16_t fps; // } - request.fps = 10; + // request.fps = 10; api->ConfigStreamRequest(request); api->EnableMotionDatas(); @@ -68,60 +68,68 @@ int main(int argc, char *argv[]) { auto &&left_datas = api->GetStreamDatas(Stream::LEFT); auto &&right_datas = api->GetStreamDatas(Stream::RIGHT); - auto &&depth_datas = api->GetStreamDatas(Stream::DEPTH); - auto &&disparity_datas = api->GetStreamDatas(Stream::DISPARITY); + auto &&depth_data = api->GetStreamData(Stream::DEPTH); + auto &&disparity_data = api->GetStreamData(Stream::DISPARITY); img_count += left_datas.size(); auto &&motion_datas = api->GetMotionDatas(); imu_count += motion_datas.size(); - - auto &&left_frame = left_datas.back().frame_raw; - auto &&right_frame = right_datas.back().frame_raw; - cv::Mat img; - - if (left_frame->format() == Format::GREY) { - cv::Mat left_img( - left_frame->height(), left_frame->width(), CV_8UC1, - left_frame->data()); - cv::Mat right_img( - right_frame->height(), right_frame->width(), CV_8UC1, - right_frame->data()); - cv::hconcat(left_img, right_img, img); - } else if (left_frame->format() == Format::YUYV) { - cv::Mat left_img( - left_frame->height(), left_frame->width(), CV_8UC2, - left_frame->data()); - cv::Mat right_img( - right_frame->height(), right_frame->width(), CV_8UC2, - right_frame->data()); - cv::cvtColor(left_img, left_img, cv::COLOR_YUV2BGR_YUY2); - cv::cvtColor(right_img, right_img, cv::COLOR_YUV2BGR_YUY2); - cv::hconcat(left_img, right_img, img); - } else if (left_frame->format() == Format::BGR888) { - cv::Mat left_img( - left_frame->height(), left_frame->width(), CV_8UC3, - left_frame->data()); - cv::Mat right_img( - right_frame->height(), right_frame->width(), CV_8UC3, - right_frame->data()); - cv::hconcat(left_img, right_img, img); - } else { - return -1; + if (left_datas.size() > 0 && right_datas.size() > 0) { + auto &&left_frame = left_datas.back().frame_raw; + auto &&right_frame = right_datas.back().frame_raw; + if (right_frame->data() && left_frame->data()) { + if (left_frame->format() == Format::GREY) { + cv::Mat left_img( + left_frame->height(), left_frame->width(), CV_8UC1, + left_frame->data()); + cv::Mat right_img( + right_frame->height(), right_frame->width(), CV_8UC1, + right_frame->data()); + cv::hconcat(left_img, right_img, img); + } else if (left_frame->format() == Format::YUYV) { + cv::Mat left_img( + left_frame->height(), left_frame->width(), CV_8UC2, + left_frame->data()); + cv::Mat right_img( + right_frame->height(), right_frame->width(), CV_8UC2, + right_frame->data()); + cv::cvtColor(left_img, left_img, cv::COLOR_YUV2BGR_YUY2); + cv::cvtColor(right_img, right_img, cv::COLOR_YUV2BGR_YUY2); + cv::hconcat(left_img, right_img, img); + } else if (left_frame->format() == Format::BGR888) { + cv::Mat left_img( + left_frame->height(), left_frame->width(), CV_8UC3, + left_frame->data()); + cv::Mat right_img( + right_frame->height(), right_frame->width(), CV_8UC3, + right_frame->data()); + cv::hconcat(left_img, right_img, img); + } else { + return -1; + } + cv::imshow("frame", img); + } } - cv::imshow("frame", img); + if (img_count > 10 && imu_count > 50) { // save + // save Stream::LEFT for (auto &&left : left_datas) { dataset.SaveStreamData(Stream::LEFT, left); } - for (auto &&right : right_datas) { - dataset.SaveStreamData(Stream::RIGHT, right); + // save Stream::RIGHT + // for (auto &&right : right_datas) { + // dataset.SaveStreamData(Stream::RIGHT, right); + // } + + // save Stream::DEPTH + if (!depth_data.frame.empty()) { + dataset.SaveStreamData(Stream::DEPTH, depth_data); } - for (auto &&depth : depth_datas) { - dataset.SaveStreamData(Stream::DEPTH, depth); - } - for (auto &&disparity : disparity_datas) { - dataset.SaveStreamData(Stream::DISPARITY, disparity); + + // save Stream::DISPARITY + if (!disparity_data.frame.empty()) { + dataset.SaveStreamData(Stream::DISPARITY, disparity_data); } for (auto &&motion : motion_datas) {