
Python&C++混合编程
文章平均质量分 89
虚坏叔叔
「虚幻私塾」
展开
-
Python&C++相互混合调用编程全面实战-35重载qt显示视频窗口完成图像设置和视频绘制
作者:虚坏叔叔博客:https://xuhss.com打开qt设计师绘制视频效率低,可以使用。拖动到窗口,修改名称为将打开按钮放到前面:宽度和高度都调整为中修改视口大小:为了控制窗口,需要提升view在中添加类用于重载修改修改三、Python调用SetImage实现图像显示修改,调用SetImage来在线程中显示图像修改添加函数,用于被python调用这里需要引入头文件路径由于需要用到,所以需要在中,将改为public变量在构造函数中注册进去,这样python才能g狗调用到在类中,需要控制原创 2022-07-03 08:10:43 · 980 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-34完成扩展库pyffmpeg尺寸转换空间申请释放和处理
作者:虚坏叔叔博客:https://xuhss.com添加成员变量用于存储输出的图像数据在中, 分配这块内存在函数中释放这块内存然后在函数中开始尺寸格式转换解码到尺寸格式转换就成功了。原创 2022-07-02 22:24:33 · 469 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-33完成扩展库pyffmpeg的尺寸和像素格式转换上下文初始化
作者:虚坏叔叔博客:https://xuhss.com添加成员变量 尺寸格式转换上下文对应的解码函数支持修改宽高完整代码如下:添加头文件包含。因为要引入修改视频宽高的api库文件添加:对应的解码函数的实现完整代码如下:二、修改导出接口,支持python调用由于添加了2个参数,修改导出的注册三、Python传递默认宽高给解码函数中添加宽高的调用:运行:只能保证没有出错。现在还看不到效果。关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。原创 2022-07-02 17:28:59 · 1004 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-32完成python调用扩展库pyffmpeg的decode解码函数
作者:虚坏叔叔博客:https://xuhss.com添加函数和成员变量完整代码如下:添加代码:包括avframe申请以及帧数据的清理完整代码如下:二、开放解码器调用接口 开放接口添加接口的调用和注册:三、python调用解码函数调用解码函数运行:可以看到一开始的几帧解码失败,这是正常的,后面就解码成功了。关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!...原创 2022-07-02 16:16:16 · 459 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-31完成扩展库中打开ffmpeg解码器
作者:虚坏叔叔博客:https://xuhss.com添加成员变量添加用于释放上下文:完整代码如下二、分配解码器并完成解码器相关内存释放XFFmpeg.cpp添加open和close函数的实现open函数的实现Close函数实现那:完整代码如下PyFFmpeg.cpp中添加Close函数的调用:运行后,你会发现,解码器上下文加载成功关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!...原创 2022-07-02 10:44:51 · 295 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-30开启线程调用pyffmpeg扩展库的Read读取视帧函数
作者:虚坏叔叔博客:https://xuhss.com添加读取视频帧函数添加函数实现开放接口,方便python调用开放接口的实现添加实现和注册添加对接口的调用二、开启线程调用扩展库接口2.1不开启线程调用构造函数中调用函数调用 这里不开启线程运行,你会发现一直输出,并且主线程卡死,因为是在一个线程中,的函数有一个循环,不会退出的循环。添加一个线程函数,并将执行函数的代码放到这个线程中在执行,界面出来了:点击打开按钮 发现程序崩溃了:在中函数中添加锁再次运行就不会崩溃了。修改 将读取视频原创 2022-07-02 07:20:18 · 587 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-29导入pyffmpeg扩展库完成视频的打开
先将上节课做好的复制,重命名为修改库的输出文件为:可以看到 编译后,库就到了PyPlayer项目中了 就可以在pyqt.py中使用这个库了。运行项目,发现 加载失败:需要将所有的的拷贝到项目中:可以看到这个我们做的扩展库就导入成功了:由于后面要一起开发,包括扩展库,所有我们可以在这个解决方案中引入这个项目:中调用扩展库接口可以看到视频被成功的打开了。关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资...原创 2022-07-01 06:02:37 · 335 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-28完成python调用扩展库实现视频信息读取
作者:虚坏叔叔博客:https://xuhss.com通过ffmpeg读取视频总时长运行:添加成员变量添加设置成员变量PyFFmpeg.h添加GetTotalms函数添加实现和注册testmod.py添加对扩展库接口的调用可以看到成功在python中读取到。本文完成python调用扩展库实现视频信息读取 。如果觉得文章对你有用处,记得 一波哦,博主也支持为铁粉丝制作专属动态壁纸哦~关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容原创 2022-06-30 22:36:42 · 347 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-27创建XFFmpeg类导入ffmpeg相关库
testmod.py添加调用:运行:添加类 代码如下:代码如下:代码如下:代码如下:三、引入ffmpeg库到项目中将上上课下载好的文件拷贝、 目录:lib库靠椅只拷贝32位:直接拷贝dll到项目目录:附加包含目录添加附加库目录:附加依赖库添加打开视频 解封装xxFFmpeg.h如下:xFFmpeg.cpp如下编译报错:需要调整:高级-》映像具有安全异常处理程序运行:提示没有文件将放进去,下节课就可以正常播放了。关注下面...原创 2022-06-29 22:54:27 · 221 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-26完成扩展库PyFFmpeg对象创建、初始化和析构
添加头文件二、源文件实现源文件如下三、python调用运行扩展库编译通过,然后在中引用:运行 程序:可以看到创建成功并且空间也已经分配,模块的构造函数别调用,冰鞋析构时内存也得到了释放。关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!...原创 2022-06-29 05:44:10 · 291 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-25基于ffmpeg扩展库示例环境项目创建和调用
作者:虚坏叔叔博客:https://xuhss.com下载 32位链接: https://pan.baidu.com/s/1Xb7EK9-QfLBKqOFdeaJ1Og 提取码: 9j5e创建一个项目创建空项目的。设置成Release x86。添加一个添加 添加 此时编译,可以正常通过。添加一个c++中添加提示输出:添加项目调试参数调整输出文件的路径:运行 就可以看到创建成功了关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自原创 2022-06-28 06:24:10 · 321 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-24QT按钮事件的Open槽函数中调用python函数
作者:虚坏叔叔博客:https://xuhss.com开发选择文件的接口给python调用。下面贴出全局的打开对话框的方法二、添加槽函数双击文件,打开Qt设计师, 添加一个按钮:接着为这个控件添加一个槽函数在C++的PyPlayer.h中添加槽函数的定义:它的实现就是调用python中的opoen函数运行一下:可以看到控件绑定成功了:在pyqt.py中添加open函数的定义:C++端通过PyPlayer::Open()调用上面的python的open函数:四、传递C++编写的全局函数opend原创 2022-06-26 21:42:05 · 1093 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-23c++读取python的配置项改变窗口大小和标题
python中的模块定义配置项这里为了防止编码问题,用vscode打开编辑在C++代码中获取python配置项运行:可以看到窗口大小被成功修改了端添加标题的读取:运行可以看到成功修改了的标题关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!...原创 2022-06-26 17:03:47 · 349 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-22完成Qt项目创建并引入python
创建一个项目:选择:为了后面调试的方便,将子系统设置为:从之前的项目,将的环境拷贝到中:添加,引入的头文件目录:初始化的环境三、载入pyqt模块添加文件的内容如下:在端载入模块:可以看到载入模块成功了:关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!...原创 2022-06-26 15:39:38 · 1344 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-21依赖的QT环境安装和信号槽机制的讲解
QT有2种编程方式,一种是基于,另一种是基于。如果你是在或者,可以直接使用,如果是在,推荐使用。为什么不用,相对于其他的开发集成环境而言,你在实际开发中用过就会发现会觉得很好用,但是相对于vs而言就是个弟弟。比如项目基于,它经常有些编译没生成,会出现一些,相对而言的少很多,而且调试和配置第三方库的时候,更加便捷。如果用vs的话,需要下载:qt的话建议下载5.9,它是长期维护版本:二、QT环境安装双击安装版本:点击下一步后选择一个安装目录:在vs...原创 2022-06-26 08:07:28 · 608 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-20python+QT+ffmpeg综合项目实战的需求和需要用到的库
作者:虚坏叔叔博客:https://xuhss.com我们的最终项目名称叫做PyPlayer,它基于以下库开发具体的PyPlayer会实现那些东西呢?我们的目的不是做一个功能复杂的软件,而是将C++调用Python的架构搭建起来,在这个过程中,我们不去考虑设计模式,主要是考虑呈现方式简单,这样可以方便大家做二次重构,这里并没有做过多的面向对象的东西。主要是未能让大家能够更加的理解项目的特性,过多的封装会增加理解的难度。我们的项目都将类堆在QT的类中,生产环境下是一定不会这样做,生产环境下会将必要的接口开放原创 2022-06-20 06:36:20 · 412 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-19c++给python传递函数和自定义模块
通过传递模块给python的主模块,你就可以在c++中导入模块,这样的话给用户的假象就是我的脚本可以自带很多模块,不需要每次都引入模块。就可以直接用了。四、总结本文讲解了c++给python传递函数和自定义模块 。如果觉得文章对你有用处,记得 ...原创 2022-06-19 20:07:10 · 990 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-18c++给python传递变量的两种方法
运行结果:python代码test.py中添加变量打印,这时变量count需要从c++端传递过来c++添加变量的定义并传递运行四、总结本文使用c++给python传递变量的两种方法 。如果觉得文章对你有用处,记得 一波哦,博主也支持为铁粉丝制作专属动态壁纸哦~💬 往期优质文章分享C++ QT结合FFmpeg实战开发视频...原创 2022-06-19 16:22:55 · 1206 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-17C++调用python函数并传递list参数并获取返回
作者:虚坏叔叔博客:https://xuhss.com在test.py中添加函数:在c++中调用这个函数運行:可以看到成功調用了。在中添加函数:在C++中調用結果可以看到调用成功了,将传递的列表输出出来,返回值也可以输出出来。四、总结本文使用C++调用python函数传递list参数并获取返回。如果觉得文章对你有用处,记得 一波哦,博主也支持为铁粉丝制作专属动态壁纸哦~💬 往期优质文章分享C++ QT结合FFmpeg实战开发视频播放器-01环境的安装和项目部署解决QT问题.原创 2022-06-19 08:04:55 · 1587 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-16c++调用python的类实例化对象访问成员函数和成员
作者:虚坏叔叔博客:https://xuhss.com在中添加一个类,用于被C++调用访问:二、C++中调用类的成员函数运行:可以看到输出了想要的字符串修改中的类中的函数test的参数和返回值:C++添加对单参数的Python类的调用运行:添加中的类成员变量C++添加对Python类成员变量的访问运行:六、总结本文介绍了c++调用python的类实例化对象访问成员函数和成员。如果觉得文章对你有用处,记得 一波哦,博主也支持为铁粉丝制作专属动态壁纸哦~💬 往期优质文章分享.原创 2022-06-19 07:20:04 · 7266 阅读 · 1 评论 -
Python&C++相互混合调用编程全面实战-15C++读取python脚本中的dictionary字典变量以及它的键值对
作者:虚坏叔叔博客:https://xuhss.com在中定义一个字典,用于C++的读取二、C++获取python主模块在C++中,可以根据名称获取字典,在获取名称之前,首先需要获取主模块。主模块可以通过获取。下面代码中的就是获取到的主模块。这里返回的指针都是需要开发者手动清理的。关键代码如下:三、获取字典对象以及它的键值对获取到模块之后 根据模块和变量名称来获取对象。获取到字典变量对象conf后,就可以操作conf获取到它的键值对。关键代码如下完整代码如下:F5运行可以看到成功获取了:关注下原创 2022-06-18 17:13:41 · 2092 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-14c++运行python脚本文件和脚本字符串并增加异常处理
作者:虚坏叔叔博客:https://xuhss.com这个脚本在哪里执行?它和下一次的脚本执行是否有关联。其实它是执行在__main__模块,你去找main模块就能够找到脚本的执行。可以执行下面的语句,打印出来当前是在哪个模块执行的:调用错误的脚本来获取它的返回值:创建一个文件Python文件的创建最好用vscode创建,因为Python3是默认编码为unicode,而visual studio创建出来的文件的编码默认为GBK,vscode默认编码为unicode,notepad++默认编码也是G原创 2022-06-18 08:27:55 · 499 阅读 · 1 评论 -
Python&C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化
作者:虚坏叔叔博客:https://xuhss.com前面讲解的和的入口都是在Python端,有些项目是由C++主导的,如何引用Python作为脚本解析器呢?2种方式,端可以完全包含脚本,也可以分开去查找电脑上的已安装脚本,但是查找电脑上的安装脚本风险很大,主要是版本不一致。所以我们会将整个编译和运行环境都包含在项目中。打开,创建控制台应用程序添加一个文件2.2 准备Python环境安装Python3.7环境后:1.拷贝include文件夹2.拷贝Lib文件夹3.以及python37.lib4.和Py原创 2022-06-18 07:41:30 · 1166 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-09Python源码实战编译windows环境准备和源码目录结构
作者:虚坏叔叔博客:https://xuhss.comwww.python.org搜索到python3.7.0社区版编译。默认使用debug版本的32位,因为我们的程序都编译的32位,使用Debug是为了后面方便调试Python源码。PYTHONHOME=D:\Python-3.7.0\PATH添加一条路径:D:Python-3.7.0\PCbuild\win32(通过这个路径可以找到引用库扩展库)添加注册表:二、安装实战假设你的电脑已经安装好了vs2015以及win10sdk。将官方提供的Pyth原创 2022-06-11 09:13:34 · 396 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-07Python调用 Windows系统函数
作者:虚坏叔叔博客:https://xuhss.com这部分函数只有在中调用 而且涉及到后面的也需要用到这种类型。是一种调用约定,是一种参数传递和返回值清理的规则,众所周知,所有语言都可以编译成库,如何要沟通,大家就需要有一致的入栈和出栈的方法。为什么中需要专门拿出来说明呢?因为大部分函数默认都是 的调用约定。什么时候需要使用 ? 一般是传递给做参数,有些函数要求是这种类型的调用约定:调用方式:这种调用方式不是跨平台的,只是针对于。除了定义 来调用自己定义的函数外,下面来学习如何通过直接调用内部的。原创 2022-06-07 20:03:27 · 606 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-06Python通过create_string_buffer给c语言传递可修改字符串
作者:虚坏叔叔博客:https://xuhss.com早餐店不会开到晚上,想吃的人早就来了!😄Python通过create_string_buffer给c语言传递可修改字符串一、测试字符串在c语言中修改后 会否影响Pythonstring和byte在Python中不支持修改,但是,如果传递到c语言中要能不能被修改,实测时发现是可以修改的。可以来修改试一试,只针对于byte类型,在Python中打印提示:print(“in python str1=”, str1)print("Tes原创 2022-05-10 20:02:09 · 1820 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-05ctypes给c函数传递char字符串和wchar_t宽)
作者:虚坏叔叔博客:https://xuhss.com早餐店不会开到晚上,想吃的人早就来了!😄ctypes给c函数传递char字符串和wchar_t宽)一、api介绍Python有2种字符串 string 和 byte。byte对应的是普通char*,是ascii存放。分别通过c_whar_p() 以及 c_char_p() 存放。creat_string_buffer()string 和 byte都是只读类型 要想在c语言中可以修改,就必须调用creat_string_buffer()原创 2022-05-07 20:26:05 · 2573 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-04传递数字参数
C++支持传递参数// C++ 中编译c格式的函数,如果用c语言编译就不需要(文件后缀名.c)// __declspec(dllexport)函数导出到库中#include <stdio.h>extern "C" __declspec(dllexport) void TestCtyps(int x, float y, bool isNum){ printf("In C TestCtypes %d %f %d\n", x, y, isNum); if (isNum) { pri原创 2022-05-05 20:25:15 · 578 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-03ctypes类型对应
作者:虚坏叔叔博客:https://xuhss.com早餐店不会开到晚上,想吃的人早就来了!😄在传递参数时,需要将python的类型转换成c语言支持的类型,接收返回值时,需要将c语言支持的类型转换成python的类型。这里就需要知道2种类型之间对应的关系。一、c语言转换到python字符串类型1. 单个字符ctypes typeC typePython Typec_charchar1-character stringc_wcharwchar_t1-ch原创 2022-05-04 16:31:08 · 3449 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-02使用Python的ctypes调用的windows的dll动态链接库
作者:虚坏叔叔博客:https://xuhss.com早餐店不会开到晚上,想吃的人早就来了!😄一、下载VS2015和PyCharm1.1下载visual studio2015VS2015 社区版(Community)百度网盘下载地址:链接:https://pan.baidu.com/s/1n5aZIBusu3uCtPPVOFQzZg提取码:g73q或者直接百度vs2015免费社区版下载即可。1.2.下载Pycharm和PythonPycharm百度搜索pycharm社区版下载pyt原创 2022-05-04 11:42:48 · 2499 阅读 · 0 评论 -
Python&C++相互混合调用编程全面实战-01ctypes库介绍和windows下编译动态链接库的说明
一、ctypes方案介绍本文介绍Python Ctypes,它是联合编程的一种方案,这种方案算是最简单的,它对环境配置要求不高,Ctypes是独立编程的,它是标准的动态链接库,与Python版本无关,Python2.7之后就提供了这样的接口,它可以让windows、linux、mac之间的动态库都可以被Python访问。另一种联合编程方案扩展库就和Python版本相关了。二、ctypes方案的应用比如和硬件的结合项目,这时调用底层接口用不了太多的内容,比如说你做嵌入式设备,调用底层驱动程序接口,比如原创 2022-05-04 08:21:00 · 3172 阅读 · 0 评论