7 jianminfly

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 21w+

DirectX3d 9 实现3d lut滤镜效果

一、背景已经在OpenGL中实现了3Dlut滤镜,下面需要在DirectX中做实现二、方法一在d3d上下文中创建d2d对象,再用d2d的内建效果实现lut滤镜。原理https://docs.microsoft.com/en-us/windows/win32/direct2d/3d-lookup-table-effect实现demohttps://download.csdn.net/download/dustpg/7830947备注:这种方法用d2d可实现lut滤镜,但是d3d9不支持创建共享

2020-07-28 14:53:28

opengl纹理缩放的原理

一、背景用OpenGL处理3dlut映射的时候,lut滤镜数据输入到纹理后,不经过任何处理直接输出,图像两边会有错误的像素点出现,如下(更换了图片,以便验证结果的一般性)如上图,在边缘出现了模糊的颜色二、原因在我的测试demo中有以下代码设置纹理的属性// 当纹理坐标超出范围时,重复当前纹理glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE

2020-07-14 10:46:18

小白也能看懂的《数字图像处理》冈萨雷斯版中直方图均衡的公式

一、直方图均衡的目的通过一个变换函数T (r )将像素点映射到s,s中所有级数的像素点出现的概率相同二、公式推导公式1推导过程令fx(x)为pr®,fy(y)为ps(s),g(x)为T( r ),且其导数大于0,h(y)为g(x)的反函数,即h(y)=x由此,可以直接得到公式1公式2公式3推导1.连续函数介值定理2.积分中值定理3.变上线积分的求导把上面最后的结果写成变上线积分的形式,即b改成x,之前的x改成t,就得到变上限积分函数。然后定义一个点x0,用x->x0+

2020-07-01 15:13:17

const变量修改与volatile

一、背景有时候在写一些测试代码的时候,偶尔会出现需要修改const变量的操作,在通过指针或者引用修改const变量后,居然可以编译成功。于是就引起了困惑——既然可以修改,那const声明的意义何在呢?二、测试看下面的代码const int i = 12;int& j = (int&)i;j = 15;std::cout << i << " " << j;// 12 15将会输出 12 15.为什么呢(不使用引用,改成指针,结果也

2020-07-01 10:40:14

多种直方图均衡化的方法

一、理论1.直方图均衡直方图均衡的主要目的是让图片中各个灰度级数的像素数目相等,均匀分布,这样可以达到信息熵最大的目的,从而突出更多的图像细节。在医学领域应用广泛公式推导https://blog.csdn.net/spongebob1234/article/details/777787092.CLAHE1.直方图裁剪设定一个阈值threshold,当直方图中统计个数count大于threshold时,将count设置为threshold,然后将差值记录下来,累加,最后将差值除以256得到平均数

2020-06-30 20:11:55

图像处理中不注意内存对齐pitch的后果

1.首先了解pitch的概念pitch指的是每一行图像数据的字节数,比如一个宽100pix的图片用rgb格式存储,那pitch一般会等于100*3,但是,如果宽不为偶数,pitch可能不会等于width * <每个像素的字节数>,而是先把width取一个最近的偶数值,然后计算。类似ceil(width) * <每个像素的字节数>。—https://blog.csdn.net/hulingerlin/article/details/821205522.不注意pitch的后果假设

2020-05-28 10:59:45

OpenGL抠像之后用CPU与背景混合的操作

1.首先要明白OpenGL自身的混合操作//打开OpenGL混合,并设置为预乘模式混合glEnable(GL_BLEND);glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);while (!glfwWindowShouldClose(window)){ // input // ----- processInput(window); // render // ------ glClearColor(0.2f, 0

2020-05-19 22:11:51

C++ 读取UTF8编码,调试过程显示乱码问题

1.原因std::string不支持utf8编码,因此在调试器中看到的是乱码,并且使用一些不支持utf8编码的api判断该字符串对应的文件路径时,也会判定失败。所以要想在调试过程中正常显示utf8编码的中文内容,就要把字符串转换成gbk编码2.解决string UTF8ToGB(const char* str){ string result; WCHAR* strSrc; LPSTR szRes; //获得临时变量的大小 int i = MultiByteToWideChar(CP_UT

2020-05-18 09:58:25

OpenGL绿幕抠图原理

1。计算当前像素点RGB值对应的HSV值2。设定HSV三个分量的权重,根据权重计算当前像素点的HSV值到给定背景色的HSV值的欧式距离3。将欧式距离用smoothstep做平滑,0.5以下的一定要滤掉4。将原图和背景图用平滑值混合...

2020-04-28 20:37:41

记录一个ftp公网文件传输问题解决过程

记录一个ftp公网文件传输问题解决过程之前的模式是服务器和客户端均在同一内网,所以用port模式可在比较安全的模式下传输,但是如果需要在公网下访问并传输文件,这种模式就行不通,因为客户端和服务器端均处于nat后面,客户端发送给服务器的port报文里面携带的是私网IP,服务器端是无法通过这个IP建立连接的(但是在本地开发机上发送的port里面携带的地址是公网IP,此时可以通,可能是我的机器并没有处...

2020-04-24 16:20:11

信令服务器和打洞服务器里面一些杂乱的概念(持续更新)

1.首先是trickle-ice上面的测试结果的理解1 srflx 1 udp 116.25.147.192 14511 第一个nat映射的地址2 srflx 1 udp 116.25.147.192 14512 第二个nat映射的地址上述地址可用于stun1 relay 3 udp 47.112.189.57 529822 relay 3 udp 47.112.189.57 52654...

2020-04-17 10:50:40

简单的搭建一个计算token的node服务器

简单的搭建一个计算token的node服务器var http = require('http');const querystring = require("querystring");var url = require('url');const crypto = require('crypto');var server = http.createServer(function (requ...

2020-04-10 18:25:43

ffmpeg的一些用法,不定期更新

ffmpeg的一些用法,不定期更新宽度占一半,贴图ffmpeg.exe -i .\7200.mp4 -i .\640.png -filter_complex "[1]scale=360:-2[a],[0][a]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -y out7200.mp4FFmpeg drawtext添加文字和阴影样式d...

2020-03-25 10:55:34

使用ffmpeg在视频结尾插入图片

今天通过搜罗一些关于ffmpeg片尾加广告的功能,找到了几个解决方案1。使用OpenGL的转场,即gltranslation滤镜,可以直接使用编写好的OpenGL转场,实现片尾加广告参考连接:https://blog.csdn.net/JAVA_XCNH/article/details/1038587942。使用opencl 的xfade滤镜注:1中需要GPU支持,2需要编译时指定enabl...

2020-03-09 21:47:46

嵌套从属模板类型

今天在看spdlog的源码的时候,发现了一个重要的知识点——嵌套从属模板类型,示例代码如下struct synchronous_factory{ template<typename T> static auto create(T arg){ return 1; }};template<typename Factory = synchronous_factory...

2020-03-06 11:24:56

for循环中右值引用解析

经常看到有for(auto &&p : range)的写法,但是不知道为什么这里要用右值引用,今天深究了一下。vector< bool>的内存空间为节约存储,是按bit存储的,而不是byte,所以当vector< bool> c{false}; auto p = c[0] 时p的类型是一个std::vector< bool>:reference...

2020-02-26 21:39:46

aliyun ecs搭建ftp服务器的流程

1.创建ftp服务器的过程1.新建一个用于ftp操作的账户2.管理页面添加ftp必须的功能3.修改安全组,允许21/20端口入站4.ecs访问其他ecs时需把IP改为私网IP,否则连不上2.客户端指令通道建立1.InternetOpen—>InternetConnect数据通道建立(注意连接模式需设置为主动模式!)1.InternetConnect—>FtpGetFi...

2020-02-21 11:48:34

centos上发布flask程序踩的一些坑和解决

1.centos安装pip提示python-pip找不到sudo yum -y install epel-release 安装外部源yum install python-pip2.alternatives的使用1.设置优先级update-alternatives --install /usr/bin/python(符号链接) python(在alternatives里面的名称) /usr...

2019-12-14 15:46:35

Linux虚拟机编译webrtc

一、前言Android development is only supported on Linux.—https://webrtc.org/native-code/android/#二、资源清单1.Linux虚拟机 1G内存足够、100G硬盘空间、Nat模式网络连接2.翻墙工具 用熊杰的CatJsq3.教程 https://blog.csdn.net/ericbar/artic...

2019-09-04 10:59:50

关于std::vector<bool>类型使用下标运算符取值出错的研究

问题提出std::vectorv(1,true);void* p = &amp;v[0];// 此时p指向的内存转成bool类型是false但是std::vector v2(2,1);void* p3 = &amp;v2[0];// 此时p指向的内存转成int类型时,值正常分析1.一般类型的vector使用下标运算符时 _NODISCARD _Ty&amp; operator[...

2019-08-20 16:01:58

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享达人
    分享达人
    成功上传6个资源即可获取