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++.