#include <algorithm>
#include <iostream>
#include <sstream>
const std::string keys =
"{ h help | | 打印此帮助消息 }"
"{ detector | | 已编译的 .blob 人脸检测器模型的路径 }"
"{ duration | 100 | 从相机中提取帧并在其上运行推理的帧数 }";
namespace custom {
G_API_OP(BBoxes, <GPrims(GDetections)>,
"sample.custom.b-boxes") {
}
};
静态 void run(常量 std::vector<cv::Rect> &in_face_rcs,
std::vector<cv::gapi::wip::draw::Prim> &out_prims) {
out_prims.clear();
};
对于 (自动 &&rc : in_face_rcs) {
out_prims.emplace_back(cvt(rc,
CV_RGB(0,255,0)));
}
}
};
}
int main(
int argc,
char *argv[]) {
如果 (cmd.has("帮助")) {
cmd.printMessage();
返回 0;
}
常量 自动 det_name = cmd.get<std::string>("检测");
常量 自动 duration = cmd.get<int>("时长");
如果 (det_name.empty()) {
std::cerr << "严重错误:未为示例提供检测模型路径。"
<< "请使用 --detector 选项指定路径。"
<< std::endl;
返回 1;
}
cv::gapi::kernels<custom::OCVBBoxes>(),
cv::GMat blob = cv::gapi::infer<custom::FaceDetector>(拷贝);
流水线.
setSource(cv::gapi::wip::make_src<cv::gapi::oak::ColorCamera>());
流水线.start();
std::vector<cv::Rect> 输出_检测;
int 帧 = 0;
while (流水线.pull(
cv::gout(输出_矩阵, 输出_检测))) {
std::string 名称 = "oak_infer_frame_" + std::to_string(帧) + ".png";
if (!输出_检测.empty()) {
std::cout << "Got " << 输出_检测.size() << " detections on frame #" << 帧 << std::endl;
}
++帧;
如果(帧数 == 持续时间){
管线停止;
跳出;
}
}
std::cout << "管线已完成。已处理 " << 帧数 << " 帧" << std::endl;
返回 0;
}
用于解析命令行的命令。该命令行已设计成
定义 utility.hpp:820
cv::GArray<T> 模板类表示图中类 T 的一个对象列表。
定义 garray.hpp:366
GComputation 类表示一个捕获的计算图。GComputation 对象构成 ... 的边界。
定义 gcomputation.hpp:121
GAPI_WRAP GStreamingCompiled compileStreaming(GMetaArgs &&in_metas, GCompileArgs &&args={})
针对流式传输模式编译计算。
GFrame 类表示图中的图像或媒体帧。
定义 gframe.hpp:61
GMat 类表示图中的图像或张量数据。
定义 gmat.hpp:68
cv::GOpaque<T> 模板类表示图中类 T 的一个对象。
定义 gopaque.hpp:326
void setSource(GRunArgs &&ins)
指定输入数据以供 GStreamingCompiled 进行处理,这是通用版本。
2D 矩形模板类。
定义 types.hpp:444
#define GAPI_OCV_KERNEL(名称, API)
定义 gcpukernel.hpp:488
#define G_API_OP
定义 gkernel.hpp:369
GCompileArgs compile_args(Ts &&... args)
将参数包中的一个参数列表包装成一个编译参数向量 (cv::GCompileArg)...
定义 gcommon.hpp:214
GFrame renderFrame(const GFrame &m_frame, const GArray< Prim > &prims)
渲染媒体帧。
CV_EXPORTS_W bool imwrite(const String &文件名, InputArray 图像, const std::vector< int > ¶ms=std::vector< int >())
将图像保存到指定文件中。
#define CV_RGB(r, g, b)
定义 imgproc.hpp:4495
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
#define G_API_NET(类, API, 标签)
定义 infer.hpp:452
cv::GKernelPackage kernels()
GFrame copy(const GFrame &in)
cv::gapi::GKernelPackage kernels()
GOpaque< Size > size(const GMat &src)
从 Mat 获取维度。
cv::GMat BGR(const cv::GFrame &in)
从输入帧中获取 bgr 平面。
std::tuple< GArray< Rect >, GArray< int > > parseSSD(const GMat &in, const GOpaque< Size > &inSz, const float confidenceThreshold=0.5f, const int filterLabel=-1)
解析 SSD 网络的输出。
cv::GKernelPackage combine(const cv::GKernelPackage &lhs, const cv::GKernelPackage &rhs)
cv::gapi::GNetPackage networks(Args &&... args)
定义 infer.hpp:703
GProtoInputArgs GIn(Ts &&... ts)
定义 gproto.hpp:96
GRunArgsP gout(Ts &... args)
定义 garg.hpp:280
GProtoOutputArgs GOut(Ts &&... ts)
定义 gproto.hpp:101
此结构表示要绘制的矩形。
定义 render_types.hpp:128