我在OpenCV中寻找与cvConvertImage
相当的C ++。
cvConvertImage(const CvArr* src, CvArr* dst, int flags=0)
具体来说,我有一个cv::Mat
图像,红色和蓝色通道翻转,我希望将它们交换回去。在cvConvertImage中,您可以通过将标志设置为CV_CVTIMG_SWAP_RB
来完成此操作。
答案 0 :(得分:4)
延迟回答,但如果您要交换cv::cvtColor(...)
和CV_BGR2RGB
,则可以使用R
选项B
。
如果您想要更复杂的操作,mixchannels
是最佳选择
答案 1 :(得分:2)
我认为mixChannels()正是您所寻找的。 p>
答案 2 :(得分:0)
要访问各个像素,请参阅Fastest way to extract individual pixel data?
然后只需交换红/蓝值
答案 3 :(得分:0)
我不知道C ++界面中有任何方法可以执行此操作,但如果您不想像@Martin建议那样进行手动交换,您仍然可以将cv::Mat
转换为IplImage
并使用cvConvertImage
为您完成这项工作:
// Load image into: cv::Mat mat_img;
...
// Convert cv::Mat to IplImage
IplImage ipl_img = mat_img;
cvConvertImage(&ipl_img , &ipl_img , CV_CVTIMG_SWAP_RB);