C++ 转换为不在opencv中工作

C++ 转换为不在opencv中工作,c++,opencv,C++,Opencv,我尝试在OpCencv C++中使用CurrttoTo()。但是一个错误突然出现了 左侧:convertTo必须具有类/结构/联合 计划如下: for (i = 0; i < height; i += 8) { for (j = 0; j < width; j += 8) { Mat block = dctImage(Rect(j, i, 8, 8)); vector<Mat> planes; split(b

我尝试在OpCencv C++中使用CurrttoTo()。但是一个错误突然出现了

左侧:convertTo必须具有类/结构/联合

计划如下:

for (i = 0; i < height; i += 8)
{
    for (j = 0; j < width; j += 8)
    {
        Mat block = dctImage(Rect(j, i, 8, 8));
        vector<Mat> planes;
        split(block, planes);
        vector<Mat> outplanes(planes.size());
        for (k = 0; k < planes.size(); k++) {
            planes[k].convertTo(planes[k], CV_32FC1);
            dct(planes[k], outplanes[k]);
            outplanes[k].convertTo(outplanes[k], CV_8UC1);
        }
    }
}
for(i=0;i
我不确定
.convertTo()
是否可以处理源和目标相同的情况。您可能希望尝试使用一对临时变量来绕过错误消息。以下是您示例中的相关部分:

    // ...
    for (k = 0; k < planes.size(); k++) {
        Mat planes_k, outplanes_k;                     // <-- Added temporaries.
        planes[k].convertTo(planes_k, CV_32FC1);
        dct(planes_k, outplanes_k);
        outplanes_k.convertTo(outplanes[k], CV_8UC1);
    }
    // ...
/。。。
对于(k=0;kMat planes_k,outplanes_k;//左侧:of语句表示其为null或未定义
即
Outplane[k]不包含您认为应该包含的内容

我做了一个快速搜索,看起来这可能是一个编译器问题,它很难理解/解释这一行

vector<Mat> outplanes(planes.size());
向量输出平面(planes.size());

什么是Outplane?它的实例化是否正确

“最麻烦的解析”一文建议使用额外的括号帮助编译器

vector<Mat> outplanes((planes.size()));
向量输出平面((planes.size());
有点取决于您的代码和outplanes方法/类实际执行的操作,但我想它不会返回您认为应该返回的内容。

此代码对我有效…请发布一篇文章,您是否确保在Visual Studio版本中使用正确的OpenCV DLL(如果您使用的是vs)?有时这会导致奇怪的程序行为。我曾经忘记文件夹VC12不适用于VS2012,并遇到类似的问题。这是不必要的。如果目标类型与源类型不匹配,则会重新分配。这可以通过打印
平面[k]来验证。type()
转换到@boaz001-Hmm之前/之后,似乎你是对的。根据我的建议没有必要。