c++ - 如何通过引用传递opencv mat
问题描述
我有 1 个矩阵(3 通道)-> cv::Mat 通道[3];
& 3 矩阵 (1channel) -> cpu_filter0,cpu_filter90,cpu_filter120
以前我做过这样的事情,
cv::Mat cpu_filter0,cpu_filter90,cpu_filter120
cv::Mat channels[] = {cpu_filter0,cpu_filter90,cpu_filter120}
但现在我想做这样
cv::Mat cpu_filter0,cpu_filter90,cpu_filter120
cv::Mat channels3[3];
channels[0] = &cpu_filter0, channels[1] = &cpu_filter90, channels[0] = &cpu_filter120;
或通过,
cv::Mat channels3[] = {&cpu_filter0_0,&cpu_filter120_120,&cpu_filter240_240};
想知道这样做的正确方法是什么?
解决方案
你是说你用来cv::Mat channels[3];
创建多通道矩阵吗?因为这不是它的作用,所以它创建了一个具有 3 个矩阵的 c 样式数组。
首先,确保您熟悉该语言(C++)以及(C 风格)数组如何工作(我找到了本教程,但我还没有阅读)。
然后,在此处阅读“详细说明”段落。
综上所述,创建 cv::Mat 有不同的方法,例如:
cv::Mat m(10, 10, CV_32FC3);
这将创建一个具有 3 个 32 位浮点数通道的 10x10 矩阵。其他值可以在这里找到。只需为您想要的频道数量添加“C”。
现在,如何将它们作为参考传递?一如既往:
void my_func(cv::Mat ¶m) {
// do stuff
}
// in another function
cv::Mat m(10, 10, CV_32FC3);
my_func(m);
推荐阅读
- laravel - 我们应该将 APNs p8 密钥存储在 Web 服务器的什么位置?
- amazon-web-services - DynamoDB:如果属性已经存在,如何更新一个属性以外的项目
- c# - HttpClient Post REST API 中的 C# Multipart 表单数据
- asp.net - aspxauth cookie 在 iframe 中被剥离
- python - 在文本周围用“=”和“#”创建一个框
- react-native - 发布的 apk 未反映对源代码所做的更改
- c# - 使用 imageformat.memorybmp 时保持透明度
- python - 如何在 SIMILARITY() postgres 函数中迭代 python 列表
- elasticsearch - ElasticSearch 根据查询对结果中的字段进行排序
- arrays - 为什么 Rust 以特定于架构的方式生成 LLVM IR 并使用空数组作为可变静态变量?