我需要从图像中收集一些数据。循环应该用面具完成。
例如,我有一个简单的十字掩码:
1
1 1 1
1
我需要知道图像每个点的灰度值之和。
我可以使用简单的循环,如下所示:
// looping except first and last
int nr = image.rows-1;
int nc = image.cols-1;
for (int j=1; j<nr; j++) { // for all rows
const uchar* previous = image.ptr<const uchar>(j-1); // previous row
const uchar* current = image.ptr<const uchar>(j); // current row
const uchar* next = image.ptr<const uchar>(j+1); // next row
for (int i=1; i<nc; i++) {
sum = previos[i] + current[i] + current[i-1]
+ current[i+1] + next[i];
}
}
但我认为我做错了。也许我应该使用类似的东西cv::Mat kernel()
?
我需要掩码作为参数,所以我可以使用任何类型的掩码。
是否有现成的功能可以循环使用蒙版的图像?(有 filter2D 功能,但我不需要对图像进行更改,只需对像素进行一些计算)。