任何人都可以帮我从图像中访问第一个5 * 5块吗?我是新手打开简历,我正在用c ++进行编码。我在网上搜索。如果有人能回答这个问题会让我的工作更容易
答案 0 :(得分:4)
您可以使用cv::Mat::operator()
。
例如,要获取图像的第一个5x5块,您可以执行以下操作:
int roi_origin_x = 0;
int roi_origin_y = 0;
int block_width = 5;
int block_height = 5;
cv::Rect roi(roi_origin_x, roi_origin_y, block_width, block_height);
cv::Mat region = image(roi);
要访问特定的块编号,例如(i,j),只需更改块的原点,如下所示:
int block_width = 5;
int block_height = 5;
int roi_origin_x = i * block_width;
int roi_origin_y = j * block_height;
cv::Rect roi(roi_origin_x, roi_origin_y, block_width, block_height);
roi可能会超出图像边界,因此请确保应用检查以使其保持在图像边界内,