zoukankan      html  css  js  c++  java
  • OpenCV 低通滤波(输入数据)

    #include <opencv2corecore.hpp>
    #include <opencv2highguihighgui.hpp>
    #include <opencv2imgprocimgproc.hpp>
    #include <iostream>
    #include<fstream>
    using namespace std;
    using namespace cv;
    int main()
    {
        vector<float> src;
        string path = "E:\实习入门\原跳动\1.txt";
        ifstream infile;
        infile.open(path, ios::in);
        if (!infile)
        {
            cout << "读取文件失败" << endl;
        }
        float i = 0;
    
        while (!infile.eof())
        {
    
            infile >> i;
            
            src.push_back(i);
            if (infile.fail())
                break;
        }
        infile.close();
        int c = src.size();
        vector<float>padde(src);
        int r = getOptimalDFTSize(src.size());
        int w = r - c;
        for (int i = 0; i < w; i++)
        {
            padde.push_back(0);
        }
        //src信号的实部、虚部
        Mat_<float> src_real = Mat_<float>(padde);
        Mat_<float> src_img = Mat::zeros(r, 1, CV_32F);
        vector<Mat_<float>> data;
        data.push_back(src_img);
        data.push_back(src_real);
        Mat complexImg;
        merge(data, complexImg); //可以理解为组合成2通道(实部+虚部)图像
        dft(complexImg, complexImg); //DFT变换后的数据复制到原处,没有另外开辟内存, complexImg是个复数矩阵
        int cy = complexImg.rows / 2;
        Mat m1(complexImg, cv::Rect(0, 0, 1, cy)); //左上部分
        Mat m2(complexImg, cv::Rect(0,cy, 1, cy)); //右上部分
        Mat temp;
        m1.copyTo(temp);
        m2.copyTo(m1);
        temp.copyTo(m2);
    
        split(complexImg, data);
        Mat src_dft_nor;
        magnitude(data[0], data[1], src_dft_nor);
        normalize(src_dft_nor, src_dft_nor, 1, 0, CV_MINMAX);
        //除去高频;
        //int data_temp_loat;
        //Mat src_nor_t=src_dft_nor.t();//转置
        //for (int i = 0; i < src_nor_t.cols; i++)
        //{
        //    float *data_ = src_nor_t.ptr<float>(0);
        //    if (data_[i]==1 )
        //    {
        //        data_temp_loat =i;
        //    }
        //}
        //Mat src_low=src_nor_t.t();
        /*Mat temp;
        m1.copyTo(temp);
        m2.copyTo(m1);
        temp.copyTo(m2);*/
         int y= complexImg.rows ;
    
        Mat partFrequencyImg_t = (complexImg.clone()).t();
    
        
        int colNumber = partFrequencyImg_t.cols*partFrequencyImg_t.channels();  //列数 x 通道数=每一行元素的个数
        int data_locate= partFrequencyImg_t.cols;
        //双重循环,遍历所有的像素值
        float * partFrequencyImg_t_data = partFrequencyImg_t.ptr<float>(0);  //获取第i行的首地址
        for (int i = 0; i < colNumber; i++)
        {
            if (i == (data_locate-3) || i == data_locate +3)
                ;
            else
            {
                partFrequencyImg_t_data[i] = 0;
            }
        }
        Mat partFrequencyImg= partFrequencyImg_t.t();
        //partFrequencyImg.colRange(0, 1).setTo(Scalar::all(0));
        /*partFrequencyImg.rowRange(0, y/2).setTo(Scalar::all(0));
        partFrequencyImg.rowRange(y/2+1,y).setTo(Scalar::all(0));*/
        Mat iPartDft[] = { Mat::zeros(complexImg.size(),CV_32F),Mat::zeros(complexImg.size(),CV_32F) };
        idft(partFrequencyImg, partFrequencyImg);
    
        split(partFrequencyImg, iPartDft);
        Mat data_temp;
        magnitude(iPartDft[0], iPartDft[1], data_temp);
        Mat data_img;
        cv::normalize(data_temp, data_img, 1, 0, CV_MINMAX);
        ofstream outfile;
        string path_out = "E:\C++\other_test\file_out.csv";
        outfile.open(path_out, ios::out);
        for (int i = 0; i < data_temp.rows; i++)
        {
            outfile<<data_temp.at<float>(i)<<endl;
        }
        outfile.close();
    
        
        
        
    }
        
  • 相关阅读:
    SQL-42 删除emp_no重复的记录,只保留最小的id对应的记录
    数独代码(回溯算法。力扣37题)
    hmac_sha1 c++例子
    0-1背包问题简化。
    八皇后8皇后,探讨最效率的算法。
    System.NotSupportedException:“No data is available for encoding 1252. For information on defining a custom encoding
    TopK问题终极解答
    http与https区别,https是什么,s是指什么
    linux下 调试C#代码
    VS2017 远程调试linux(centos).net core程序(通过附加程序的方式)
  • 原文地址:https://www.cnblogs.com/hsy1941/p/11381527.html
Copyright © 2011-2022 走看看