opencv通过dll调用matlab函数,图片作为参数

时间:2024-01-05 15:31:20
[blog 项目实战派]opencv通过dll调用matlab函数,图片作为参数
          前文介绍了如何“csharp通过dll调用opencv函数,图片作为参数”。而在实际的代码编写过程中,很多时候想把已经写好的matlab函数融合进去,但是依然是将图片作为参数传递比较成为问题。这里我经过一段时间的研究解决了这个问题(目前只解决了灰度图片下的图片传递问题)。这个问题包含几个难点,一个是mxmatrix的使用,一个是matlab和opencv对于图片的格式处理是不一样的。
         本次这个项目,是opencv通过调用matlab里面实现的Frangi函数,对图像进行Frangi滤波处理,并且最后在opencv中显示出来。
         首先是修改Frangi函数,也就是调整参数,用图片作为输入和输出,一定要保证修改后的程序是正确的
function [outIm]  ], , ., , ));
sigmas ;
c     ;
 
)))) ;
    S2  ;
   
    
    );
    );
    end
    ,
    [outIm,whatScale] );
    outIm )
        whatScale )
        Direction :numel(I))'+(whatScale(:)-1)*numel(I)),size(I));
    end
else
    outIm = reshape(ALLfiltered,size(I));
    if(nargout>1)
            whatScale = ones(size(I));
    end
    if(nargout>2)
        Direction = reshape(ALLangles,size(I));
    end
end
 
 片对代码进行编译。要注意这里是 -W lib:GOFrangi 而不是 -W cpplib:GOFrange
 mcc -W lib:GOFrangi -T link:lib GOFrangi.m -C 
拷贝这四个文件放到opencv目录下
opencv通过dll调用matlab函数,图片作为参数
系统相关设置
opencv通过dll调用matlab函数,图片作为参数
还有
opencv通过dll调用matlab函数,图片作为参数
还有
opencv通过dll调用matlab函数,图片作为参数
);
    imshow(; 
    } 
    ,;i;j;   
        }  
    }    
    waitKey();
    ;
}
生成结果
opencv通过dll调用matlab函数,图片作为参数opencv通过dll调用matlab函数,图片作为参数