opencv IplImage assign 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。如何保存图像中的gray_image ?

image = cvCloneImage(gray_image);

image = gray_image

不工作

上面的代码可能会导致内存泄漏(谁来释放image或gray_image ?)

的正确方法(使用c++ API)应该是:

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

你甚至不会考虑在c++中为它创建一个函数

相关内容

  • 没有找到相关文章