前言: python不能直接调用C++只能调用纯C的DLL

此处案例是python模仿opencv的cv2包,但是用c的DLL调用

 

import os
import csv
import time
import ctypes
from ctypes import *
opencv = CDLL("opencv_world310.dll")

class IplTileInfo(Structure):
_fields_ = [] class IplROI(Structure):
_fields_ =[
('coi', c_int),
('xOffset', c_int),
('yOffset', c_int),
('width', c_int),
('height', c_int)
]
class IplImage(Structure):
def __repr__(self):
res = []
for field in self._fields_:
if field[0] in ['imageData', 'imageDataOrigin']:
continue
res.append('%s=%s' % (field[0], repr(getattr(self, field[0]))))
return self.__class__.__name__ + '(' + ','.join(res) + ')' IplImage._fields_ = [
("nSize",c_int),
("ID",c_int),
("nChannels",c_int),
("alphaChannel",c_int),
("depth",c_int),
("dataOrder",c_int),
("origin",c_int),
("align",c_int),
("width",c_int),
("height",c_int),
("imageSize",c_int),
("widthStep",c_int),
("BorderMode",c_int*4),
("BorderConst",c_int*4),
("colorModel",c_char*4),
("channelSeq",c_char*4),
("imageData",c_void_p),
("imageDataOrigin",c_char_p),
("imageId",c_void_p),
("roi", POINTER(IplROI)),
("maskROI", POINTER(IplImage)),
("tileInfo", POINTER(IplTileInfo))] loadimageFunc=opencv.cvLoadImage
loadimageFunc.argtypes =[c_char_p,c_int]
loadimageFunc.restype = POINTER(IplImage)
cvimage = loadimageFunc(mpath,2).contents pt=POINTER(c_char)
data=ctypes.cast(cvimage.imageData,pt) # 这里的转换非常重要

等同于

import os
import csv
import time
import cv2 #python opencv
import ctypes
from cv2 import *
from ctypes import * cvimage = cv2.imread(mpath, cv2.IMREAD_ANYDEPTH)
data=cvimage.ctypes.data_as(ctypes.POINTER(ctypes.c_char))

python 调用C的DLL案例的更多相关文章

  1. paip.java c# .net php python调用c++ c dll so windows api 总结

    paip.java c# .net  php python调用c++ c dll so windows api 总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来 ...

  2. Python调用C# Com dll组件实战

    之前公司有套C# AES加解密方案,但是方案加密用的是Rijndael类,而非AES的四种模式(ECB.CBC.CFB.OFB,这四种用的是RijndaelManaged类),Python下Crypt ...

  3. Python调用windows下DLL详解

    Python调用windows下DLL详解 - ctypes库的使用 2014年09月05日 16:05:44 阅读数:6942 在python中某些时候需要C做效率上的补充,在实际应用中,需要做部分 ...

  4. Python调用C的DLL(动态链接库)

    开发环境:mingw64位,python3.6 64位 参考博客: mingw编译dll: https://blog.csdn.net/liyuanbhu/article/details/426123 ...

  5. Python调用windows下DLL详解 - ctypes库的使用

    在python中某些时候需要C做效率上的补充,在实际应用中,需要做部分数据的交互.使用python中的ctypes模块可以很方便的调用windows的dll(也包括linux下的so等文件),下面将详 ...

  6. Python调用C++的DLL

    import os import sys from ctypes import * test = cdll.LoadLibrary('D:\Python27\py.dll') print test.A ...

  7. python调用c的方法

    虽然python是万能的,但是对于某些特殊功能,需要c语言才能完成.这样,就需要用python来调用c的代码了 具体流程: c编写相关函数 ,编译成库 然后在python中加载这些库,指定调用函数. ...

  8. Python调用C/C++动态链接库的方法详解

    Python调用C/C++动态链接库的方法详解 投稿:shichen2014 这篇文章主要介绍了Python调用C/C++动态链接库的方法,需要的朋友可以参考下 本文以实例讲解了Python调用C/C ...

  9. python 调用dll中c或c++语言的带指针方法,

    在项目开发中遇到了,python需要去调用一个动态链接库dll中的c++方法.这个方法的参数为一个指针类型的参数,一个bool类型参数, 在python中并未对数字类型进行区分. int LP_Agc ...

随机推荐

  1. springboot+ibatis 多数据源配置

    这个是boot基本版本包,因为我用的打包方式是war所以去除掉了boot内置的tomcat,但是为了方便测试又引入了内置tomcat,只要添加<scope>provided</sco ...

  2. springboot +mybatis 搭建完整项目

    springboot + mybatis搭建完整项目 1.springboot整合mybatis注解版 转:https://blog.csdn.net/u013187139/article/detai ...

  3. Java判断字符串是否有重复

      检测是否重复: public static boolean checkDifferent(String iniString) { boolean isbool = false; char[] ch ...

  4. 解决虚拟机centos7 无法无法上网问题

    centos无法上网问题 虚拟机设置 网段设置  网关设置 查看本地电脑设置 登录服务器设置  /etc/sysconfig/network-scripts/  下面的 ifcfg-ens33 文件操 ...

  5. osgi Quick Start

    今天有空看了下osgi,根据官网的说明来快速搭建一个服务,把步骤记下来. (官网地址:https://enroute.osgi.org/tutorial/020-tutorial_qs.html) 一 ...

  6. Notepad++的实用技巧

    一. 安装notepad + +  notepad++的下载.安装非常easy.下一步下一步,所有选项都默认就可以安装好.但有几点需要注意.   截止到写这篇博文,notepad++的最新版本为7.5 ...

  7. 解析HTTP报文——C#

    目前没有找到.Net框架内置的解析方法,理论上HttpClient等类在内部应该已经实现了解析,但不知为何没有公开这些处理方法.(亦或是我没找到)那么只能自己来解析这些数据了. public enum ...

  8. oo第四次博客

    一.测试与正确性论证比较 正确性论证是论证程序达到预期目的的一般性陈述,而该论证与程序输入数据的特定值无关,能够代表穷举性测试. 程序测试是指测试者特意跳出一批输入数据,通过运行程序,检查每个输入数据 ...

  9. 将jar包安装到本地repository中

    mvn install:install-file -Dfile=G:/lcn_springboot2.0/tx-plugins-db-4.1.2.jar -DgroupId=com.codingapi ...

  10. mysql 两张表的数据设置主外健关联删除

    image_group 主表 image 副表 alter table image add constraint fk_group_idforeign key (group_id)references ...