将matlab代码转换为opencv代码

时间:2014-05-13 02:54:48

标签: c++ matlab opencv

我有一个matlab代码,其中图像x有512 * 512大小,M = 512,N = 512,下一步就是这个

 r=x(:, 2:N) - x(:, 1:(N-1));
 d= mean2(abs(r(:, 8:8:8*(floor(N/8)-1))));
 a= (8*mean2(abs(r)) - d)/7;

现在我必须将这些步骤转换为opencv代码,以便我坚持使用逻辑

 cv::Mat scrImage =imread(argv[1],CV_LOAD_IMAGE_ANYCOLOR); // Read the file 
 cv::Mat dst(scrImage.size(),CV_64FC3);//Image double
 int nrows = dst.rows;
 int ncols = dst.cols*dst.channels();
 for(int j=0;j<nrows;j++){
 for(int i=0;i<ncols;i++)
 {
}}

对此有何想法?提前致谢

1 个答案:

答案 0 :(得分:4)

有很多方法可以做到这一点。最干净的方法是设置ROI(感兴趣区域),然后应用矩阵运算。类似的东西:

subtract(x(Rect(1,0,NumCols-1,NumRows)),x(Rect(0,0,NumCols-1,NumRows),R)
singleLineMask = Mat(1,NumCols,CV_8U)
for (int i=1;i<NumCols;i++)
    singleLineMask.at<int>(1,i)=1;
repeat(singleLineMask,NumRows,1,MaskImage)
d=mean(R,MaskImage)
a=(8*mean(abs(R))-d)/7

假设您在此操作之前创建R并计算NumRows,NumCols并分配MaskImage。