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);
相关推荐
lingran__1 分钟前
数据在内存中的存储详解(C语言拓展版)
c语言·开发语言
编程乐学(Arfan开发工程师)1 分钟前
信息收集与分析详解:渗透测试的侦察兵 (CISP-PTE 核心技能)
java·开发语言·javascript·python
bugcome_com2 分钟前
深入解析 C# 中 int? 与 int 的核心区别:可空值类型的本质与最佳实践
开发语言·c#
superman超哥2 分钟前
仓颉语言中异常处理入门的深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
深蓝海拓7 分钟前
PySide6从0开始学习的笔记(十四)创建一个简单的实用UI项目
开发语言·笔记·python·qt·学习·ui·pyqt
祁思妙想18 分钟前
Python中CORS 跨域中间件的配置和作用原理
开发语言·python·中间件
与遨游于天地19 分钟前
深入了解 Java `synchronized`:从对象头到锁升级、线程竞争感知
java·开发语言·c#
yongui4783425 分钟前
基于C# WinForm开发的固定资产管理系统
开发语言·c#
阿蒙Amon28 分钟前
C#每日面试题-装箱和拆箱
开发语言·c#
天下一般29 分钟前
go语言设计模式<一>模板方法
开发语言·设计模式·golang