opencv Mat 类型数据传递,出现访问冲突,有解决方法,但不知原因


Mat 类型数据传递

//函数功能:getDes 函数获取opencv的特征点描述符

void getDes(Mat& des)
{
	vector descriptors_float(128 * num);
	//前面代码省略。后面需要将 vector里的描述符转换成Mat 类型

	Mat temp(num, 128, CV_32F);
	temp = Mat(num,128,CV_32F,descriptors_float.data(),temp.AUTO_STEP);
	//cout<<"temp.rows:"<

结果在main中能正确获取到Mat。


问题:如果在getDes改为:

void getDes(Mat& des)
{
	vector descriptors_float(128 * num);
	//前面代码省略。后面需要将 vector里的描述符转换成Mat 类型


	des= Mat(num,128,CV_32F,descriptors_float.data(),des.AUTO_STEP);
	//cout<<"des.rows:"<


则在main中得不到正确的Mat,会出现错误:

.exe 中的 0x0fdcb961 处最可能的异常: 0xC0000005: 读取位置 0x02ce0040 时发生访问冲突
.exe 中的 0x0fdcb961 处有未经处理的异常: 0xC0000005: 读取位置 0x02ce0040 时发生访问冲突

目前不知原因是什么.........


你可能感兴趣的:(OpenCV,C/C++)