自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(318)
  • 资源 (9)
  • 收藏
  • 关注

原创 matplotlib 非阻塞显示

"""创建时间:2020-10-29 21:11最近一次修改时间:2020-10-29 21:11创建人:dss最近一次修改人:dss文档描述:串口数据的获取(用完之后记得关闭串口,不然下次获取的是缓存的数据)"""import serialimport numpy as npimport matplotlib.pyplot as pltfrom dataGlove.myData import parse_dataclass MySerial: def __init__(

2020-11-05 17:04:58 458 1

原创 pip install 使用国内镜像

让PIP源使用国内镜像,提升下载速度和安装成功率。对于Python开发用户来讲,PIP安装软件包是家常便饭。但国外的源下载速度实在太慢,浪费时间。而且经常出现下载后安装出错问题。所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成功率。国内源:新版ubuntu要求使用https源,要注意。清华:https://pypi.tuna.tsinghua.edu.cn/...

2019-01-15 22:13:36 84268 1

原创 win32 API 记录

GetClientRect 得到客户区大小GetWindowRect 得到窗口大小(客户区+非客户区)

2022-05-17 13:04:46 42

原创 Direct3D 11 总结 —— 10 变换

_mm_set_ps 是倒叙放置的,参考

2022-05-15 23:34:47 60

原创 Direct3D 11 总结 —— 9 通过键盘调整绿幕抠图阈值

介绍本文主要介绍如何通过键盘设置绿幕抠图的阈值,通过设置不同的阈值,看最终的结果。最终结果阈值为 0.9阈值为 0.2阈值为 0.5知识点获取键盘输入当键盘按下后,会给窗口的回调函数,传入 msg:WM_KEYDOWN 事件,并通过 wparam 参数,传入是哪个键按下了。然后窗口回调通过事件的方式通知到 Graphics。将阈值传到 shader 中directX 中有个常量值 vertex shader 和 pixel shader 都可以设置,说是常量值,但是该值是可以改变

2022-05-03 23:26:41 881

原创 Direct3D 11 总结 —— 8 实现简单的绿幕抠图效果

介绍绿幕抠图指将图片中的绿色扣去,并将该处的 alpha 分量设为 0,并将另外一张图片作为背景,以实现背景替换的功能,常用于电影和电视的制作场景。最终效果原始图片绿幕抠图后效果代码这一块的代码改动,主要在像素着色器 shader。ps shader本文只是实现了最简单的绿幕抠图,对于这种比较完美的图片,抠图效果较好,对于其他图片还有较大的优化空间。Texture2D tex : register(t0);SamplerState samplerLinear : register(s

2022-04-17 20:32:24 379

原创 Direct3D 11 总结 —— 7 实现透明效果

介绍当两张图片重叠的时候,可以一张完全盖住另外一张,也可以实现两张图片融合的结果。本文将对图片融合展开介绍。融合的公式如下 C=Csrc⊕Fsrc1ΘCdst⊕Fdst1\ C = C_{src}\oplus F_{src1} \Theta C_{dst} \oplus F_{dst1} C=Csrc​⊕Fsrc1​ΘCdst​⊕Fdst1​ A=Asrc⊕Fsrc2ΘAdst⊕Fdst2\ A = A_{src}\oplus F_{src2} \Theta A_{ds

2022-04-17 19:46:31 247

原创 Direct3D 11 总结 —— 6 绘制图片

介绍本文将在上文绘制的矩形中,绘制图片。主要步骤读取图片,并转化为纹理。将该纹理绑定到 Pipeline设置采样器,像素着色器通过该采样器对输出的纹理进行采样代码主要改动CreateWICTextureFromFile通过该函数将图片数据,读取到纹理中。 该函数来自于DirectXTex,引用了WICTextureLoader11.cpp / WICTextureLoader11.h主要向 pipeline 绑定了两个资源PSSetShaderResources读取图片到纹理,然后

2022-04-16 22:39:09 456

原创 Direct3D 11 总结 —— 5 绘制矩形

介绍本文,将在上文的基础上,绘制矩形区域。一般 direct3D 通过绘制三角形,拼成其他图像,对于矩形,本文将绘制两个三角形,以拼成一个矩形。代码主要修改点输入装配阶段一个是输入的坐标点数,之前是3个点,本文输入的 4个点。绘制2个三角形,有两种方式,一种是输入6个点,其中有2对点是一样的。另外一种方式是输入4个点,在加上6个索引点。绘制命令针对两种输入方式,有两个对应的绘制命令。m_pContext->Draw(6, 0); 通过输入顶点绘制6个点绘制图形m_pContex

2022-04-13 23:23:21 256

原创 Direct3D 11 总结 —— 4 绘制三角形

介绍本文主要介绍如何使用 direct3D 11 绘制三角形。pipeline 介绍从 msdn 的文章,可以获得 direct3D 的 pipeline 如下图所示,对于本文只需要设置红框内的部分。输入装配阶段在这里需要将顶点坐标、顶点数据是使用什么格式保存的(float 还是 int;是几位的等)、想要顶点组成什么图像(比如传入3个点,你可能就是想画3个点或者一条线和1一个点或者一个三角形等)顶点着色器阶段着色器就是 gpu 执行的代码,gpu 的特点是计算单元的算力有线,但是每个 gp

2022-04-13 00:06:30 379

原创 Direct3D 11 总结 —— 3 初始化 direct3D,并改变窗口颜色

介绍创建窗口成功之后,就要使用 direct3D 进行绘图,本节主要介绍,如何初始化 direct3D,并通过 direct3D改变窗口颜色。初始化 direct3D函数解释D3D11CreateDevice通过 D3D11CreateDevice 函数创建设备和上下文,device 主要用于显示是否支持某些特性和分配资源,context 主要用于设置渲染状态、将资源绑定到 pipeline 和 发出渲染命令。需要设置的参数有 使用的电脑上的哪个显卡(现在很多电脑上多有两块显卡,独立显卡和集成显卡

2022-04-10 19:28:11 482

原创 DirectX3D 11 总结 —— 2 win32 窗口 抽象为类

说明为了代码看起来清爽一点,将上篇文章中的代码进行封装,抽象为一个类。这篇的核心是HWND hWnd = CreateWindow(WindowClass::GetInstance().get()->GetName(), // 创建的窗口类名 TEXT("First Window"), // 窗口名称 WS_OVERLAPPEDWINDOW, // 窗口类型 200, 200, // 窗口起始位置 400,

2022-04-10 16:00:39 311

原创 DirectX3D 11 总结 —— 1 绘制 win32 窗口

directX 3D 是什么DirectX 3D是一种应用程序的接口(API),它可让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音的效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。简单理解就是 windows 为了方便开发者驱动显卡运行,定义了一套 API标志,封装了硬件之间的差异,提供开发者的开发效率。绘制窗口directX 3D 主要用于图像的显示,因此首先需要创建一个窗口用于显示

2022-04-10 00:47:10 259

原创 visual studio 窗口调试

使用 OutputDebugString 函数将调试信息打印到 visual studio 输出窗口。参考:https://blog.csdn.net/u012308586/article/details/92992951

2022-03-10 10:37:38 487

原创 if ((x - 0x01010101) & (~x) & 0x80808080) 理解

if ((x - 0x01010101) & (~x) & 0x80808080)为了说明方便,可以将 x 看成只有一个字节,则上面的问题可以简化为if ((x - 0x01) & (~x) & 0x80)先看 0x80 对应二进制 0b1000,0000 与该字节进行按位取与,只有在 (x-0x01) 和 (~x) 第8位都为1的情况下,该 if 条件才会成立。对于 (x-0x01) ,只有 x =0 或者 x>0x80,其第8位才为1。对于 (~

2022-03-01 22:29:03 117

原创 rtmp flv h264 整理

2022-02-27 23:56:28 49

原创 rtmp源码分析之RTMP_Write 和 RTMP_SendPacket

typedef struct RTMPPacket { uint8_t m_headerType; // chunk type id (2bit)fmt 对应message head {0,3,7,11} + (6bit)chunk stream id /*大部分情况是一个字节 uint8_t m_packetType; // Message type ID(1-7协议控制;8,9音视频;10以后为AMF编码消息) uint8_t m_hasAbsTimestamp; /* timesta

2022-02-27 22:21:46 199

原创 flv 格式

https://www.jianshu.com/p/7ffaec7b3be6这篇写的不错,后面有时间,在实战一下

2022-02-27 00:42:57 101

原创 h264 文件解析

获得 h264 文件ffmpeg -i test.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 test.264概述h264 数据是保存在 NALU 中的,但是 NALU 之间如何进行分割,常用的有两种方式,一种是 annexb模式,其通过在每个 NALU 前面加上 startcode (0x000001或0x0000001)分割 NALU。另外一种是AVCC模式,通过在 NALU 前面添加表示 NALU 长度的字节。本文使用 annexb 模式分析

2022-02-26 23:02:09 966

原创 libcurl 编译支持 https

libcurl 官网下载的库,不支持 https 协议前面两篇文献接受具体步骤,但是有个指令过时了,可以参考文献3.参考文献:https://www.cnblogs.com/yangyquin/p/5284530.htmlhttps://www.cnblogs.com/openiris/p/3812443.htmlhttps://blog.csdn.net/qq_33204646/article/details/70624170...

2022-01-27 15:29:43 1298

原创 ffmpeg 常用命令

1.从文件中获取音频数据和视频数据1.1 从文件中抽取音频数据ffmpeg -i test.mp4 -vn -acodec copy test.aac-i url (input) // 输入的文件地址-vn // 阻止文件中的所有视频流-acodec // 编解码器 https://blog.csdn.net/NewTWG/article/details/86393378 copy // 编码同原始音频ffmpeg -i test.mp4 -vn -acodec copy test.

2022-01-09 21:09:34 1163

原创 WAV 文件解析

1.概述wav 文件,原来存放音频的原始数据,即对 PCM 文件进行简单封装,在文件开头加上标识,并提供音频的声道数、采样频率和采样位数等信息,这样播放器解析这些数据就可以正常播放这段音频了。2.格式解析wav 文件一般由3个区块组成:RIFF chunk、Format chunk 和 Data chunk。RIFF chunk:主要说明本文件保存的是什么内容。Formt chunk:主要说明音频文件的格式Data chunk:主要记录音频的数据2.1 RIFF chunkID 固定死,填

2022-01-09 18:17:36 1674 3

原创 c++ 文件操作 常用内容总结

为了永久保存数据,或从之前保存的数据中获取数据。常常需要对文件进行操作,下面对常用的内容进行总结。1.打开和关闭文件要操作文件,首先要打开和关闭文件。c++ 有两种方式打开文件第一种:使用带有文件路径的构造函数,其内部会自动打开文件fstream file(filePath);第二种:先创建一个 fstream 对象,然后调用 open 函数,传入文件路径fstream file;file.open(filePath);两种方式关闭文件第一种:超出 fstream 对象作用域

2022-01-09 15:49:59 1261

原创 windows 上向 ffmpeg 提交代码

github 上直接 pull requests,不被 ffmpeg 接受,故使用下面的方法提交代码。1.订阅ffmpeg-devel邮件列表访问 ffmpeg-devel在1处填上你的邮箱(我是使用 163的邮箱),然后点击订阅就好了,密码和名字都是选填,我没有填。之后会给你邮箱发邮件,确认一下就好了。2.设置邮箱打开 .gitconfig文件,该文件在 c 盘的用户名下,也可以用 everything 搜索一下。然后填如下信息,[user] 和 [credentical] 是之前就有

2021-12-18 18:27:35 1003

原创 SDL demo 小结

最近学习 ffmpeg 例程,发现里面常用 SDL 库,进行开发。故最近找了个教程学习了一下,下面对学习的做个小结。1. 第一大坑: main 函数必须写成下面的形式,不然会报错。int main(int argc, char* argv[])应该是 SDL.h 对其进行了一些操作。看源码看到下面这两句,应该就是声明了 int main(int argc, char* argv[]),所以必须实现这个函数,不然就会报错。#define main SDL_mainextern SDLMAIN

2021-12-06 19:34:19 2467

原创 Visual Studio 编译 C1900 问题(P1”(第“aaa”版)和“P2”(第“bbbb”版)之间 Il 不匹配)

根本原因是使用的 lib 库文件有问题。具体问题可参考:https://blog.csdn.net/wuchen1004/article/details/115414179重新编译 lib, 把下面的全程序优化关闭

2021-11-19 14:13:46 613

原创 python tkinter 总结

1.以管理员身份运行import win32com.shell.shell as shellASADMIN = 'asadmin'if sys.argv[-1] != ASADMIN: script = os.path.abspath(sys.argv[0]) params = ' '.join([script] + sys.argv[1:] + [ASADMIN]) shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.execut

2021-11-09 10:18:18 525

原创 visual studio 创建 dll 文件

有两种 dll 函数导出方式。Create a module definition (.def) file and use the .def file when building the DLL. Use this approach if you want to export functions from your DLL by ordinal rather than by name.1.定义 .def 文件统一导出Use the keyword __declspec(dllexport) in

2021-11-04 11:05:39 570

原创 音视频——音频

layout 是 声道的分布,既考虑声道的个数,也考虑声道的分布。plane 是 声道的数量,只考虑声道个数。

2021-10-29 16:37:03 23

原创 win10 编译 ffmpeg 亲测有效

看本教程前,推荐先看一下视频的讲解,本文最后面的参考文献中有一个 b 站的视频,讲的不错,也可以自行搜索。编译软件需要:源代码和编译工具(源代码比较容易获取,也不会遇到太多问题,主要是编译工具的安装和使用会遇到各种问题)本教程需要你提前安装好 visual studio 。1. 源代码直接 百度、谷歌或者 github 里面搜索就好了。这边给个目前的网站: https://www.ffmpeg.org/ 如下图所示。如果代码不熟悉怎么下载的可以去 b 站搜索, ffmpeg 如何在 windo

2021-10-22 00:31:12 1051

原创 YUV420 总结 (YU12、YV12、NV12 和 NV21)

YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间。最常见的格式为 YUV420分为两种:YUV420P和YUV420SP。YUV420PYUV420P 为 plane平面模式,Y, U, V分量处于不同平面,即在 ffmpeg 中数据存放在 3 个数组中。其可再细分为 YU12 和 YV12 。YU12该格式的数据分布如下图所示,data[0] 中存放的是 Y 数据,data[1] 中存放的是 U 数据,data[2] 中存放的是 V 数据。其中 Y、U、V 颜色相同的为一

2021-10-18 23:38:15 1796

原创 python 拷贝文件

oldPath = r"D:\xxx"newPath = r"C:\yyy"files = [r"\aaa.exe", r"\bbb.node"]for i in range(len(files)): shutil.copyfile(oldPath + files[i], newPath + files[i])

2021-10-12 17:48:30 24

原创 python 关闭指定程序

import psutilTARGET = "xxx.exe"[process.kill() for process in psutil.process_iter() if process.name() == TARGET]

2021-10-12 17:46:54 624

原创 python 启动外部软件

方法 1ShellExecute(hwnd, op, file, args, dir, show)   hwnd: 父窗口的句柄,如果没有父窗口,则为0   op : 要运行的操作,为open,print或者为空   file: 要运行的程序,或者打开的脚本   args: 要向程序传递的参数,如果打开的是文件则为空   dir : 程序初始化的目录   show: 是否显示窗口im

2021-10-12 17:45:25 193

原创 模块对于 SAFESEH 映像是不安全的。

遇到如下问题在图中位置填入:/SAFESEH:NO 即可

2021-09-06 21:15:51 66

原创 错误 X3501 ‘main‘: entrypoint not found

资源文件->属性

2021-08-30 18:35:03 189

原创 wireshark 过滤 post 请求

1目前可以抓取 python 发送的 post 请求,但是抓取不到 node.js 发送的 post 请求主要参考下面这篇文章:https://blog.csdn.net/Enderman_xiaohei/article/details/99441895但是新版本没有SSL了,改为 TSL。(这个在 https://segmentfault.com/a/1190000023568902 这篇文献中可以找到)2然后用 http.request.method==“POST” 这个来过滤参考文献

2021-08-11 15:25:41 3022

原创 nv12转rgb

nv12 格式nv12 转 rgb 两种格式代码void NV12_T_RGB(unsigned int width, unsigned int height, unsigned char* Y, unsigned char* UV, unsigned char* rgb){ int r, g, b; int y, u, v; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { y =

2021-07-19 14:20:16 1457 1

原创 小番茄插件(VAssist)和Visual studio 自带,常用快捷键整理

命令功能Shift+Alt+O查找文件Shift+Alt+S查找某个变量名Shift+Alt+F找到所有引用某个字符串的地方Alt+G在声明和定义之间互相跳转Alt+O在.h文件和.cpp文件之间互跳Alt+Shift+R变量重命名,会找到所有使用该变量的地方Ctrl K+D自动整理代码格式...

2021-07-06 21:35:49 708

原创 通过 mpu6050加速度计算角度

通过 mpu6050加速度计算角度。网上看有两种公式,分别是下面这两种。两者看起来是不同的,起始互相不矛盾只是换了一个表达方式。比如下面这个三角形 tanθ=x/sqrt(y^2+z^2)cosθ=sqrt(y^2+z^2)/sqrt(x^2+y^2+z、^2) (其中sqrt(x^2+y^2+z^2)=1)所以cosθ=sqrt(y^2+z^2)yaw 角我感觉不能直接通过加速度获取,比如加速度计水平放置,你把加速度计缓慢绕着z轴旋转,yaw角在不断变化,但是加速度的各个值基本没变,ax

2021-01-16 22:17:34 3750

depthImg212.xml

html解析测试文件

2020-03-24

python百例题目.docx

python百例爬取下来的题目 100题 python百例爬取下来的题目 100题 答案在这里: https://www.runoob.com/python/python-100-examples.html

2019-09-02

opencv_python-3.4.0.12-cp27-cp27m-win-amd64.whl

opencv_python-3.4.0.12-cp27-cp27m-win-amd64.whl opencv_python-3.4.0.12-cp27-cp27m-win-amd64.whl opencv_python-3.4.0.12-cp27-cp27m-win-amd64.whl

2018-03-30

STM32F103C8T6模板1.1

STM32F103C8T6模板1.1 修复了一些小bug 修复了一些小bug

2018-03-26

遥控车系统release1.0

内附:遥控器和遥控车代码和PCB 亲测有用 PCB很多小BUG,各种飞线

2018-03-26

遥控器代码加PCB1.0

STM32F103CBT6 PCB 按键按起来不太舒服,之后换摇杆 没加稳压模块,电压采集模块没什么用

2018-03-25

2017年飞思卡尔程序

2017年飞思卡尔程序 有一定的封装概念 一定的注释概念 目前觉得注释废话太多了 指针没学好,不知道哪里有问题,有几个小BUG

2018-03-23

2016年飞思卡尔程序

2016年飞思卡尔程序 摄像头组 代码比较乱 当时没有封装的概念

2018-03-23

STM32F103C8T6模板1.0

整理了一个STM32编写框架 目前内容不够完善,搭了一个框架。 之后有添加的文件,按照这个框架填写,比较清晰

2018-03-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除