滤波器中像素遍历的起止端点设计
#include "iostream" #include "algorithm" #include "opencv2/opencv.hpp" using namespace cv; using namespace std; int main() { string imgPath = "D:\qtproject\img\8.png"; Mat img = imread(imgPath); if(img.empty()) { cout<<imgPath<<" not exit!"<<endl; return 0; } Mat dilate_my; dilate_my.create(img.rows, img.cols, CV_8UC1); for(int i = 0; i<img.rows;++i) { for(int j = 0; j<img.cols; ++j) { /*巧妙设计:滤波器中的像素遍历,起止点*/ uchar maxV=0; for(int yi = i-1; yi <= i+1; yi++) { for(int xi = j-1; xi <=j+1; xi++) { /*截至条件设计*/ if(xi<0||xi>=img.cols||yi<0||yi>=img.rows) { continue; } maxV = (std::max<uchar>)(maxV, img.at<uchar>(yi, xi)); } } dilate_my.at<uchar>(i, j) = maxV; } } return 0; }