滤波器中像素遍历的起止端点设计

#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;
}

 


posted @ 2020-04-03 10:01  我们都是大好青年  阅读(171)  评论(0编辑  收藏  举报