OpenCV拆分和合并程序显示错误

OpenCV拆分和合并程序显示错误,opencv,Opencv,我编写了以下程序,将image1拆分为三个通道,然后将image2添加到image1的蓝色通道中。我使用的是代码块编译器,它没有显示任何错误,但当我执行它时,命令提示符会显示运行时错误,并强制关闭我的程序。有人能告诉我我的程序出了什么问题吗? 这里是一个链接到我得到的错误截图 使用名称空间std; 使用名称空间cv; 无效附加图像(材料与图像1、材料与图像2、材料与结果) { create(image1.size(),image1.type()); 向量平面; 分割(图像1,平面); 平面[0

我编写了以下程序,将image1拆分为三个通道,然后将image2添加到image1的蓝色通道中。我使用的是代码块编译器,它没有显示任何错误,但当我执行它时,命令提示符会显示运行时错误,并强制关闭我的程序。有人能告诉我我的程序出了什么问题吗? 这里是一个链接到我得到的错误截图

使用名称空间std;
使用名称空间cv;
无效附加图像(材料与图像1、材料与图像2、材料与结果)
{
create(image1.size(),image1.type());
向量平面;
分割(图像1,平面);
平面[0]+=image2;
合并(平面、结果);
}
int main()
{
Mat image1=imread(“C:\\castle.jpg”,CV\u LOAD\u IMAGE\u未更改);
Mat image2=imread(“C:\\rain.jpg”,CV\u加载\u图像\u未更改);
Mat结果;
添加图像(图像1、图像2、结果);
namedWindow(“vOut”,CV\u窗口\u自动调整大小);
imshow(“vOut”,结果);
等待键(0);
销毁所有窗口();
}

错误状态:输入参数的大小不匹配

要解决此错误,请检查以下内容:

  • image1和image2的大小(列和行)必须相同
  • 图像2必须是NxMx1(1通道)
我猜错误在于您对image2的imread调用。 您读取图像时,CV_LOAD_image_保持不变这可能会加载rgb、bgr、rgba[…]格式的图像,所有图像都有多个通道

要读取灰度为的图像(一个通道,请尝试:
CV\u LOAD\u image\u Grayscale

检查所有图像(和平面)的尺寸是否正确,代码是否正常工作。

错误状态:输入参数的大小不匹配

要解决此错误,请检查以下内容:

  • image1和image2的大小(列和行)必须相同
  • 图像2必须是NxMx1(1通道)
我猜错误在于您对image2的imread调用。 您读取图像时,CV_LOAD_image_保持不变这可能会加载rgb、bgr、rgba[…]格式的图像,所有图像都有多个通道

要读取灰度为的图像(一个通道,请尝试:
CV\u LOAD\u image\u Grayscale

检查所有图像(和平面)的尺寸是否正确,代码是否正常工作。

错误状态:输入参数的大小不匹配

要解决此错误,请检查以下内容:

  • image1和image2的大小(列和行)必须相同
  • 图像2必须是NxMx1(1通道)
我猜错误在于您对image2的imread调用。 您读取图像时,CV_LOAD_image_保持不变这可能会加载rgb、bgr、rgba[…]格式的图像,所有图像都有多个通道

要读取灰度为的图像(一个通道,请尝试:
CV\u LOAD\u image\u Grayscale

检查所有图像(和平面)的尺寸是否正确,代码是否正常工作。

错误状态:输入参数的大小不匹配

要解决此错误,请检查以下内容:

  • image1和image2的大小(列和行)必须相同
  • 图像2必须是NxMx1(1通道)
我猜错误在于您对image2的imread调用。 您读取图像时,CV_LOAD_image_保持不变这可能会加载rgb、bgr、rgba[…]格式的图像,所有图像都有多个通道

要读取灰度为的图像(一个通道,请尝试:
CV\u LOAD\u image\u Grayscale

检查所有图像(和平面)的尺寸是否正确,代码是否正常工作。

不能将单通道图像添加到三通道图像

planes[0] += image2;
您可以在arithm.cpp中找到错误消息

 else if( !checkScalar(src2, src1.type(), kind2, kind1) )
 CV_Error( CV_StsUnmatchedSizes,
                 "The operation is neither 'array op array' (where arrays have the same size and the same number of channels), "
                 "nor 'array op scalar', nor 'scalar op array'" );
是否将image2添加到image1的蓝色通道?我不太明白


拆分图像2并使用相同的通道、类型、大小等添加它们…

您不能将单通道图像添加到三通道图像

planes[0] += image2;
您可以在arithm.cpp中找到错误消息

 else if( !checkScalar(src2, src1.type(), kind2, kind1) )
 CV_Error( CV_StsUnmatchedSizes,
                 "The operation is neither 'array op array' (where arrays have the same size and the same number of channels), "
                 "nor 'array op scalar', nor 'scalar op array'" );
是否将image2添加到image1的蓝色通道?我不太明白


拆分图像2并使用相同的通道、类型、大小等添加它们…

您不能将单通道图像添加到三通道图像

planes[0] += image2;
您可以在arithm.cpp中找到错误消息

 else if( !checkScalar(src2, src1.type(), kind2, kind1) )
 CV_Error( CV_StsUnmatchedSizes,
                 "The operation is neither 'array op array' (where arrays have the same size and the same number of channels), "
                 "nor 'array op scalar', nor 'scalar op array'" );
是否将image2添加到image1的蓝色通道?我不太明白


拆分图像2并使用相同的通道、类型、大小等添加它们…

您不能将单通道图像添加到三通道图像

planes[0] += image2;
您可以在arithm.cpp中找到错误消息

 else if( !checkScalar(src2, src1.type(), kind2, kind1) )
 CV_Error( CV_StsUnmatchedSizes,
                 "The operation is neither 'array op array' (where arrays have the same size and the same number of channels), "
                 "nor 'array op scalar', nor 'scalar op array'" );
是否将image2添加到image1的蓝色通道?我不太明白

拆分image2并使用相同的频道、类型、大小等添加它们