C ++ эквивалент OpenCV's cvConvertImage - PullRequest
1 голос
/ 30 января 2012

Я ищу C ++ эквивалент cvConvertImage в OpenCV.

cvConvertImage(const CvArr* src, CvArr* dst, int flags=0)

В частности, у меня есть изображение cv::Mat с перевернутым красным и синим каналами, и я хочу поменять их обратно. В cvConvertImage вы можете сделать это, установив флажки CV_CVTIMG_SWAP_RB.

Ответы [ 4 ]

4 голосов
/ 27 сентября 2012

Поздний ответ, но вы можете использовать cv::cvtColor(...) с опцией CV_BGR2RGB, если вы хотите поменять местами R и B.

Если вы хотите более сложные операции, mixchannels - это способидти

2 голосов
/ 31 января 2012

Я думаю mixChannels () - это то, что вы ищете.

0 голосов
/ 30 января 2012

Я не знаю ни одного метода в интерфейсе 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);
0 голосов
/ 30 января 2012

Чтобы получить доступ к отдельным пикселям, см. Самый быстрый способ извлечь данные отдельных пикселей?

Тогда нужно просто поменять красные / синие значения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...