lua手动添加Opencv Mat对象

在lua的userdata中分配内存

使用c++的placement new 调用 Mat 类的构造函数,把对象分配在lua的userdata空间中

Mat的生命周期由lua虚拟机管理,跟随lua变量生命周期

复制代码
void createMat(const std::string& filename,Mat *result) {
	Mat img = cv::imread(filename, cv::IMREAD_COLOR);
	Mat* mat2 = new(result) Mat();
	*mat2 = img;
}

//在lua中申请内存
Mat* luaImage = static_cast<Mat*>(lua_newuserdata(L, sizeof(Mat)));
createMat(filename, luaImage);
相关推荐
沐知全栈开发7 分钟前
Chart.js 饼图详解
开发语言
码云数智-大飞11 分钟前
迈向 99.99%:高可用系统架构的哲学与实战
开发语言
Amnesia0_012 分钟前
类型转换和特殊类
开发语言·c++
always_TT13 分钟前
static关键字初探
java·开发语言
格林威21 分钟前
C++ 工业视觉实战:Bayer 图转 RGB 的 3 种核心算法(邻域平均、双线性、OpenCV 源码级优化)
开发语言·c++·人工智能·opencv·算法·计算机视觉·工业相机
2401_8512729924 分钟前
C++中的模板方法模式
开发语言·c++·算法
2401_8942419224 分钟前
C++中的策略模式进阶
开发语言·c++·算法
Lewiis28 分钟前
Go语言的错误处理机制
开发语言·后端·golang
.select.30 分钟前
C++ 右值引用
开发语言·c++
2401_8747325331 分钟前
C++中的装饰器模式
开发语言·c++·算法