Ask Your Question

Broadcast single channel to N-channels

asked 2020-03-04 16:03:48 -0500

Is there an OpenCV function to take a single channel image and extend it to N-channels, copying/repeating the pixel value to all channels, something like a pixel-wise broadcast?

I need to be able to per-element multiply a single channel image with an n-channel image and the only way to do this with high-level function calls is to extend/repeat the single channel image to match the dimensions of my n-channel image. Can I achieve this with a cv::Mat from cv::Mat::reshape() passed to cv::repeat()? Can I achieve this with cv::transform()?

edit retag flag offensive close merge delete



Der Luftmensch gravatar imageDer Luftmensch ( 2020-03-04 16:09:55 -0500 )edit

1 answer

Sort by » oldest newest most voted

answered 2020-06-11 14:54:02 -0500

I solved this using cv::transform(), see the example below to extend the single_channel image to n channels.

cv::Mat broadcast = cv::Mat::ones(n, 1, single_channel.depth());
cv::Mat extended;
cv::transform(single_channel, extended, broadcast);

See cv::transform().

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2020-03-04 16:03:48 -0500

Seen: 452 times

Last updated: Jun 11 '20