python调用dll动态链接库返回多个参数_python怎么在调用dll的时候返回多个值?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

import scipy.io as scio

import os

import ctypes

import datetime

import numpy as np

#读取dll文件

#这里的地址目录是HessianFilter.dll所在的文件夹

start = datetime.datetime.now()

cur_path = os.path.dirname(r'C:\Users\Administrator\Desktop\code_and_data\code\HessianFilter\')

dll_path = os.path.join(cur_path,'HessianFilter.dll')

print dll_path

dll = ctypes.windll.LoadLibrary(dll_path)

#读取mat文件,Mat文件所在的文件夹中读取

matPath = r'C:\Users\Administrator\Desktop\code_and_data\data\Nodule19664.mat'

imgData = scio.loadmat(matPath)

#从mat文件中我们取到了整个三维数组

imgDataArray = imgData['imagetest1']

#得到数组文件的参数:宽,高,层数

widthSrc,heightSrc,sliceNumSrc = imgDataArray.shape

#声明一个三维的c_float类型的数组,用于存放mat数据,并将数据转化为c_float

imgDataArray_p = (((ctypes.c_float*sliceNumSrc)*heightSrc)*widthSrc)()

for i in range(widthSrc):

for j in range(heightSrc):

for k in range(sliceNumSrc):

imgDataArray_p[i][j][k] = ctypes.c_float(imgDataArray[i][j][k])

imgDataP = ctypes.POINTER(ctypes.c_float)(imgDataArray_p)

print '---------->'

#需要再声明两个返回值

HessianDot = (ctypes.c_float*(widthSrc*heightSrc*sliceNumSrc))()

HessianLine = (ctypes.c_float*(widthSrc*heightSrc*sliceNumSrc))()

HessianDot_p = ctypes.POINTER(ctypes.c_float)(HessianDot)

HessianLine_p = ctypes.POINTER(ctypes.c_float)(HessianLine)

#定义一个常数

sigma = ctypes.c_float(8)

#定义一个三维数组

imgSize = [widthSrc,heightSrc,sliceNumSrc]

imageSize = (ctypes.c_float*len(imgSize))(*imgSize)

#定义一个指向三维数组的指针

imageSizeP = ctypes.POINTER(ctypes.c_float)(imageSize)

#这个就是调用dll中的函数了

dll.RunHessianMultiThread(ctypes.byref(imgDataArray_p),sigma,ctypes.byref(imageSizeP),ctypes.byref(HessianDot_p),ctypes.byref(HessianLine_p),4)

print '--调用后-点数据--'

print HessianDot_p

print HessianDot_p[0:24]

#print HessianDot_p.contents

print '--调用后-线数据--'

print HessianLine_p

print HessianLine_p[0:24]

#print HessianLine_p.contents

print '\n\n'

print datetime.datetime.now()-start

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值