I have a simple question, I want to use an OF_IMAGE_GRAYSCALE image and send it to open CV. I can do this with first going to a ofxCvColorImage, but as the image is already grayscale I would like to skip this step and go from my grayscale image to ofxCvGrayscaleImage.

Maybe the background is helpful, I am using ofxBlackmagic, I get very fast result for tracking if I feed the ofxCvGrayscaleImage with the grayPixels.

grayImage.setFromPixels(vidGrabber.getGrayPixels().getPixels(), camWidth,camHeight);

I am modifying ofxBlackmagic so I have a simple preprocessor declaration if I don’t have the hardware plugged in so I can keep working with my built in webcam. I want to make a function that gets the same gray pixels from the webcam so I have equivalent functions.

Here is the function from the addon

ofPixels& ofxBlackMagic::getGrayPixels() {
if(grayPixOld) {
	grayPix.allocate(width, height, OF_IMAGE_GRAYSCALE);
	unsigned int n = width * height;
	cby0cry1_to_y(&(getYuvRaw()[0]), grayPix.getPixels(), n);
	grayPixOld = false;
return grayPix;


and here is the function I thought would work (grabber here is ofVideoGrabber)

ofPixels& ofxBlackMagic::getGrayPixels() {
ofImage gray;
return gray;

It would be great to have the gray from the second function work directly with

grayImage.setFromPixels(vidGrabber.getGrayPixels().getPixels(), camWidth,camHeight);