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++)
 {
}}

有什么想法吗?提前感谢

有很多方法可以做到这一点。最干净的方法是设置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。

相关内容

  • 没有找到相关文章

最新更新