- 博客(413)
- 资源 (62)
- 收藏
- 关注
原创 C语言读取BMP文件
BMP图像编码BMP即bitmap,也就是位图,一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区。在图像数据之前,如图所示,共有54位数据其中,0x424d在十进制为19778,对应的ASCII码为BM,表示这是个bitmap文件。Windows的数据是倒着念的,这是PC电脑的特色。如果一段数据为42 4D,倒着念就是4D 42,即0x4D42。因此,如果bfSize的数据为A2 1E 04 00,实际上就成了0x00041EA2,也就是0x41EA2
2022-05-23 15:07:20 3496 3
原创 使用lambda在循环中传参时,参数总为同一个值
当我使用PyQt5时,需要在调用事件时传入参数,于是想到了lambda函数,代码如下: for i, button in enumerate(self.button_dict.values()): button.clicked.connect(lambda: self.click_checkbox(i))此时i都是同一个值。lambda函数(或称闭包)传递的不是参数的值,而是参数的物理地址,所以lambda传递的参数都会是同一个值。想要解决可以使用functools模块。解决方案
2022-04-28 13:29:51 542
原创 ES6 let 和 const 命令
let 基本用法let命令,用来声明变量。它的用法类似于varlet a = 10;var b = 1;不存在变量提升var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined// var 的情况console.log(foo); // 输出undefinedvar foo = 2;// let 的情况console.log(bar); // 报错ReferenceErrorlet bar = 2;暂时性死区ES6 明确规定,如果区块中存在let和co
2022-03-10 10:01:51 262
原创 Axios 使用说明
安装使用npm$ npm install axios使用cdn<script src="https://unpkg.com/axios/dist/axios.min.js"></script>GET// 为给定 ID 的 user 创建请求axios.get('/user?ID=12345') .then(function (response) { console.log(response); }) .catch(function (error)
2022-03-09 17:27:46 476
原创 ES6 Promise 对象
Promise 是异步编程的一种解决方案:Promise是一个对象,通过它可以获取异步操作的消息;promise有三种状态:pending(等待态),fulfilled(成功态),rejected(失败态);状态一旦改变,就不会再变。创造promise实例后,它会立即执行。**基本用法 const promise = new Promise(function (resolve, reject) { let p = { co.
2022-03-09 07:00:52 190
原创 vscode 快速生成html模板
VSCode中,在新建html的页面生成代码,可以 输入! 然后回车或者Tab即可自动生成一个html文件模板,效果如下
2022-02-08 08:21:42 5725 17
原创 vs2019 使用向导生成一个MFC应用程序
创建项目选择mfc模板配置项目运行类视图双击类名即可跳转到类声明所在的.h文件下面为类中的成员函数,双击即可跳转到相应的定义部分消息处理的添加在CMainFrame添加消息处理,程序并没有反应,需要在view层操作上述过程。在消息列表中找到WM_LBUTTONDOWN消息,添加。工程文件增加几处改变。第一处:在框架类头文件中添加了鼠标左键消息函数的函数声明第二处:在框架类cpp文件中添加了消息映射宏第三处:在框架列cpp文件中添加了处理鼠标左键消息的函数定
2021-10-03 11:33:26 811
原创 vs2019 第一个MFC应用程序
创建项目项目的创建和之前一样,只是此次的源文件后缀为.cpp,因为MFC是由C++编写的,编写MFC程序需要包含**#include <afxwin.h>**头文件。编写代码mfc.h#pragma once#include <afxwin.h>class MyApp :public CWinApp//CWinApp应用程序类{public: //程序入口 virtual BOOL InitInstance();};class MyFrame :publ
2021-10-03 09:25:28 762
原创 vs2019 桌面程序快速入门
创建项目选择windows桌面向导配置项目选择程序类型编写代码#include <windows.h> //底层实现窗口 的头文件//6处理窗口过程//CALLBACK 代表__stdcall 参数的传递顺序:从右到左 以此入栈,并且在函数返回前 清空堆栈LRESULT CALLBACK WindowProc( HWND hwnd, //消息所属的窗口句柄 UINT uMsg, //具体消息名称 WM_XXXX 消息名 WPARAM wParam, //键盘
2021-10-03 08:06:48 2072
原创 python图像灰度变换
二值化非0元素取1法非零元素取一法是最基础的二值化算法。顾名思义,非零取一就是对于灰度图像f,若某像素灰度值为零,则其灰度值不变,仍为零;对于灰度值不为零的像素,将其像素值全部变为255。img = np.zeros((w, h), dtype=np.uint8) for j in range(h): for i in range(w): if grey[j, i] != 0: img[j, i] = 255固定阀值法固定阀值法就是为灰度
2021-09-28 21:30:04 2944 1
原创 python图像几何变换
图像的平移图像平移(Translation)是将图 像中所有的点都按照指定的平移量,进行水平、垂直移动。x=self.trans.xy=self.trans.y# img[x:h-1,y:w-1]=image[0:h-1-x,0:w-1-y]for j in range(h): for i in range(w): i0=i+x j0=j+y if(i0>=0) and (i0<w) and (j0>=0)and (j.
2021-09-25 21:45:22 612
原创 python 图像特效
图像扫描扫描是最基本的特效显示方式,它没有划分图像块,只是顺序地一行一行或一列一列地显示图像或清除图像。向下扫描、向上扫描、向右扫描、向左扫描。四种扫描的原理相同。只是显示图像的次序不同。 self.lb_2.setPixmap(QPixmap("")) # 绘制图像 image = self.image.xBitmap.img_org image = cv2.cvtColor(image, cv2.COLOR_BGR2RGBA) h,.
2021-09-24 18:16:07 618
原创 MTCNN人脸检测
MTCNN可实现两个任务——人脸检测与人脸关键点检测。MTCNN已经集成到了python的库中。安装注意:安装前需要确认以下依赖:python >= 3.4opencv >= 4.1Keras>=2.0.0pip install mtcnn人脸检测from mtcnn import MTCNNimport cv2img=cv2.imread("../datas/face/ldh2.jpg")img = cv2.cvtColor(img, cv2.COLOR_BG
2021-08-30 09:35:19 397
原创 人脸识别 face_recognition
导入face_recognition模块import face_recognitionload_image_file 加载图像调用face_recognition.load_image_file()读入图像。输出图像是rgb格式(opencv中是bgr格式)import face_recognitionimage = face_recognition.load_image_file("../datas/obama.jpg")face_locations 人脸检测能定位所有图像中识别出的人
2021-08-26 10:49:39 1019
原创 python数字图像处理笔记17 形态学
膨胀效果:扩大图像中的物体定义:设 A 为原始二值图像,B 是结构元素,则 A 被 B 膨胀定义为:def Morphology_Dilate(img, Dil_time=1): H, W = img.shape # kernel MF = np.array(((0, 1, 0), (1, 0, 1), (0, 1, 0)), dtype=np.int) # each dilate ti
2021-07-01 19:32:38 289 1
原创 python数字图像处理笔记16 滤波增强
空域滤波增强空域滤波增强也称为模板操作,主要以像素邻域为基础对图像进行增强,增强函数E()定义在像素点(x,y)的某个邻域上。模板是指滤波器、核、掩模或窗口。邻域可以是任意形状,通常采用正方形或矩形阵列。空域滤波增强的基本原理是利用图像与模板的卷积来进行。模板通常取尺寸为n×n的小图像,n一般为奇数,此时,模板的半径定义为:r=(n-1)/2。空域滤波增强可分为以下4类(1)线性平滑滤波器(2)非线性平滑滤波器(3)线性锐化滤波器(4)非线性锐化滤波器均值滤波均值滤波器使用网格内像素的平
2021-07-01 16:52:15 570 1
原创 python数字图像处理笔记15 灰度变换
灰度变换属于空域变换增强技术。目的:一般成像系统形成图像的亮度有限,对比度不足,使图像的视觉效果差,灰度变换即可有效地改善视觉效果。概念:灰度变换是一种点操作,根据原始图像中每个像素的灰度值,按照某种映射规则将其转化为另一灰度值。灰度变换可有效改善图像的视觉效果,变换原理可表示为如式所示:式中:k为原始图像的灰度值f(x,y),t为变换图像的灰度值g(x,y),E()为灰度增强函数。原理:灰度变换原理可由图来说明,其中,图(a)为原始图像,具有两种灰度级,分别用B和W来表示;图(b)为灰度增
2021-07-01 15:30:21 2469
原创 python数字图像处理笔记14 直方图处理
绘制直方图表示图像中具有某种灰度级的像素的个数,反映了图像中每种灰度出现的频率。它是图像最基本的统计特征。横坐标:灰度级;纵坐标:该灰度级出现的个数。def hist(img): list=np.zeros(256,dtype=np.float) if len(img.shape) == 3: img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) H, W=img.shape for y in range(H):
2021-07-01 10:47:50 318
原创 python数字图像处理笔记13 逻辑运算
与运算与运算是指将两幅原始图像对应位置处两个像素的灰度值通过与操作得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为p和q,则与运算可表示为:两幅图像的矩阵数据如下所示,试求X·Y的结果。两幅图像相与的结果为:img1 = self.xBitMap1.imgimg2 = self.xBitMap2.imgout=img1&img2XImage.imShow(out, self.lb3)或运算或运算是指将两幅原始图像对应位置处两个像素的灰度值通过或操作得到
2021-06-30 22:44:51 1099 3
原创 python数字图像处理笔记12 算术运算
加法加法运算是指将两幅原始图像对应位置处两个像素的灰度值相加得到一个新的灰度值,作为结果图像对应位置处像素的灰度值。设两个像素为p和q,则加法运算可表示为:式中:f(x)为像素x的灰度值。注意:由于图像像素的灰度值范围为[0,255],因此,相加结果如果大于255,则取255。def add(img1,img2): H1, W1, C1 = img1.shape # H2, W2, C2 = img2.shape out = np.zeros((H1, W1, C1),
2021-06-30 16:50:57 930
原创 python数字图像处理笔记11 几何变换代码实现
平移def translate(img, tx, ty): H, W, C = img.shape # out = np.zeros((H, W, C), dtype=np.uint) out1 = np.zeros((H + ty, W + tx, C), dtype=np.uint8) # 必须是8 不然显示不出图像 out2 = np.zeros((H, W, C), dtype=np.uint8) # 必须是8 不然显示不出图像 out3 = np.z
2021-06-30 10:37:27 379
原创 python数字图像处理笔记10 图像旋转
图像旋转旋转前旋转后矩阵表示def rotate(img, angle): H, W, C = img.shape anglePi = angle * math.pi / 180.0 cosA = math.cos(anglePi) sinA = math.sin(anglePi) out = np.zeros((H, W, C), dtype=np.uint8) # 必须是8 不然显示不出图像 for y in range(H):
2021-06-25 10:56:45 1767 2
原创 python数字图像处理笔记09 灰度插值算法 pyqt5界面
界面初始化图片 def initData(self): self.xBitMap = XImage.openImage(os.path.join(XImage.xpath,"ch03", "imori.jpg"), self.lb1)绑定按钮事件 self.btn_nearest.clicked.connect(lambda: self.nearest_handler()) self.btn_bilinear.clicked.connect(lambda:
2021-06-23 14:48:00 387
原创 python数字图像处理笔记08 双三次插值(没学会)
理解不了,暂时记录到这里吧!双三次插值是双线性插值的扩展,使用邻域 像素进行插值。我们要做的就是求出BiCubic函数中的参数x,从而获得上面所说的16个像素所对应的系数。
2021-06-23 14:20:37 292
原创 python数字图像处理笔记07 双线性插值法 ~~~这就是为什么要学数学的例子!
单线性插值已知中P1点和P2点,坐标分别为(x1, y1)、(x2, y2),要计算 [x1, x2] 区间内某一位置 x 在直线上的y值2点求一条直线公式
2021-06-23 10:53:44 567
原创 python数字图像处理笔记06 最近邻插值法
最近邻插值法在一维空间中,最近点插值就相当于四舍五入取整。在二维图像中,像素点的坐标都是整数,该方法就是选取离目标点最近的点。使用下面的公式放大图像! I’ 为放大后图像, I为放大前图像, a为放大率,方括号是四舍五入取证操作...
2021-06-22 21:19:00 1738 1
原创 python数字图像处理笔记05 几何变换
平移变换(Translation Transformation)指将图像沿某方向平移来获取新图像的变换方法。设空间中一个点的笛卡尔坐标为(x,y,z),基于平移向量(a,b,c)将其平移到新的坐标(x’,y’,z’)。放缩变换(Scale Transformation)也称为尺度变换,指将图像在某方向按比例缩放来获取新图像的变换方法。放缩变换改变了图像的尺寸,即改变了图像像素点间的距离。放缩变换一般沿坐标轴方向进行,或可分解为沿坐标轴方向进行。当放缩系数a、b、c不为整数时,原始图像中某些像素
2021-06-21 16:00:49 1153
原创 python数字图像处理笔记04 像素空间关系
像素的邻域一个像素的邻近像素组成该像素的邻域。像素邻域的类型如图所示:1. 4-邻域N4§由p的水平(左右)和垂直(上下)共4个近邻像素组成。这些近邻像素的坐标分别是(x+1,y),(x-1,y),(x,y-1),(x,y+1)。组成p的4-邻域的4个像素均用r表示。2. 对角邻域ND§由p的对角(左上、右上、左下、右下)共4个近邻像素组成。这些近邻像素的坐标分别是(x+1,y+1),(x+1, y-1),(x-1,y+1),(x-1,y-1)。组成p的对角邻域的4个像素均用s表示。3.
2021-06-20 21:58:52 1046 1
原创 python数字图像处理笔记03 代码实现
数字图像表示方式 self.xBitMap = XImage.openImage(os.path.join(XImage.xpath, "ch01","F1_7a.jpg"), self.lb1) self.xBitMap2 = XImage.openImage(os.path.join(XImage.xpath, "ch01","F1_7b.jpg"), self.lb2)图像质量空间分辨率变化、幅度分辨率不变 img=self.xBitMap.img dsize0 =
2021-06-20 21:36:57 407 6
原创 python数字图像处理笔记02 图像的采集
采样和量化一幅图像必须要在空间和灰度上都离散化才能被计算机处理。空间坐标的离散化叫做空间采样(简称采样),它确定了图像的空间分辨率。灰度值的离散化叫做灰度量化(简称量化),它确定了图像的幅度分辨率。采样过程可看作将图像平面划分成规则网格,每个网格中心点的位置由一对笛卡尔坐标(x,y)决定,x和y均取整数。量化过程是给点(x,y)赋予灰度值f,f取整数。采样和量化示意图如图所示。分辨率与数据量如果一幅图像的尺寸(空间分辨率)为M×N,表明在成像时采集了MN个样本,或者说图像包含MN个像素。如果对每
2021-06-20 14:39:40 3170
原创 python数字图像处理笔记01 图像的基本概念
图像的定义图像是用各种观测系统以不同形式和手段观测客观世界而获得的,可以直接或间接作用于人眼并进而产生视知觉的实体。一幅图像可以定义为一个二维函数f(x,y):x和y表示2-D空间XY中一个坐标点的位置;f表示图像在点(x,y)处的某种性质F的值;例如1:灰度图的f表示灰度值,它常对应客观景物被观察到的亮度。例如2:二值图像的f的取值只有两个。f,x,y的值是连续的,即可以是任意实数。数字图像把连续的图像f(x,y)在2-D空间XY和性质空间F都离散化,这种离散化了的图像叫做 数
2021-06-20 10:41:56 469
原创 VS2019 OpenCV3.4.11 整合
1. OpenCV下载及安装解压缩到你想安装的文件夹。环境变量工程配置打开项目工程属性,需要添加工程要用到的头文件、库文件。选择平台添加头文件路径添加库目录链接库的配置相应的库文件名可以去OpenCV文件的build/x64/vc15/lib下查找测试#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;int main(int argc, char** arg
2021-06-18 10:38:28 91
原创 PyQt5入门 配置pycharm
环境python 3.7Qt5 Version Number is: 5.15.2PyQt5 Version is: 5.15.4配置PyCharm添加QtDesignerProgram----C:\Python\Python37\Lib\site-packages\qt5_applications\Qt\bin\designer.exe添加PyUICname----PyUICProgram----C:\Python\Python37\Scripts\pyuic5.exeArgume
2021-06-05 16:24:19 134
原创 PyQt5入门 创建一个简单的窗口
Qt库是最强大的GUI支持库的一种。PyQt5的官方 https://www.riverbankcomputing.com/安装PyQt5pip install PyQt5pip install pyqt5-tools最基本的windows窗口import sysfrom PyQt5.QtWidgets import QApplication, QWidgetif __name__ == '__main__': # 每个应用程序都必须实例化一个QApplication()
2021-06-05 16:02:20 408
原创 数字图像处理 锐化滤波器
锐化处理的主要目的是突出图像中灰度的过渡部分图像的锐化处理可以用空间微分来完成(微分算子的响应强度与像素的突变程度成正比)。也即,图像微分增强边缘与其他突变(如噪声、线),并削弱灰度变化缓慢的区域常用的非线性锐化滤波器基于一阶微分的锐化滤波器基于二阶微分的锐化滤波器数字图像微分的定义数字图像的微分可以用不同的术语定义,但任何定义都必须满足以下要求:(1)一阶微分在恒定灰度区域的一阶微分值为零在灰度台阶、灰度斜坡的起点处一阶微分值非零沿着灰度斜坡的一阶微分值非零(2)二阶微分.
2021-05-16 11:12:58 3253
原创 c# 数字图像处理 点运算
理论知识https://blog.csdn.net/imxlw00/article/details/116018216?spm=1001.2014.3001.5501绘制直方图 Rectangle rect = new Rectangle(0, 0, bmpHist.Width, bmpHist.Height); System.Drawing.Imaging.BitmapData bmpData = bmpHist.LockBits(rect, System.Drawing.Imaging.Imag
2021-05-07 16:56:20 201
vb在线升级程序(源码)
2009-01-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人