ofPlanePrimitive not mapping textures from ofImage object

I have an ofImage object whose texture I map onto an ofPlanePrimitive. For the ofImage object, at compile time, I don’t give it an actual image to display, simply allocate the space. Below is the setup code:

objectImage.allocate(ofGetWidth(), ofGetHeight(), OF_IMAGE_COLOR);
plane.set(objectImage.getWidth(), objectImage.getHeight(), COLUMN_RESOLUTION, ROW_RESOLUTION);
plane.mapTexCoordsFromTexture(objectImage.getTexture());

where objectImage is the ofImage and plane is the ofPlanePrimitive.

However, when drawn to the screen, The plane is not drawing the image texture.
The code to set the image and draw is as below.

void RecognizedObject::updateImageWithObjectRect(cv::Rect &objectRect, cv::Mat &camMat) {
    this->objectRect = objectRect;
    this->camMat = camMat;
    Mat croppedCamMat(camMat, objectRect);
    
    resize(croppedCamMat, objectImage);
    objectImage.update();
    plane.set(objectRect.width, objectRect.height);
}

void RecognizedObject::draw() {
    float x = objectRect.x;
    float y = objectRect.y;
    float width = objectRect.width;
    float height = objectRect.height;
    
    ((ofApp*)ofGetAppPtr())->cvObjectsFbo.begin();
    ofPushMatrix();
    ofTranslate(x, y);
    objectImage.draw(0, 0, width, height);
    plane.drawWireframe();
    ofPopMatrix();
    ((ofApp*)ofGetAppPtr())->cvObjectsFbo.end();
    
}

The source of the image is actually a frame from a video stream that is cropped to a particular location using openCV. The update method is always called before the draw method.

When drawn, however, the plane simply appears as a white wireframe. Why isn’t the image appearing on the plane?

So after considerable searching, I found out the solution. Apparently, in order to make the texture available to the graphics card, it needs to be bound. Drawing the image should automatically do this, but since I aim to not draw the image at all, I need to call objectImage.getTexture().bind(), in my draw() method before I actually draw the wireframe to the screen.

So the correct method looks like this:

void RecognizedObject::draw() {
    objectImage.getTexture().bind();
    float x = objectRect.x;
    float y = objectRect.y;
    float width = objectRect.width;
    float height = objectRect.height;
    
    ((ofApp*)ofGetAppPtr())->cvObjectsFbo.begin();
    ofPushMatrix();
    ofTranslate(x, y);
    objectImage.draw(0, 0, width, height);
    plane.drawWireframe();
    ofPopMatrix();
    ((ofApp*)ofGetAppPtr())->cvObjectsFbo.end();
    
}