реализация 2d свертки с OpenCV - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь реализовать программу 2d свертки в C ++, используя opencv. Я добавил границу с ядром в качестве входных данных, но когда я запускаю свой код, я понимаю, что в изображения не было внесено никаких изменений, я чувствую, что все сделал правильно.

Может ли кто-нибудь мне помочь?

2d_filter(const Mat &input, Mat &output, const Mat &kernel) {

    Mat in_out = (Mat_<float>(3,3));
    int border = 1;
    Mat copy_out ;
    cv::copyMakeBorder(kernel, in_out, border, border,border,border, cv::BORDER_REPLICATE);


    for(int y=0; y < copy_out.rows; ++y)
{
    for(int x=0; x < copy_out.cols; ++x)
    {
        for(int ky=0; ky < kernel.rows; y++)
        {

            float tmp = 0.0f;
            for(int kx=0; kx < kernel.cols; kx++)
            {


                tmp = in_out.at<float>(((y+ky-((kernel.rows-1)/2))),x+kx-((kernel.cols-1)/2))*kernel.at<float>(ky,kx);




            }
            copy_out.at<float>(y,x) =tmp;
        }
    }
}
    copy_out.copyTo(output);
...