Skip to content

SGProcessingManager/include/processors/processing_processor_mnn_image.hpp

Namespaces

Name
sgns
sgns::sgprocessing

Classes

Name
class sgns::sgprocessing::MNN_Image

Defines

Name
MNN_OPEN_TIME_TRACE
MODEL_IMAGE_SIZE
OUTPUT_STRIDE
MAX_POSE_DETECTIONS
NUM_KEYPOINTS
SCORE_THRESHOLD
MIN_POSE_SCORE
NMS_RADIUS
LOCAL_MAXIMUM_RADIUS
OFFSET_NODE_NAME
DISPLACE_FWD_NODE_NAME
DISPLACE_BWD_NODE_NAME
HEATMAPS
CIRCLE_RADIUS

Macros Documentation

define MNN_OPEN_TIME_TRACE

#define MNN_OPEN_TIME_TRACE 

Header file for processing posenet using MNN Justin Church

define MODEL_IMAGE_SIZE

#define MODEL_IMAGE_SIZE 513

define OUTPUT_STRIDE

#define OUTPUT_STRIDE 16

define MAX_POSE_DETECTIONS

#define MAX_POSE_DETECTIONS 10

define NUM_KEYPOINTS

#define NUM_KEYPOINTS 17

define SCORE_THRESHOLD

#define SCORE_THRESHOLD 0.5

define MIN_POSE_SCORE

#define MIN_POSE_SCORE 0.25

define NMS_RADIUS

#define NMS_RADIUS 20

define LOCAL_MAXIMUM_RADIUS

#define LOCAL_MAXIMUM_RADIUS 1

define OFFSET_NODE_NAME

#define OFFSET_NODE_NAME "offset_2"

define DISPLACE_FWD_NODE_NAME

#define DISPLACE_FWD_NODE_NAME "displacement_fwd_2"

define DISPLACE_BWD_NODE_NAME

#define DISPLACE_BWD_NODE_NAME "displacement_bwd_2"

define HEATMAPS

#define HEATMAPS "heatmap"

define CIRCLE_RADIUS

#define CIRCLE_RADIUS 3

Source code

#pragma once
#include <cmath>
#include <memory>
#include <vector>

#include <MNN/ImageProcess.hpp>
#include <MNN/Interpreter.hpp>
#include "processing_processor.hpp"
#define MNN_OPEN_TIME_TRACE
#include <MNN/AutoTime.hpp>

//Defines
#define MODEL_IMAGE_SIZE 513
#define OUTPUT_STRIDE 16

#define MAX_POSE_DETECTIONS 10
#define NUM_KEYPOINTS 17
#define SCORE_THRESHOLD 0.5
#define MIN_POSE_SCORE 0.25
#define NMS_RADIUS 20
#define LOCAL_MAXIMUM_RADIUS 1

#define OFFSET_NODE_NAME "offset_2"
#define DISPLACE_FWD_NODE_NAME "displacement_fwd_2"
#define DISPLACE_BWD_NODE_NAME "displacement_bwd_2"
#define HEATMAPS "heatmap"

#define CIRCLE_RADIUS 3

namespace sgns::sgprocessing
{
    using namespace MNN;

    class MNN_Image : public ProcessingProcessor
    {
    public:
        MNN_Image() 
            //imageData_( std::make_unique<std::vector<std::vector<char>>>() ),
            //modelFile_( std::make_unique<std::vector<uint8_t>>() )
        {
        }

        ~MNN_Image() override{
            //stbi_image_free(imageData_);
        };
        std::vector<uint8_t> StartProcessing( std::vector<std::vector<uint8_t>> &chunkhashes,
                                              const sgns::IoDeclaration               &proc,
                                              std::vector<char>                 &imageData,
                                              std::vector<char>                 &modelFile ) override;

        //void SetData(
        //    std::shared_ptr<std::pair<std::vector<std::string>, std::vector<std::vector<char>>>> buffers ) override;

    private:
        std::unique_ptr<MNN::Tensor> Process( const std::vector<uint8_t> &imgdata, 
                                                std::vector<uint8_t> &modelFile, 
                                                const int channels, 
                                                const int origwidth, 
                                                const int origheight,
                                                const std::string filename = "" );

        //std::unique_ptr<std::vector<std::vector<char>>> imageData_;
        //std::unique_ptr<std::vector<uint8_t>>           modelFile_;
        //std::string                                     fileName_;
    };

}

Updated on 2026-03-04 at 13:10:44 -0800