-
python图像对比度拉伸_如何记录拉伸适配图像并改变其对比度?
2021-02-10 04:04:33我尝试使用Astropy2.0.11和Python2.7.15来编辑fits图像,方法是对其应用log拉伸并更改对比度,但我一直无法确定。在我一直在尝试跟随astropy网站上的教程来打开和操作fits文件,但是我想知道这些教程是否只适用于...我尝试使用Astropy2.0.11和Python2.7.15来编辑fits图像,方法是对其应用log拉伸并更改对比度,但我一直无法确定。在
我一直在尝试跟随astropy网站上的教程来打开和操作fits文件,但是我想知道这些教程是否只适用于astropy的最新版本和python3?在
抱歉,我的代码组织。这是一个原型代码,我只是试着测试一些东西,让它发挥作用。在import time
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
import astropy.visualization
from astropy.io import fits
from astropy.utils.data import download_file
from astropy.visualization import astropy_mpl_style
plt.style.use(astropy_mpl_style)
from astropy.utils.data import get_pkg_data_filename
def main():
#My own fits file
#fitsImage = get_pkg_data_filename("C:\\20180807T000456.fits")
fitsImage = download_file('http://data.astropy.org/tutorials/FITS-images/HorseHead.fits', cache=True )
hdu_list = fits.open(fitsImage)
hdu_list.info()
#norm = ImageNormalize(stretch=LogStretch())
image_data = fits.getdata(fitsImage)
print(type(image_data))
print(image_data.shape)
hdu_list.close()
plt.figure()
plt.imshow(image_data, cmap='gray', norm=LogNorm())
plt.colorbar()
# I chose the tick marks based on the histogram above
cbar = plt.colorbar(ticks=[5.e3,1.e4,2.e4])
cbar.ax.set_yticklabels(['5,000','10,000','20,000'])
time.sleep(10)
我也无法使用plt.imshow()显示图像
任何见解都会有帮助
-
Halcon 增强图像对比度
2019-08-28 12:00:17Halcon中增强图像的对比度也是预处理中的一环,主要有如下方式: ... 作用:拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。 b. scale_image_max:将灰度值拉伸到0-255 2. 增强图像对比度 a....Halcon中增强图像的对比度也是预处理中的一环,主要有如下方式:
1. 灰度变换
a. scale_image
原理:可以理解为用一个模板扫描图像中的每一个像素,模板中像素最大值和最小值的差作为模板中心像素点的值。
作用:拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。b. scale_image_max:将灰度值拉伸到0-255
2. 增强图像对比度
a. emphasize
增强图像的高频区域(边缘和拐角),使图像看起来更清晰。
res := round((orig - mean) * Factor) + orig
b. illuminate
增强图像的高频区域(边缘和拐角),使图像看起来更清晰.
new = round ( (val - mean) * Factor + orig )
3. 直方图均衡化
a. equ_histo_image
增强图像的对比度,采用直方图的方式
4.灰度图像形态学
a. gray_opening结构元素在图像中滑,灰度值最高的值作为新值,有使图像变亮的作用。
b.equ_histo_image结构元素在图像中滑,灰度值最低的值作为新值,有使图像变暗的作用。
c. gray_range_rect用一个矩形结构元素在图像中滑动,新值 = (矩形中最大的)灰度值-(矩形中最大的)最小的灰度值
-
halcon画出灰度直方图_Halcon 增强图像对比度的方法总结
2021-02-01 04:23:05Halcon中增强图像的对比度也是预处理中的一环,主要有如下方式:1.... 作用:拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。b. scale_image_max:将灰度值拉伸到0-2552. 增强图像对比度a. emphasize增强...Halcon中增强图像的对比度也是预处理中的一环,主要有如下方式:
1. 灰度变换
a. scale_image 原理:可以理解为用一个模板扫描图像中的每一个像素,模板中像素最大值和最小值的差作为模板中心像素点的值。 作用:拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。
b. scale_image_max:将灰度值拉伸到0-255
2. 增强图像对比度
a. emphasize
增强图像的高频区域(边缘和拐角),使图像看起来更清晰。
res := round((orig - mean) * Factor) + orig
b. illuminate
增强图像的高频区域(边缘和拐角),使图像看起来更清晰.
new = round ( (val - mean) * Factor + orig )
3. 直方图均衡化
a. equ_histo_image
增强图像的对比度,采用直方图的方式
4.灰度图像形态学a. gray_opening
结构元素在图像中滑,灰度值最高的值作为新值,有使图像变亮的作用。 b.equ_histo_image
结构元素在图像中滑,灰度值最低的值作为新值,有使图像变暗的作用。 c. gray_range_rect
用一个矩形结构元素在图像中滑动,新值 = (矩形中最大的)灰度值-(矩形中最大的)最小的灰度值
5. 其它方式
(2)再有一种是通过操作hsv颜色空间来调整对比度,见下面:
(3)灰度变换与空间滤波的方式来调整对比度,如下:
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!
#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。如果需要本贴图片源码等资源,请向勇哥索取。
扫码加本站公众号
收藏 | 0点赞 | 0打赏作者
-
图像增强 | CLAHE 限制对比度自适应直方图均衡化
2020-07-22 01:52:081 基本概述 CLAHE是一个比较有意思的图像增强的方法,主要用在医学图像上面。之前的比赛中,用到了这个,但是对其算法原理不甚了解。...【Contrast Stretching】:对比度拉伸; 【HE】:直方图均衡; 【CLHE】1 基本概述
CLAHE是一个比较有意思的图像增强的方法,主要用在医学图像上面。之前的比赛中,用到了这个,但是对其算法原理不甚了解。在这里做一个复盘。
CLAHE起到的作用简单来说就是增强图像的对比度的同时可以抑制噪声
CLAHE的英文是Contrast Limited Adaptive Histogram Equalization 限制对比度的自适应直方图均衡。在学习这个之前,我们要先学习一下下面的前置算法:
- 【Contrast Stretching】:对比度拉伸;
- 【HE】:直方图均衡;
- 【CLHE】:对比度限制的HE
- 【AHE】:自适应直方图均衡化
2 竞赛中的CLAHE实现
在比赛中,我们往往使用albumentations库函数进行图像的预处理,因为这个预处理库的运行速度非常的快,而且封装了大量的图像增强的方法。图像任务的话这个库函数非常滴奈斯。
本文中会介绍一下albumentations库函数实现CLAHE的代码,然后再用openCV实现。
import albumentations RESIZE_SIZE = 1024 # or 768 train_transform = albumentations.Compose([ albumentations.Resize(RESIZE_SIZE, RESIZE_SIZE), albumentations.OneOf([ albumentations.RandomGamma(gamma_limit=(60, 120), p=0.9), albumentations.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.9), albumentations.CLAHE(clip_limit=4.0, tile_grid_size=(4, 4), p=0.9), ]), albumentations.HorizontalFlip(p=0.5), albumentations.ShiftScaleRotate(shift_limit=0.2, scale_limit=0.2, rotate_limit=20, interpolation=cv2.INTER_LINEAR, border_mode=cv2.BORDER_CONSTANT, p=1), albumentations.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225), max_pixel_value=255.0, p=1.0) ])
这是一个图像增强的pipline,其中的流程是:
- Resize就是拉伸图片修改尺寸
- RandomGamma就是使用gamma变换
- RandomBrightnessContrast就是随机选择图片的对比度和亮度
- CLAHE是一种对比度受限情况下的自适应直方图均衡化算法
- HorizontalFlip水平翻转
- ShiftScaleRotate这个就是平移缩放旋转三合一,给力!
- Normalize这个就是图像归一化了。
本文主要讲解的就是CLAHE这个直方图均衡化的算法。
3 openCV绘制直方图
使用openCV的代码来获取一个图片的灰度直方图:
import cv2 import numpy as np import matplotlib.pyplot as plt def plot(grayHist): plt.plot(range(256), grayHist, 'r', linewidth=1.5, c='red') y_maxValue = np.max(grayHist) plt.axis([0, 255, 0, y_maxValue]) # x和y的范围 plt.xlabel("gray Level") plt.ylabel("Number Of Pixels") plt.show() if __name__ == "__main__": # 读取图像并转换为灰度图 img = cv2.imread(r'E:\dog.jpg', 0) # 图像的灰度级范围是0~255 grayHist = cv2.calcHist([img], [0], None, [256], [0, 256]) # 绘制直方图 plot(grayHist)
狗子的图片就是左边的这个,发现灰度值在100左右的像素个数最多:
4 对比度Contrast
在生活中,我们在PS图片的时候,往往会用到图片对比度,那么这个究竟是什么东西呢?
图片对比度指的是一幅图片中最亮的白和最暗的黑之间的反差大小。常用的定量度量方法是Michelson对比度:
- 当一幅图像最白和最黑像素灰度都是128时,图像对比度最低,C=0;
- 当一幅图像最白像素灰度=255,最黑像素灰度=0时,图像对比度最高,C=1.0。
【英文中如何描述高对比度与低对比度的?】
当一幅图像最白和最黑像素灰度都在128附近浮动时,图像的直方图集中在中间的几个桶,图像看起来灰蒙蒙的,英语中使用dull描述这种效果。相反,如果图像中黑白像素的跨度较大,则图像富有通透感,英语中使用clarity描述这种效果。图片中左边的图片就是dull,灰度直方图也是集中在中间区域,这就是低对比度;最右边的图片是clarity,直方图感觉是被拉开了、舒展了,这就是高对比度。
5 Contrast Stretching
我们已经搞懂了图片不通透的原因,就是灰度直方图不够舒展,集中在了一个小区域,这样我们可以通过数学的方法把低对比度的图像提高对比度。最简单的方法就是对比度拉伸(Contrast Stretching)。
现在有这样的一个低对比度的图片,其灰度直方图集中在中间的区域。然后我们想把这个灰度直方图拉伸到整个0~255的区间,我们怎么做呢?(这里假设这个低对比度的图片的灰度集中在100到200之间好了)
用一个这样的分段线性函数,来处理上面那个低对比度图片的时候,可以把(r2,s2)极端的设置成(100,0),把(r3,s3)设置成(200,255),这样把原来的直方图通过这个函数映射,其实就是把100~200范围线性拉伸到0~255这么大。这种方法最简单,简单的说就是线性拉伸直方图。对于某些图片可以起到效果:
但是对于比较复杂的图片,并没有什么效果:
6 Histogram Equalization
对比度解决不了的问题,我们来用HE试试。Histogram Equalization的思想就是用数学方法重新调整像素的亮度分布,来保证直方图具有最大的动态范围,也就是尽可能地让灰度直方图是一个矩形!
其实Contrast Stretching也是做的一样的事情,只是它用的简单的分段线性函数来重新映射灰度,现在用更巧妙地方法。
【定义一些数学符号】
- :调整之前的直方图的概率密度函数
- :调整之后的直方图的概率密度函数,可以看出来,是一个常数,所以用C来表示
因为**不管怎么转换,概率密度函数的累积总是1,而转换前后的取值范围都是[0,1],**所以可以得到:
(当然,这里可以很快的算出来,C=1)**我们希望找到,一个x和y的映射关系,也就是,**不难想到,这个就应该是的累积分布函数,也就是:
这个图中,直观的展示了,任何一个直方图,只要按照该直方图的累积分布函数进行拉伸,就可以得到一个矩形的直方图。下面是一个利用这样的方法增强对比度的例子:
可以发现,在直方图密集的地方,就会被拉的松散再看另外一个例子:
可以发现,使用HE之后的直方图的累积分布函数,是一个直线7 CLAHE
HE算法在一种情况下,效果不好,**如果一个图片中有大块的暗区或者亮区的话,效果非常不好。**这个的原因,也非常好理解,因为HE其实要求一个图片中必须有10%的最亮的像素点,必须有10%第二亮的像素点,必须有10%第三亮的像素点……假设有一张纯黑的图片,你想想经过HE处理之后,会出现什么情况?答案就是一部分黑的像素也会被强行搞成白的
下面是一个例子,发现经过HE之后的图片出现了大量噪点:
【Histogram Equalization的缺点】
- 对于灰度非常集中的区域,直方图会被拉的非常稀疏,从而导致对比度增强过大,成为噪音;
- 一些区域调整后丢失细节
7.1 Contrast Limited HE
针对第一个问题,提出了CLHE,加入对比度限制,其实原理很简单置直方图分布的阈值,将超过该阈值的分布“均匀”分散至概率密度分布上,由此来限制转换函数(累计直方图)的增幅。
这样的话,直方图就不会出现概率密度函数过大的区域,从而避免了某些集中区域被拉得过于系数。7.2 Adaptive HE
Adaptive HE的基本思想是将原始图片划分成子区域,然后对每个子区域进行HE变换。当然,这样做的问题应该是显而易见的:
每一块区域之间都会有非常大的不连续。因此为了解决这个问题,提出了优化方案双线性插值的AHE,然后这个基础上再使用CLHE的截断对比度的思想,就变成了我们现在的CLAHE算法。【使用双线性插值的方案】
-
将图像分为多个矩形块大小,对于每个矩形块子图,分别计算其灰度直方图和对应的变换函数(累积直方图)
-
将原始图像中的像素按照分布分为三种情况处理:
- 红色区域中的像素按照其所在子图的变换函数进行灰度映射
- 绿色区域中的像素按照所在的两个相邻子图变换函数变换后进行线性插值得到
- 紫色区域中的像素按照其所在的四个相邻子图变换函数变换后双线性插值得到
8 结果对比与openCV实现
【这里是openCV实现HE的方法】
img = cv.imread(r'E:\dog.jpg', 0) equ = cv.equalizeHist(img) # 输入为灰度图 res = np.hstack((img, equ)) # stacking images side-by-side cv.imwrite('res.png',res)
运行结果:
【openCV实现CLAHE】img = cv2.imread(r'E:\dog.jpg', 0) # create a CLAHE object clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8)) cl1 = clahe.apply(img) res = np.hstack((img, cl1)) cv2.imwrite('res.jpg', res)
【更多对比的例子】
- 左边是原图
- 中间是HE,有过亮过暗的区域;
- 右边是CLAHE,没有过亮过暗的区域。
然后我在另外一个博文,找到了上面那个例子的彩色版本哈哈:
参考文章:
- https://zhuanlan.zhihu.com/p/98541241
- https://blog.csdn.net/lwx309025167/article/details/103770834
- https://blog.csdn.net/u013066730/article/details/82970380
- https://www.cnblogs.com/imageshop/archive/2013/04/07/
- http://helloworld2020.net/393/
-
Win8Metro(C#)数字图像处理--2.31灰度拉伸算法
2015-04-11 09:05:27直方图灰度拉伸也叫做对比度拉伸,是一种特殊的线性点运算,使用的是分段线性变换函数,它的主要思想是提高图像灰度级的动态范围;它的作用是扩展图像的直方图,使其充满整个灰度等级的范围内,从而改善输出图像。... -
Python OpenCV实例:图像灰度拉伸
2018-04-19 17:13:00定义:灰度拉伸,也称对比度拉伸,是一种简单的线性点运算。作用:扩展图像的 直方图,使其充满整个灰度等级范围内 公式: g(x,y) = 255 / (B - A) * [f(x,y) - A], 其中,A = min[f(x,y)],最... -
基于亮通道色彩补偿与融合的水下图像增强
2021-02-22 23:54:05再对色彩补偿的图像进行自适应对比度拉伸获得对比度高的清晰图像; 最后采用多尺度融合策略对色彩补偿后的图像及对比度拉伸后的图像进行融合。结果表明, 本文算法可广泛应用于多种水下降质图像, 且在无任何先验信息... -
11、OpenCV实现图像的灰度变换
2019-02-28 13:39:001、灰度变换的基本概念 ...改善图像的质量,使图像能够显示更多的细节,提高图像的对比度(对比度拉伸) 有选择的突出图像感兴趣的特征或者抑制图像中不需要的特征 可以有效的改变图像的直方图分... -
基于opencv-python的一些基本的灰度变换操作
2018-03-17 15:31:491.图像反转:作用:看清暗色图像中白色和灰色的细节2....分段线性变换:分类:对比拉伸(对比度拉伸),灰度切割,位图切割以上几个处理方法的思想都是将固定范围内的像素值得显示范围放大或缩小,让图像更符合意向... -
数字图像处理(Matlab版)-2 直方图处理
2019-02-10 22:06:17对数及对比度拉伸变换的作用主要是可以增强图片里较暗部分的细节,公式如下所示 c⋅logv+1(1+v⋅r)rϵ[0,1] c \cdot log_{v+1}^{(1+v \cdot r)} \quad r \epsilon {[0,1]} c⋅logv+1(1+v⋅r)rϵ[0,1] 底数为v+1,... -
opencv中的灰度变换
2018-07-13 14:13:54本文介绍的图像的灰度变换则不同,其对像素的计算仅仅依赖于当前像素...图像灰度变换的有以下作用:改善图像的质量,使图像能够显示更多的细节,提高图像的对比度(对比度拉伸)有选择的突出图像感兴趣的特征或者抑... -
OpenCV-Python 直方图-2:直方图均衡 | 二十七
2020-01-13 13:11:54目标 在本节中, 我们将学习直方图均衡化的概念...因此,您需要将这个直方图拉伸到两端(如下图所示,来自wikipedia),这就是直方图均衡化的作用(简单来说)。这通常会提高图像的对比度。 我建议您阅读直方图均衡化上... -
matlab 图像处理函数(第八章) 图像的增强
2015-07-22 21:29:571、decorrstretch 使用去相关拉伸图像增强 不太明白嘛意思 ...作用 有限对比度自适应直方...作用 使用直方图均衡化加强图像的对比度 J=histeq(I) 4、imadjust 调整图像灰度值 J=imadjust(I,[ low in h -
基于opencv和numpy的直方图均衡化
2019-04-15 10:54:48所以您需要将这个柱状图拉伸到两端(如下图所示,来自维基百科),这就是柱状图均衡的作用(简单来说)。这通常会提高图像的对比度。 1,(1)基于opencv的直方图均衡化 opencv有一个这样做的函数,cv2.... -
基于 opecv 和 numpy 的直方图均衡化
2019-02-23 21:32:541. 基本原理 ...所以您需要将这个柱状图拉伸到两端(如下图所示,来自维基百科),这就是柱状图均衡的作用(简单来说)。这通常会提高图像的对比度。 2. 基于numpy 的直方图均衡化 我们首先使用 nump... -
数字图像学习点运算
2017-02-23 13:41:56第四章 点运算 目录 引言线性点运算非线性运算伪彩色 ...点运算将输入图象映射...点运算因其作用性质有时也被称为对比度增强、对比度拉伸或灰度变换。 点运算实际上是灰度到灰度的映射过程,设输入图象为A(x,y -
数字图像处理:第四章 点运算
2015-12-01 21:48:39第四章 点运算 目录 引言线性点运算非线性运算伪彩色 ...点运算因其作用性质有时也被称为对比度增强、对比度拉伸或灰度变换。 点运算实际上是灰度到灰度的映射过程,设输入图象为A(x,y),输出图象为B(x -
OpenCV基于Python直方图均衡化详析
2020-12-28 21:04:57直方图均衡化目标1. 前言2. 全局直方图均衡化(HE)3. 对比度受限的自适应直方图均衡化(CLAHE)4....因此,你需要将这个直方图拉伸到两端,这就是直方图均衡化的作用(简单来说),这通常会提高图像的对比度 -
OpenCV 图像处理 Fusion
2019-02-18 20:29:00这样,原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小的话,会产生粗略分类的视觉效果。 直方图均衡化的作用是图像增强 在... -
erdas查看灰度直方图_OpenCV-Python 直方图-2:直方图均衡 | 二十七
2021-01-01 17:43:38目标在本节中,我们将学习直方图均衡化...因此,您需要将这个直方图拉伸到两端(如下图所示,来自wikipedia),这就是直方图均衡化的作用(简单来说)。这通常会提高图像的对比度。我建议您阅读直方图均衡化上的Wikipedia... -
c++ opencv实现区域填充_OpenCV-Python 直方图-2:直方图均衡 | 二十七
2020-11-23 12:29:22目标在本节中,我们将学习直方图均衡化...因此,您需要将这个直方图拉伸到两端(如下图所示,来自wikipedia),这就是直方图均衡化的作用(简单来说)。这通常会提高图像的对比度。我建议您阅读直方图均衡化上的Wikipedia... -
Opencv4 -Python官方教程学习笔记21---直方均衡化
2020-07-15 15:32:10因此,您需要将这个直方图拉伸到两端(如下图所示,来自wikipedia),这就是直方图均衡化的作用(简单来说)。这通常会提高图像的对比度。 OpenCV中的直方图均衡 OpenCV具有执行此操作的功能cv.equalizeHist()。它的... -
opencv equalizeHist直方图均衡化
2018-04-04 20:25:56直方图均衡化是一种常见的增强图像对比度的方法,使用该方法可以增强局部图像的对比度,尤其在数据较为相似的图像中作用更加明显。直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间... -
CLAHE
2020-07-08 23:51:20直方图均衡 目标:学习直方图均衡化的...这就是直方图均衡化的作用,可以提高图像的对比度。 import numpy as np import cv2#通过cv2取读取图像数据 from matplotlib import pyplot as plt img_png = cv2.imread('./g -
直方图均衡化原理
2014-03-10 14:26:52直方图均衡化的作用是增强图像的对比度,即通过拉伸像素强度分布范围来增强图像对比度的一种方法.均衡化指的是把一个分布 (给定的直方图) 映射到另一个分布 (一个更宽更统一的强度值分布), 所以强度值分布会在整个... -
图像变换
2019-10-06 11:25:301.直方图均衡化 直方图均衡化:用一定的算法直方图大致平和的方法。直方图均衡化拉伸像素分布范围,首先对各个灰度级进行归一化,...作用:增加图像的对比度。本质上是扩大了量化间隔,量化级别反而减少了。 ... -
Opencv图像处理---直方图均衡
2018-10-19 22:53:12这是一种改善图像对比度的方法,以拉伸强度范围。 为了更清楚,从上面的图像中,您可以看到像素似乎聚集在可用的强度范围的中间。 直方图均衡的作用是延伸此范围。 它如何工作? 均衡意味着将一个分布(给定的... -
详解python OpenCV学习笔记之直方图均衡化
2020-12-23 15:27:56本文介绍了python OpenCV...所以你需要把这个直方图拉伸到两端(如下图所给出的),这就是直方图均衡的作用(用简单的话说)。这通常会改善图像的对比度。 建议阅读关于直方图均衡的wikipedia页面Histogram Equaliz -
直方图均衡化
2019-07-24 11:05:021、直方图均衡化一来可以提高图像的对比度,二来可以把图像变换成像素值是几乎均匀分布的图像 2、直方图均衡化的作用是图像增强。 3、直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个... -
python直方图均衡函数_【python opencv】直方图均衡
2020-12-08 12:20:16因此,您需要将这个直方图拉伸到两端(如下图所示,来自wikipedia),这就是直方图均衡化的作用(简单来说)。这通常会提高图像的对比度。在这里我们将看到其Numpy实现。之后,我们将看到OpenCV功能。import numpy as np...
-
SAM模式:构建函数响应式前端架构过程中学到的经验
-
FTPUpload.rar
-
Android安全之IntentSchemeUrl攻击
-
LeetCode 104 二叉树的最大深度
-
nmap大全
-
一个带下拉刷新列表的日历demo.zip
-
iptables 企业级防火墙配置(四表五链)
-
MHA 高可用 MySQL 架构与 Altas 读写分离
-
Keil.STM32F2xx_DFP.2.9.0.1.rar
-
衍射误差对相位校正效果的影响
-
设计原则:单一职责
-
C语言第二页笔记
-
【硬核】一线Python程序员实战经验分享(1)
-
龙芯实训平台应用实战(希云)
-
用Docker构建与环境无关的系统
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
微信公众号Python开发(Wechatpy+新浪云SAE应用)
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
libFuzzer视频教程
-
白话:java从入门到实战