Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV-带filter2D和双值的gaussianKernel_C++_Opencv - Fatal编程技术网

C++ OpenCV-带filter2D和双值的gaussianKernel

C++ OpenCV-带filter2D和双值的gaussianKernel,c++,opencv,C++,Opencv,首先,getGaussianKernel和filter2D使用双值?如果是,如何进行 我有这个: void smoothAngles(cv::Mat& cos_angles, cv::Mat& angles){ cv::Mat sin_angles; cos_angles.create(angles.size(), CV_64FC1); sin_angles.create(angles.size(), CV_64FC1); for(int i

首先,getGaussianKernel和filter2D使用双值?如果是,如何进行

我有这个:

void smoothAngles(cv::Mat& cos_angles, cv::Mat& angles){
    cv::Mat sin_angles;

    cos_angles.create(angles.size(), CV_64FC1);
    sin_angles.create(angles.size(), CV_64FC1);

    for(int i = 0; i < cos_angles.cols; i++){
        for(int j = 0; j < cos_angles.rows; j++){
            cos_angles.at<double>(i, j) = std::cos(2 * angles.at<double>(i, j));
            sin_angles.at<double>(i, j) = std::sin(2 * angles.at<double>(i, j));
        }
    }

    cv::Mat gaussKernel = cv::getGaussianKernel(5, 1.0, CV_32FC1);

    // aplica o filtro gaussiano low-pass
    cv::filter2D(cos_angles, cos_angles, cos_angles.depth(), gaussKernel);
    cv::filter2D(sin_angles, sin_angles, sin_angles.depth(), gaussKernel);

    for (int i = 0; i < cos_angles.cols; i++) {
        for (int j = 0; j < cos_angles.rows; j++) {
            cos_angles.at<double>(i, j) = std::atan2(sin_angles.at<double>(i, j), cos_angles.at<double>(i, j)) / 2;
        }
    }
}

我尝试使用
cv::GaussianBlur(cos_角度,cos_角度,cv::Size(5,5),1.0),但出现相同的错误。

访问矩阵时坐标顺序错误。第一个坐标必须是行索引,第二个坐标必须是列索引:

for(int i = 0; i < cos_angles.rows; i++){
    for(int j = 0; j < cos_angles.cols; j++){
        cos_angles.at<double>(i, j) = std::cos(2 * angles.at<double>(i, j));
        sin_angles.at<double>(i, j) = std::sin(2 * angles.at<double>(i, j));
    }
}
for(int i=0;i
for(int i = 0; i < cos_angles.rows; i++){
    for(int j = 0; j < cos_angles.cols; j++){
        cos_angles.at<double>(i, j) = std::cos(2 * angles.at<double>(i, j));
        sin_angles.at<double>(i, j) = std::sin(2 * angles.at<double>(i, j));
    }
}