如何将 Mat(CV_32FC1) 复制到矢量<float>*
How to copy Mat(CV_32FC1) to vector<float>*
我想复制一个mat数据到向量。
那么,现在我要复制mat数据到"vector* Vf2"
我写了这个代码。
cv::Mat M=Mat(480,480,CV_32FC1,「the data ....」);
//copy vector to mat
vector< float> *Vf2;
//copy mat to vector
Vf2->assign((float*)M.datastart, (float*)M.dataend);
但是,在赋值方法时没有出现错误。
如果vector不是指针。
所以下面的代码成功。
cv::Mat M=Mat(480,480,CV_32FC1,「the data ....」);
//copy vector to mat
vector< float> Vf2;
//copy mat to vector
Vf2.assign((float*)M.datastart, (float*)M.dataend);
如何将mat复制到vector<float>* Vf2
谁来告诉我
对不起,精算师,我想做的是将mat数据复制到共享内存。我写了这样的代码
managed_shared_memory shmd(create_only, DEPTHNAME, WIDTH_PIC * HEIGHT_PIC * 4 + 1024);
std::vector<float> *ptrd=shmd.construct< std::vector<float> >("DepthImage")(); mxd->lock();
ptrd->assign((float*)decodedDepthData2.datastart,(float*)decodedDepthData2.dataend);
mxd->unlock();
为什么,我想将mat数据复制到向量*
您定义了指向vector<float>
的指针。然后你在没有分配的情况下访问它。你需要初始化指针:vector<float> *Vf2 = new vector<float>;
和访问它所指向的对象
完成后不要忘记释放它(delete Vf2;
)!或者考虑使用智能指针。
你不应该使用指向vector
的指针。
可以将/转换为vector
和Mat
:
#include <opencv2opencv.hpp>
#include <vector>
using namespace std;
using namespace cv;
int main()
{
vector<float> v1{1, 2, 3, 4, 5};
// vector to Mat
Mat1f m1(v1); // not copying data, just creating the matrix header
Mat1f m2(v1, true); // copying data
// Mat to vector
vector<float> v2(m2.begin(), m2.end()); // copying data
// If you really need a pointer to a vector, then
vector<float>* v3 = new vector<float>(m2.begin(), m2.end());
// ... do your stuff
delete v3;
return 0;
}
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 没有从阵列<float>到阵列<int>的可行转换
- 数组下标的类型"float*[float]"无效
- 没有合适的构造函数可以从"float"转换为"_D3DCOLORVALUE"
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- 将 **float array 从 C++ Dll 传递给 python
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- float* 已在 Gameobject.obj 中定义
- 如何将 qml 的文本转换为 float 和 int
- 为什么将 1 添加到 numeric_limits<float>::min() 返回 1?
- 有没有比static_cast更优雅的从int到float的演员阵容<float>?
- 编译器给出错误:format 指定类型 'float *',但参数的类型'double' [-Wformat]
- OPENCL 警告:不兼容的指针类型将'float __global[16]'传递给类型为 '__global float4 的参数 *
- 错误:无法将"float*"转换为"float"
- 如何在函数中将字符串和分数存储为(Int 或 float)
- 缩小从double到float的转换