opencv IplImage назначить IpImage

void GrayFilterCommand::apply_filter(IplImage* image) {
if (!image) {
    throw ....
}
IplImage *gray_image = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
if (!gray_image) {
    throw ....
}
cvCvtColor(image, gray_image, CV_BGR2GRAY);

image = cvCloneImage(gray_image); // does not work
}

Я не могу вернуть изображение, поэтому я вернул gray_image. Как я могу сохранить grey_image в изображении?

image = cvCloneImage(gray_image);

или же

image = gray_image

не работает

1 ответ

Ваш код выше, вероятно, приведет к утечке памяти (кто выпустит изображение или gray_image?)

правильный путь (с использованием API C++) будет:

void GrayFilterCommand::apply_filter(const Mat & rgb_image, Mat & gray_image) {
    cv::cvtColor(rgb_image, gray_image, CV_BGR2GRAY);
}

Вы даже не подумаете сделать это с помощью C++.

Другие вопросы по тегам