-
DLL的加载及卸载方法
DLL使用 使用DLL时,因为加载后默认会将文件占用,但是算法SDK那边存在需要实时修改替换的需求,前期未发现好方法,只有通过多进程方式进行读取释放,近期发现一个方法可以解决,故将解决办法进行一次记录 from ctypes import * .... 其他代码块 .... if self.dll_server is None: options = QFileDialog.Options() options |= QFileDialog.ReadOnly # Set read-only mode if needed file_filter = "Back files (*.dll)" selected_file, _ = QFileDialog.getOpenFileName( self, "选择文件", ".", file_filter, options=options ) if selected_file: self.dll_icon.setIcon(FluentIcon.DELETE) self.dll_server = CDLL(selected_file) else: self.dll_icon.setIcon(FluentIcon.FOLDER_ADD) # 重点卸载方法,实测有效 windll.kernel32.FreeLibrary(c_void_p(int(self.dll_server._handle))) self.dll_server = None...
-
快速转换byte中无符号有符号不同长度的解析方法
结构数据转换...
-
python 创建快捷方式
记录一次obs软件pthon内部调用方法...
-
Python导包自动排序工具
python使用过程中导包的一些自动格式化工具 遵循标准库> 第三方库 > 自定义库的顺序导入 pipenv shell pip install usort usort format main.py # 整理包...
-
Git Commit提交说明记录
提交类型 feat:引入新功能 ✨ (火花) fix:修复bug 🐛 (bug) style:更新UI样式文件 💄 (口红) format:格式化代码 📦 (包裹) docs:添加/更新文档 💬 (发言) perf:提高性能/优化 ⚡️ (闪电) init:初次提交/初始化项目 🎉 (庆祝) test:增加测试代码 ✅ (复选框) refactor:改进代码结构/代码格式 🎨 (调色板) patch:添加重要补丁 🚑 (急救车) file:添加文件文件夹 📄 (文件) publish:发布新版本【版本号】 🍱 (便当) tag:发布版本/添加标签 🔖 (书签) config:修改配置文件 🔧 (扳手) git:添加或者修改.gitignore文件 🙈 (非礼勿视) chore:构建过程或服务工具的变动 💚 (绿心) ci:对CI配置文件和脚本的更改 👷 (工人) revent:恢复(Revert a commit),将这次提交的修改给还原 ⏪ (后退) fire:移除文件文件夹 🔥 (火焰) ...
-
Centos7 安装Python3.10
centos下环境部署记录...
-
Nuitka使用指南
nuitka编译工具的使用,确实提高了一点效率,不过编译速度要慢不少...
-
Opencv-python开发视频播放器的部分BUG
使用Opencv播放视频时提高分辨率卡顿解决 当分辨率配置成19201080时卡顿,当时配置成19001080时就完全不卡顿,并且视频也会自动视频适配1920*1080 if self.cap is not None: self.cap.release() # 需要重新载入新的摄像头 self.outLabel.setPixmap(QPixmap('')) self.outLabel.setText("加载中,请稍候...") # self.cap = cv2.VideoCapture(self.index, cv2.CAP_MSMF) self.cap = cv2.VideoCapture(self.index) # self.cap = cv2.VideoCapture(self.index, cv2.CAP_DSHOW) # width = self.cap.get(cv2.CAP_PROP_FRAME_WIDTH) # self.video_h = self.cap.get(4) # self.video_w = self.cap.get(3) self.cap.set(3, 1900) self.cap.set(4, 1080) import cv2 as cv if __name__ == "__main__": cap = cv.VideoCapture() cap.open(1, cv.CAP_DSHOW) # 我这里0为电脑自带摄像头,1为外接相机 cap.set(cv.CAP_PROP_FOURCC, cv.VideoWriter_fourcc('M', 'J', 'P', 'G')) cap.set(cv.CAP_PROP_FRAME_WIDTH, 1900) # 解决问题的关键!!! cap.set(cv.CAP_PROP_FRAME_HEIGHT, 1080) cap.set(cv.CAP_PROP_FPS, 30) while True: if not cap.isOpened(): print('can not open camera') break ret, frame = cap.read() # 读取图像 if not ret: # 图像读取失败则直接进入下一次循环 continue cv.namedWindow("cv_test") cv.imshow('cv_test', frame) my_key = cv.waitKey(1) # 按q退出循环,0xFF是为了排除一些功能键对q的ASCII码的影响 if my_key & 0xFF == ord('q'): break #释放资源 cap.release() cv.destroyAllWindows() 使用Opencv播放视频时,第一次打开太慢 通过使用cv2.CAP_DSHOW协议可以秒开,我这里使用USB摄像头部分使用系统默认驱动无法打开,得使用微软的协议cv2.CAP_MSMF 不过通过实测,安装AMCAP视频驱动后这些USB摄像头就可以使用cv2.CAP_DSHOW协议秒开了 self.cap = cv2.VideoCapture(self.index, cv2.CAP_DSHOW) 针对每次开机后服务都不启动,我将安装的驱动文件包内文件排查后发现,服务使用Paizhao.exe安装包启用,所以我将安装包全部拷贝至项目目录,并命名为Camera 通过每次启动上位机执行调用服务,让系统默认支持,同时规避了每次在相同系统下需要安装的问题 import subprocess ........ if __name__ == '__main__': # 解决打包不允许执行多进程的bug multiprocessing.freeze_support() # 尝试启动Camera驱动 # noinspection PyBroadException try: subprocess.Popen(r"./Camera/vista_xp64/Paizhao.exe") except Exception as e: logger.warning("启动摄像机驱动失败%s" % e)...
-
搭建一个离线的markdwon文档编辑器
挺好用的,可以直接绑定到git空间进行修改上传,同时可以访问chartgpt docker pull mafgwo/stackedit:5.15.20-5 docker run -itd --name stackedit -p 8000:8080 -e LISTENING_PORT=8080 -e ROOT_URL=/ -e USER_BUCKET_NAME=root mafgwo/stackedit:5.15.20-5 ...
-
多进程程序使用Pyinstaller打包注意事项
打包时的注意事项 打包时使用共享元组,会一直创建最后系统崩溃的bug 打包时多进程服务会自动启动另一个窗体的bug 使用multiprocessing.freeze_support()添加至main方法下第一行解决该问题,如下示例 if __name__ == '__main__': # 解决打包不允许执行多进程的bug multiprocessing.freeze_support() app = QApplication(sys.argv) loading = QMovie("./static/loading.gif") splash = MovieSplashScreen(loading) splash.show() # 打包存在bug share_memory = Manager() RESULT_FILTER = share_memory.dict() start = time.time() while loading.state() == QMovie.Running and time.time() < start + 1: app.processEvents() windows = AppMain() # 启动异步队列接收UDP返回的数据 receive = GetData() receive.data_Signal.connect(windows.receive) receive.start() windows.show() splash.finish(windows) app.exec() ...