c++ - 如何获取从 OpenCV getGaussianKernel 返回的 Mat 的实际内核值?
问题描述
我目前正在尝试使用 CUDA 在图像上实现自定义大小的 M*N 高斯模糊。
我打算用 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]
}
解决方案
默认情况下,cv::getGaussianKernel
返回 aMat
类型CV_64FC1
,因此您需要像这样访问它:
kernel.at<double>(i,j);
为了清楚起见,我通常使用Mat_<T>
:
Mat1d kernel = getGaussianKernel(...);
并像这样访问它:
kernel(i,j);
推荐阅读
- html - HTML 和 CSS - 我无法删除边距
- npm - 在我的 windows10 上安装 create-react-app 的问题
- nginx - K8S Ingress 404 ssl 后端
- node.js - 添加 express-flash 中间件后 Express 服务器无法正常工作
- kubernetes - Kubernetes:打开/certs/tls.crt:没有这样的文件或目录
- javascript - 为什么 Web API 在 chrome 和 edge 等浏览器以及 Postman 工具中没有给出 CORS 错误?
- javascript - 错误 #98123:运行“gatsby develop”命令后,WEBPACK 未绑定 CSS
- javascript - 在 Typescript 中转换 React Native 导出文件
- c# - C# 泛型可以支持 Class 或 Nullable 吗?
- powershell - 如果不是另一个组的成员,则将用户添加到组的 powershell 脚本