如何在 C++ 的结构中操作 cv::mat 实体
how to manipulate cv::mat entity in structure in c++
我有 n 张图片,在 opencv 操作后,每个图片都有自己的 mat 文件。我尝试将其保持在结构阵列中。我的结构如下:
struct _img_info {
char name[40];
Mat des;
} * img_info;
我可以计算垫子温度,然后尝试在_img_info中处理其内容,但是我得到了分段错误。我的转储代码是这样的:
img_info mydes = (img_info)malloc(sizeof(struct _img_info));
Mat fg2(2,3,CV_32F,2);
mydes->des = fg2.clone ();
cout << mydes->des << endl;
你能告诉我如何在结构中操作垫子类型吗?谢谢。
在这里小心!
:Mat fg2(2,3,CV_32F,2);
你可能预料到,Mat 会用 Scalar(2) 初始化,但它将 2 作为指向外部数据的(不存在的)指针;( [可能是克隆(),而不是赋值,因此崩溃了]
而是使用 :
Mat fg2(2,3,CV_32F,Scalar(2.0)); // explicit value
// or even:
Matx23f fg2(2.0,2.0,2.0,2.0,2.0,2.0);
在这种情况下,您可能不需要 clone()
另外,由于您的结构包含 C++/RAII 对象,请不要使用 malloc/free ,而是使用 new/delete,否则不会调用 Mat 的析构函数。
相关文章:
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 重载操作程序时出错>>用于类中的字符串 memebr
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 对字符串进行位操作
- 概念中的cv限定符需要表达式参数列表
- 我可以在 C++ 中的函数体之外进行操作吗?
- MPI突然停止了对多个核心的操作
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 对字符数组中的元素执行逐位操作
- 如何在directx/c++中进行平移/缩放操作
- 逐位操作的隐式类型转换
- 为什么一个向量上的多线程操作很慢
- 将CHW格式的浮点向量转换为cv::Mat
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 错误的cv::face FacemarkLBF实例化
- 位移操作和位掩码未检测到重复字符
- 如何进行特定的位操作?
- 将std ::向量复制到CV :: Mat_的行操作相同
- 如何在 C++ 的结构中操作 cv::mat 实体
- 这样操作cv::Mat的内部缓冲区安全吗