В настоящее время я пытаюсь реализовать нестандартный размер M * N Gaussian Blur на изображении с помощью CUDA.
Я намерен использовать OpenCV getGuassianKernel, чтобы получить ядро M * 1 и выполнить операцию вертикального гауссового размытия CUDA, затем получить еще одно ядро 1 * N и выполнить еще одну операцию горизонтального размытия по Гауссе CUDA.
Как я могу получить фактическое значение с плавающей точкой в ядре?Я просто попробовал следующий способ, и поведение кажется странным:
Mat kernel= getGaussianKernel(3, -1);
cout << kernel<< endl; //yields[0.25,5,0.25]
vector<float> kernel_vector;
for (int i = 0; i < kernel.rows; ++i) {
kernel_vector.insert(kernel_vector.end(), kernel.ptr<float>(i), kernel.ptr<float>(i)+kernel.cols);
}
for(auto i : kernel_vector){
cout << i << endl; //yields[0,0,0]
}