【python】调用DLL (基于PaddleX部署生成的dll)

写在前面

这篇文章是基于PaddleX生成的DLL,使用python调用。也可调用其他的DLL,都是同理的。

1、环境

  • python使用3.7版本,高版本容易出问题。不想踩坑就选3.7
  • 把用来推理的.py文件和DLL放在同一个目录下面(不易出错),模型和测试图像也复制过来。

2、源码

import os
import cv2
import numpy as np
from ctypes import *

# 本程序的根路径
base_dir = os.path.dirname(__file__)
print(base_dir)

dll = cdll.LoadLibrary('model_infer.dll')

# 模型和权重,这里加载你自己的模型
model_path = os.path.join(base_dir, '..\\..', "models/1/model.pdmodel")
params_path = os.path.join(base_dir, '..\\..', "models/1/model.pdiparams")
cfg_path = os.path.join(base_dir, '..\\..', "models/1/deploy.yaml")

# 测试图片,这里加载你自己的测试图片
image_path = os.path.join(base_dir, '..\\..', "static/img/test.jpg")

# 首先 销毁模型
dll.DestructModel()

# 初始化模型
dll.InitModel("seg".encode(),           # model_type: det, seg, clas, paddlex
              model_path.encode(),      # model_filename: Model file path
              params_path.encode(),     # params_filename: Parameter file path
              cfg_path.encode(),        # cfg_file: Configuration file path
              c_bool(True),             # use_gpu: Whether to use GPU
              0,                        # gpu_id: Specify GPU x
              "seg".encode())           # paddlex_model_type: det, seg, clas, paddlex


# 图像预处理
test_img = cv2.imread(image_path)
cv_img = cv2.resize(test_img, (512, 512), fx=0, fy=0, interpolation=cv2.INTER_LINEAR)
cv_img = np.transpose(cv_img, (2, 0, 1))
fake_input = np.asarray(cv_img)

# 输入图像
input = fake_input.ctypes.data_as(c_char_p)

# 定义输出结果变量,来接收输出结果
output = (c_char * 262144)()
pos = c_uint(0)

# 预测,调用C++的预测函数
dll.Seg_ModelPredict(input, 512, 512, 3, output, byref(pos))
print("结果:", pos.value)

# 销毁模型
dll.DestructModel()

3、运行结果

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值