first commit
This commit is contained in:
53
nodes/osd/vp_text_osd_node.cpp
Normal file
53
nodes/osd/vp_text_osd_node.cpp
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
#include "vp_text_osd_node.h"
|
||||
|
||||
namespace vp_nodes {
|
||||
|
||||
vp_text_osd_node::vp_text_osd_node(std::string node_name, std::string font): vp_node(node_name) {
|
||||
ft2 = cv::freetype::createFreeType2();
|
||||
ft2->loadFontData(font, 0);
|
||||
this->initialized();
|
||||
}
|
||||
|
||||
vp_text_osd_node::~vp_text_osd_node() {
|
||||
deinitialized();
|
||||
}
|
||||
|
||||
std::shared_ptr<vp_objects::vp_meta> vp_text_osd_node::handle_frame_meta(std::shared_ptr<vp_objects::vp_frame_meta> meta) {
|
||||
// operations on osd_frame
|
||||
if (meta->osd_frame.empty()) {
|
||||
// double times higher than frame
|
||||
meta->osd_frame = cv::Mat(meta->frame.rows * 2, meta->frame.cols, meta->frame.type());
|
||||
}
|
||||
|
||||
auto canvas1 = meta->frame.clone();
|
||||
auto canvas2 = cv::Mat(meta->frame.rows, meta->frame.cols, meta->frame.type(), cv::Scalar(255, 255, 255));
|
||||
|
||||
for (int i = 0; i < meta->text_targets.size(); i++) {
|
||||
auto& text = meta->text_targets[i];
|
||||
|
||||
cv::Point rook_points[4];
|
||||
for (int m = 0; m < text->region_vertexes.size(); m++) {
|
||||
rook_points[m] =
|
||||
cv::Point(text->region_vertexes[m].first, text->region_vertexes[m].second);
|
||||
}
|
||||
|
||||
const cv::Point *ppt[1] = {rook_points};
|
||||
int npt[] = {4};
|
||||
|
||||
cv::polylines(canvas1, ppt, npt, 1, 1, CV_RGB(0, 255, 0), 2, cv::LINE_AA, 0);
|
||||
cv::polylines(canvas2, ppt, npt, 1, 1, CV_RGB(0, 255, 0), 1, cv::LINE_AA, 0);
|
||||
|
||||
ft2->putText(canvas2, text->text, rook_points[3], 20, cv::Scalar(255, 0, 0), cv::FILLED, cv::LINE_AA, true);
|
||||
}
|
||||
|
||||
// copy back to osd frame
|
||||
auto roi1 = meta->osd_frame(cv::Rect(0, 0, meta->frame.cols, meta->frame.rows));
|
||||
auto roi2 = meta->osd_frame(cv::Rect(0, meta->frame.rows, meta->frame.cols, meta->frame.rows));
|
||||
|
||||
canvas1.copyTo(roi1);
|
||||
canvas2.copyTo(roi2);
|
||||
|
||||
return meta;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user