ofxFaceTracker from base64 image

Hey everyone!
I’m loading an image received as a base64 string from a socket client into openframeworks, the image is loading fine, it is a cam feed from a website I’m running in localhost.
The problem is that I just can’t get ofxFaceTracker to work with this image, there are no errors but tracker.getFound() is always returning 0.

Guess the code will explain itself.

ofApp.h

#pragma once

#include "ofMain.h"
#include "ofxCv.h"
#include "ofxSocketIO.h"
#include "ofxSocketIOData.h"

using namespace ofxCv;
using namespace cv;

#include "ofxFaceTracker.h"

class ofApp : public ofBaseApp{

	public:
		void setup();
		void update();
		void draw();
        void onConnection();
        void bindEvents();
        void gotEvent(std::string& name);
        void onImageEvent(ofxSocketIOData& data);
    
    ofxFaceTracker tracker;
    ofImage img;
    bool hasImg;
    
    ofxSocketIO socketIO;
    bool isConnected;

    ofEvent<ofxSocketIOData&> serverEvent;
    ofEvent<ofxSocketIOData&> imageEvent;
    
    std::string address;
    std::string status;
    std::string base64;
};

ofApp.cpp

#include "ofApp.h"
#include "Poco/Base64Decoder.h"

using namespace ofxCv;
using namespace cv;
//--------------------------------------------------------------
void ofApp::setup(){
    img.allocate(320,240, OF_IMAGE_GRAYSCALE);
    tracker.setup();
    hasImg = false;
    
    isConnected = false;
    address = "http://localhost:3000";
    status = "not connected";
    base64 = "";
    
    socketIO.setup(address);
    ofAddListener(socketIO.notifyEvent, this, &ofApp::gotEvent);
    ofAddListener(socketIO.connectionEvent, this, &ofApp::onConnection);
}

void ofApp::onConnection () {
    isConnected = true;
    bindEvents();
}

void ofApp::bindEvents () {
    std::string imageEventName = "image";
    socketIO.bindEvent(imageEvent, imageEventName);
    ofAddListener(imageEvent, this, &ofApp::onImageEvent);
}

void ofApp::onImageEvent (ofxSocketIOData& data) {
    base64 = data.getStringValue("buffer");
    if(base64.length() > 100){
        hasImg = true;
    }
}

void ofApp::gotEvent(string& name) {
    status = name;
}

//--------------------------------------------------------------
void ofApp::update(){
//not really sure if this part is correct
    if(img.isUsingTexture()){
        tracker.update(toCv(img));
        cout << ofToString(tracker.getFound()) << endl;
    }
    if(hasImg){
        stringstream ss;
        ss << base64;
        Poco::Base64Decoder b64in(ss);
        
        ofBuffer buffer;
        b64in >> buffer;
        
        img.load(buffer);
        hasImg = false;
    }
}

//--------------------------------------------------------------
void ofApp::draw(){
    ofColor(255);
    img.draw(0,0);
    if(tracker.getFound()) {
        ofSetLineWidth(1);
        tracker.draw();
    }
}

Any ideas?

Is there any other way I can convert this base64 string to an image?
If I draw the image I’m getting, then draw another image with grabScreen(), ofxFaceTracker works as expected, I’m guessing theres something wrong with the enconding in the original image.

ofxIO has an example of base64 image encoding / decoding.