C++ 缩放使图像变白?

C++ 缩放使图像变白?,c++,ios,opencv,C++,Ios,Opencv,我正在用OpenCV在iOS上进行实时视频处理 我对图像做了几件事,首先我检查它并绘制一些覆盖图,然后将它放大两倍 在processImage中,如果我只执行第一步,一切正常,但如果我添加对函数zoom的调用,则会使图像看起来非常白色和半透明: 这是我的密码: static void resizeLock_(cv::Mat &img, int rows, int cols){ cv::Size newSize; newSize.width = cols; new

我正在用OpenCV在iOS上进行实时视频处理

我对图像做了几件事,首先我检查它并绘制一些覆盖图,然后将它放大两倍

processImage
中,如果我只执行第一步,一切正常,但如果我添加对函数
zoom
的调用,则会使图像看起来非常白色和半透明:

这是我的密码:

static void resizeLock_(cv::Mat &img, int rows, int cols){
    cv::Size newSize;
    newSize.width = cols;
    newSize.height = rows;
    cv::resize(img, img, newSize,0, 0, CV_INTER_AREA);
}

static void zoom(cv::Mat &img, int ratio){
    cv::Size originalSize = img.size();
    resizeLock_(img,img.rows*ratio,img.cols*ratio);
    double c = ((double)ratio -1)/(double)2;
    img(cv::Rect(cvRound(originalSize.width*c),cvRound(originalSize.height*c),originalSize.width,originalSize.height)).copyTo(img);
}


复制是否可以使用相同的cv::Mat作为输入和输出(缩放中的最后一行)?@ChronoTrigger复制到临时Mat没有区别。如果只调用
zoom()
,输出是否正确?我无法在iOS 6上用版本2.4.3.2再现您的结果。@Aurelius它仍然只在使用缩放代码时发生。
- (void)processImage:(Mat&)image;
{
    doProcessing(image);
    // if the next call is omitted, image looks fine.
    zoom(image,2);
}