小编Nic*_*ick的帖子

用于RGB颜色混合的opencv中的3D矩阵乘法

我正在尝试在opencv中执行RGB颜色混合操作.我的图像包含在MxNx3 Mat中.我想用3x3矩阵多次这个.在Matlab中,我执行以下操作:*将图像从MxNx3展平为MNx3*将MNx3矩阵乘以3x3颜色混合矩阵*重塑为MxNx3

在Opencv中我想做以下事情:

void RGBMixing::mixColors(Mat &imData, Mat &rgbMixData)
{
   float rgbmix[] = {1.4237, -0.12364, -0.30003, -0.65221, 2.1936, -0.54141, -0.38854, -0.47458, 1.8631};
   Mat rgbMixMat(3, 3, CV_32F, rgbmix);
   // Scale the coefficents
   multiply(rgbMixMat, 1, rgbMixMat, 256);
   Mat temp = imData.reshape(0, 1);
   temp = temp.t();
   multiply(temp, rgbMixMat, rgbMixData);
}
Run Code Online (Sandbox Code Playgroud)

这会编译但会生成异常:

OpenCV错误:输入参数的大小不匹配(该操作既不是'rray op array'(其中数组具有相同的大小和相同的通道数),也不是'array op scalar',也不是'scalar op array')在arithm_op中,文件C:/ slave/WinI nstallerMegaPack/src/opencv/modules/core/src/arithm.cpp,第1253行终止在抛出'cv :: Exception'的实例后调用
what():C:/ slave/WinInstallerMegaPack/src/opencv/modules/core/src/arithm.cpp:1253:错误:( - 209)该操作既不是'数组操作数组'(其中数组具有相同的大小和相同的通道数),也不是'函数arithm_op中的数组操作标量','sca lar op array'

此应用程序已请求Runtime以不寻常的方式终止它.有关更多信息,请联系应用程序的支持团队.


更新1:

这是似乎有用的代码:

void RGBMixing::mixColors(Mat &imData, Mat&rgbMixData)
{
    Size tempSize;
    uint32_t channels;

    float rgbmix[] = …
Run Code Online (Sandbox Code Playgroud)

opencv matrix

4
推荐指数
1
解决办法
3236
查看次数

标签 统计

matrix ×1

opencv ×1