// ----------------------- OpenPose Tests - Hand Keypoint Detection from JSON Ground-Truth Data -----------------------// Example to test hands accuracy given ground-truth bounding boxes.// Command-line user interface#define OPENPOSE_FLAGS_DISABLE_POSE#include <openpose/flags.hpp>// OpenPose dependencies#include <openpose/headers.hpp>#include "wrapperHandFromJsonTest.hpp"// For info about the flags, check `examples/openpose/openpose.bin`.// ProducerDEFINE_string(image_dir, "", "");DEFINE_string(hand_ground_truth, "", "");// OpenPoseDEFINE_string(model_folder, "models/", "");DEFINE_int32(num_gpu, -1, "");DEFINE_int32(num_gpu_start, 0, "");// OpenPose HandDEFINE_bool(hand, true, "");DEFINE_string(hand_net_resolution, "368x368", "");DEFINE_int32(hand_scale_number, 1, "");DEFINE_double(hand_scale_range, 0.4, "");// DisplayDEFINE_int32(display, -1, "");// Result SavingDEFINE_string(write_json, "", "");int handFromJsonTest(){try{op::opLog("Starting OpenPose demo...", op::Priority::High);const auto timerBegin = std::chrono::high_resolution_clock::now();// logging_levelop::checkBool(0 <= FLAGS_logging_level && FLAGS_logging_level <= 255, "Wrong logging_level value.",__LINE__, __FUNCTION__, __FILE__);op::ConfigureLog::setPriorityThreshold((op::Priority)FLAGS_logging_level);// Applying user defined configuration - GFlags to program variables// handNetInputSizeconst auto handNetInputSize = op::flagsToPoint(op::String(FLAGS_hand_net_resolution), "368x368 (multiples of 16)");// producerTypeconst auto producerSharedPtr = op::createProducer(op::ProducerType::ImageDirectory, FLAGS_image_dir);// OpenPose wrapperop::opLog("Configuring OpenPose...", op::Priority::High);op::WrapperHandFromJsonTest<op::Datum> opWrapper;// Pose configuration (use WrapperStructPose{} for default and recommended configuration)op::WrapperStructPose wrapperStructPose{op::PoseMode::Disabled, op::flagsToPoint("656x368", "?x?"), -1.0, op::flagsToPoint("1280x720", "?x?"),op::ScaleMode::InputResolution, FLAGS_num_gpu, FLAGS_num_gpu_start, 1, 0.15f, op::RenderMode::None,op::PoseModel::BODY_25, true, 0.f, 0.f, 0, "models/", {}, op::ScaleMode::ZeroToOneFixedAspect, false,0.05f, -1, false};wrapperStructPose.modelFolder = op::String(FLAGS_model_folder);// Hand configuration (use op::WrapperStructHand{} to disable it)const op::WrapperStructHand wrapperStructHand{FLAGS_hand, op::Detector::Provided, handNetInputSize, FLAGS_hand_scale_number,(float)FLAGS_hand_scale_range, op::flagsToRenderMode(1)};// Configure wrapperopWrapper.configure(wrapperStructPose, wrapperStructHand, producerSharedPtr, FLAGS_hand_ground_truth,FLAGS_write_json, op::flagsToDisplayMode(FLAGS_display, false));// Start processingop::opLog("Starting thread(s)...", op::Priority::High);opWrapper.exec();// Measuring total timeconst auto now = std::chrono::high_resolution_clock::now();const auto totalTimeSec = double(std::chrono::duration_cast<std::chrono::nanoseconds>(now-timerBegin).count()* 1e-9);const auto message = "OpenPose demo successfully finished. Total time: "+ std::to_string(totalTimeSec) + " seconds.";op::opLog(message, op::Priority::High);return 0;}catch (const std::exception& e){op::error(e.what(), __LINE__, __FUNCTION__, __FILE__);return -1;}}int main(int argc, char *argv[]){// Parsing command line flagsgflags::ParseCommandLineFlags(&argc, &argv, true);// Running handFromJsonTestreturn handFromJsonTest();}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。