1

我正在尝试从其 rowRange 为 (15,0) 的现有矩阵创建一个新矩阵。但似乎开始应该总是小于结束。所以我无法执行此操作。如何以相反的顺序制作矩阵,以便最后一行是第一行,依此类推。它是一个多维 3 通道矩阵。

我想使下面的矩阵具有rowRange(max_x,max_x-15)。

Mat pad=prelim_im1.rowRange(max_x-15,max_x).clone();

在 for 循环中可能是可能的,但不知道该怎么做。

4

2 回答 2

0

使用方法flip()和翻转代码 == 0。这应该可以完成工作。

于 2013-09-11T08:12:54.717 回答
0

rowRange(15, 0)通过循环中的一些像素操作从原始图像中提取。查看更多关于访问像素强度值的信息。

我的原图
在此处输入图像描述

结果
在此处输入图像描述

代码:

int main(int argc, char** argv) {
    Mat img = imread("c:\\test.jpg");
    Mat subimg = img.clone();
    for (int y = 0; y < 16; y++) {
        for (int x = 0; x < img.cols; x++ ) {
            for (int channel = 0; channel < 3; channel++) {
                subimg.at<Vec3b>(y, x)[channel] = img.at<Vec3b>((15 - y), x)[channel];
            }
        }
    }
    namedWindow("img", CV_WINDOW_AUTOSIZE);
    imshow("img", img);
    namedWindow("sub", CV_WINDOW_AUTOSIZE);
    imshow("sub", subimg);
    waitKey();
    return 0;
}
于 2013-09-11T08:55:57.487 回答