C++ 从cv::Mat裁剪矩形

C++ 从cv::Mat裁剪矩形,c++,image,opencv,opencv-mat,C++,Image,Opencv,Opencv Mat,我想裁剪一张简历。请参阅,我编写了以下代码 // I would like to crop around this central point. x = 100; y = 100; int centerOff = 30, size = 61; cv::Mat img2 = sourceImage(Rect((int)x-centerOff, (int)y-centerOff, size, size));

我想裁剪一张简历。请参阅,我编写了以下代码

        // I would like to crop around this central point.
        x = 100;
        y = 100;

        int centerOff = 30, size = 61;

        cv::Mat img2 = sourceImage(Rect((int)x-centerOff, (int)y-centerOff, size, size));

        for (int i=0; i<size; i++) {
            for (int j=0; j<size; j++) {
                std::cout << (int)img2.at<uchar>(i, j) << " " << (int)sourceImage.at<uchar>(x-centerOff+i, y-centerOff+j) << "\n"; 
            }
        }
//我想围绕这个中心点进行裁剪。
x=100;
y=100;
int centerOff=30,size=61;
cv::Mat img2=源图像(矩形((int)x-centerOff,(int)y-centerOff,size,size));

对于(int i=0;i)x和y的类型是什么?x和y的类型是float.in(int)sourceImage.at(x-centerOff+i,y-centerOff+j)x和y的顺序是错误的,但既然它们相等,应该没有问题。你的意思是我应该把它作为(int)sourceImage.at(y-centerOff+j,x-centerOff+i)事实上,我的代码x和y是不同的,所以改变x和y的位置解决了我的问题。非常感谢!这节省了我的时间:)我可以知道为什么会这样吗?为什么它不是Mat.at(x,y)?x和y的类型是什么?x和y的类型是float.in(int)sourceImage.at(x-centerOff+i,y-centerOff+j)x和y的顺序是错误的,但既然它们相等,应该没有问题。你的意思是我应该把它作为(int)sourceImage.at(y-centerOff+j,x-centerOff+i)事实上,我的代码中的Emmm x和y是不同的,因此改变x和y的位置可以解决我的问题。谢谢!这救了我一天:)我能知道为什么会这样吗?为什么它不是Mat.at(x,y)?