【图像处理】:两幅图中相同区域的相似度比较

两幅图中相同区域的相似度比较

  • 1.OpenCV和Python实现的两幅图相似度衡量方法
    • 1. 均方误差(MSE)
    • 2. 结构相似性指数(SSIM)
      • 图像协方差能显示结构特征的原因
    • 3. 直方图相似度
    • 4. 特征点匹配
    • 5. 相关系数(Pearson Correlation)
    • **方法对比与适用场景**
  • 2.纹理特征比较的方法
    • 基于统计的方法
    • 基于频谱的方法
      • 灰度共生矩阵(GLCM)
      • 局部二值模式(LBP)
      • 小波变换
    • 基于结构的方法
    • 基于模型的方法

以下是基于OpenCV和Python实现的两幅图相似度衡量方法,涵盖像素级、结构特征和局部特征等多种方式:

1.OpenCV和Python实现的两幅图相似度衡量方法

1. 均方误差(MSE)

原理计算两图对应像素差的平方均值,值越小越相似。

import cv2
import numpy as np

def mse(img1, img2):
    # 确保图像尺寸相同
    img2 = cv2.resize(img2, (img1.shape[1], img1.shape[0]))
    # 转换为灰度图(若非必需可跳过)
    img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
    # 计算MSE
    err = np.sum((img1.astype("float") - img2.astype("float")) ** 2)
    err /= float(img1.shape[0] * img1.shape[1])
    return err

# 使用示例
img1 = cv2.imread("image1.jpg")
img2 = cv2.imread("image2.jpg")
print("MSE:", mse(img1, img2))

2. 结构相似性指数(SSIM)

SSIM(结构相似性指数,Structural Similarity Index Measure) 是一种用于衡量两幅图像相似度的指标。它不仅考虑了图像的亮度、对比度,还考虑了结构信息,因此在图像质量评估中表现优异。

SSIM 原理
SSIM 通过以下三个方面的比较来计算两幅图像的相似度:

  1. 亮度(Luminance)

    • 比较两幅图像的平均亮度。
    • 公式:
      在这里插入图片描述
  2. 对比度(Contrast)

    • 比较两幅图像的对比度。
    • 公式:
    • 在这里插入图片描述
  3. 结构(Structure)

    • 比较两幅图像的结构信息。
    • 公式:
      在这里插入图片描述
      在图像处理中,协方差能够显示图像的结构特征,这与协方差的定义和性质密切相关,同时协方差和方差也有着特定的区别与联系,以下是具体说明:

图像协方差能显示结构特征的原因

  • 反映像素间的相关性:图像可以看作是一个二维的像素矩阵,协方差用于衡量两个随机变量之间的线性关系强度和方向。在图像中,每个像素的灰度值或颜色值可视为一个随机变量。计算图像中不同位置像素之间的协方差,能够反映出这些像素之间的相关性。如果两个像素位置的协方差较大,说明这两个位置的像素值变化趋势较为一致,可能存在某种结构特征,比如它们可能属于图像中的同一条边缘、同一区域等;反之,如果协方差较小或为零,说明这两个像素之间的相关性较弱,它们在图像结构上可能没有直接的关联。
  • 体现图像的统计特性:通过计算图像中不同区域或不同方向上像素的协方差,可以得到关于图像统计特性的信息。例如,在水平方向和垂直方向上计算协方差,能够了解图像在这两个方向上的变化规律。如果水平方向上的协方差呈现出一定的周期性或规律性,可能表示图像中存在水平方向的条纹或纹理等结构特征;垂直方向同理。这些统计特性能够帮助我们提取和分析图像的结构信息。

在这里插入图片描述
在这里插入图片描述

最终的 SSIM 值是这三个分量的乘积:
在这里插入图片描述

Python 实现
可以使用 scikit-image 库中的 structural_similarity 函数来计算 SSIM。

安装依赖

pip install scikit-image

代码示例

from skimage.metrics import structural_similarity as ssim
import cv2
import numpy as np

# 读取图像
image1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
image2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)

# 调整图像大小(确保两幅图像尺寸相同)
image2 = cv2.resize(image2, (image1.shape[1], image1.shape[0]))

# 计算 SSIM
ssim_value, ssim_map = ssim(image1, image2, full=True)

# 打印 SSIM 值
print(f"SSIM: {ssim_value}")

# 可视化 SSIM 图
ssim_map_normalized = (ssim_map * 255).astype(np.uint8)
cv2.imshow('SSIM Map', ssim_map_normalized)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码说明

  1. 图像读取
    • 使用 OpenCV 读取图像,并将其转换为灰度图像。
  2. 图像调整
    • 确保两幅图像的尺寸相同。
  3. 计算 SSIM
    • 使用 structural_similarity 函数计算 SSIM 值和 SSIM 图。
  4. 结果可视化
    • 将 SSIM 图归一化并显示。

参数说明

  • full=True:返回 SSIM 值和 SSIM 图。
  • data_range:图像数据的范围(例如,8 位图像的 data_range=255)。
  • win_size:滑动窗口的大小(默认值为 7)。

应用场景

  • 图像质量评估:比较原始图像和压缩/处理后的图像。
  • 图像配准:评估两幅图像的相似度。
  • 目标检测:检测图像中的变化区域。

通过以上方法,可以轻松计算两幅图像的 SSIM 值,并可视化相似度图。SSIM数值越接近1越相似

3. 直方图相似度

原理:通过颜色分布(如直方图)的相似性衡量全局特征。

def hist_compare(img1, img2, method=cv2.HISTCMP_CORREL):
    img2 = cv2.resize(img2, (img1.shape[1], img1.shape[0]))
    # 计算HSV直方图
    hsv1 = cv2.cvtColor(img1, cv2.COLOR_BGR2HSV)
    hsv2 = cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)
    hist1 = cv2.calcHist([hsv1], [0, 1], None, [50, 60], [0, 180, 0, 256])
    hist2 = cv2.calcHist([hsv2], [0, 1], None, [50, 60], [0, 180, 0, 256])
    # 归一化
    cv2.normalize(hist1, hist1, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX)
    cv2.normalize(hist2, hist2, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX)
    # 比较直方图
    similarity = cv2.compareHist(hist1, hist2, method)
    return similarity

# 可选方法:HISTCMP_CORREL(相关度), HISTCMP_CHISQR(卡方), HISTCMP_BHATTACHARYYA(巴氏距离)
print("Histogram Correlation:", hist_compare(img1, img2))

4. 特征点匹配

原理:提取局部特征点(如SIFT、ORB),通过匹配点数量衡量相似性。

def feature_match(img1, img2):
    # 初始化ORB检测器
    orb = cv2.ORB_create()
    kp1, des1 = orb.detectAndCompute(img1, None)
    kp2, des2 = orb.detectAndCompute(img2, None)
    # 暴力匹配
    bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
    matches = bf.match(des1, des2)
    # 根据距离筛选优质匹配
    good = [m for m in matches if m.distance < 50]
    return len(good)

print("Feature Matches:", feature_match(img1, img2))

5. 相关系数(Pearson Correlation)

原理:计算两图像素值的线性相关程度,范围[-1, 1]。

def correlation(img1, img2):
    img2 = cv2.resize(img2, (img1.shape[1], img1.shape[0]))
    gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY).flatten()
    gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY).flatten()
    # 使用numpy计算相关系数
    return np.corrcoef(gray1, gray2)[0, 1]

print("Correlation Coefficient:", correlation(img1, img2))

方法对比与适用场景

方法优点缺点适用场景
MSE计算简单快速对亮度敏感,无法反映结构像素级对齐的图像
SSIM符合人类视觉感知计算复杂度较高需要结构相似性的场景
直方图对平移旋转不敏感忽略空间分布信息颜色分布相似性比较
特征点匹配对旋转缩放鲁棒依赖特征点数量和质量存在局部相似结构的图像
相关系数反映线性相关性对非线性变化敏感光照变化较小的图像

注意事项

  1. 确保图像尺寸一致或进行适当缩放。
  2. 对于彩色图像,需统一颜色空间(如RGB转灰度或HSV)。
  3. 特征点方法需安装opencv-contrib-python以支持SIFT/SURF。

2.纹理特征比较的方法

通过纹理特征比较两幅图中相同区域的相似度,主要有基于统计方法、频谱方法、结构方法和模型方法等,以下是具体介绍:

基于统计的方法

  • 灰度共生矩阵
    • 原理:计算图像中具有特定空间关系的像素对的灰度统计信息,得到灰度共生矩阵。该矩阵反映了图像灰度在不同方向、不同距离上的分布情况。例如,计算水平方向上距离为1的像素对的灰度共生矩阵,能体现图像在水平方向上的纹理变化。
    • 特征提取与比较:从灰度共生矩阵中提取能量、熵、对比度、相关性等特征。比较两幅图相同区域的这些特征值,计算它们之间的差值或距离,如欧氏距离,距离越小,说明相同区域的纹理相似度越高。
    • 局部二值模式
    • 原理:以每个像素为中心,将其邻域像素与中心像素的灰度值进行比较,根据比较结果生成一个二进制编码,这个编码反映了该像素点的局部纹理特征。例如,对于一个3×3的邻域,将周围8个像素与中心像素比较,大于中心像素记为1,小于记为0,得到一个8位的二进制码。
    • 特征提取与比较:将图像中每个像素的局部二值模式进行统计,得到局部二值模式直方图。通过比较两幅图相同区域的局部二值模式直方图的相似度来衡量纹理相似度,常用的方法有直方图相交法、巴氏距离等。

基于频谱的方法

  • 傅里叶变换
    • 原理:将图像从空间域转换到频率域,得到图像的频谱。图像中的纹理信息在频率域中表现为不同频率成分的能量分布。例如,图像中的高频部分通常对应着纹理的细节信息,低频部分对应着纹理的大致轮廓。
    • 特征提取与比较:对两幅图相同区域的频谱进行分析,提取频谱的能量分布、相位等特征。比较这些特征的相似性,如计算频谱能量的相关性,相关性越高,说明纹理相似度越高。
  • 小波变换
    • 原理:通过小波函数对图像进行多尺度分解,将图像分解为不同频率子带的系数。不同尺度和方向的小波系数能够捕捉到图像不同层次的纹理信息,如水平、垂直和对角方向的纹理细节。
    • 特征提取与比较:从各子带中提取能量、方差等特征,构建特征向量。比较两幅图相同区域的小波特征向量的距离或相似度,如采用欧氏距离或余弦相似度,以此判断纹理的相似程度。

还可以使用多种方法基于纹理检测来实现相同尺寸图像的相似度比较,以下是一些常见的方法及示例代码:

灰度共生矩阵(GLCM)

灰度共生矩阵是一种通过统计图像中灰度值的空间相关性来描述纹理特征的方法。可以计算图像的GLCM特征,然后比较这些特征来衡量图像的相似度。

from skimage.feature import greycomatrix, greycoprops
import numpy as np
import cv2

def glcm_similarity(image1, image2):
    # 计算灰度共生矩阵
    glcm1 = greycomatrix(image1, distances=[1], angles=[0], levels=256, symmetric=True, normed=True)
    glcm2 = greycomatrix(image2, distances=[1], angles=[0], levels=256, symmetric=True, normed=True)

    # 计算对比度、相关性、能量和同质性等特征
    props1 = [greycoprops(glcm1, prop) for prop in ['contrast', 'correlation', 'energy', 'homogeneity']]
    props2 = [greycoprops(glcm2, prop) for prop in ['contrast', 'correlation', 'energy', 'homogeneity']]

    # 计算特征向量之间的欧氏距离作为相似度度量
    similarity = np.linalg.norm(np.array(props1) - np.array(props2))

    return similarity

# 读取图像并转换为灰度图
image1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
image2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)

similarity = glcm_similarity(image1, image2)
print("GLCM Similarity:", similarity)

局部二值模式(LBP)

局部二值模式是一种用于描述图像局部纹理特征的方法,它通过比较中心像素与周围像素的灰度值来生成特征。

from skimage.feature import local_binary_pattern
import numpy as np
import cv2

def lbp_similarity(image1, image2):
    # 设置LBP参数
    radius = 1
    n_points = 8 * radius

    # 计算LBP特征
    lbp1 = local_binary_pattern(image1, n_points, radius, method='uniform')
    lbp2 = local_binary_pattern(image2, n_points, radius, method='uniform')

    # 计算LBP直方图
    hist1, _ = np.histogram(lbp1.ravel(), bins=np.arange(0, n_points + 3), range=(0, n_points + 2))
    hist2, _ = np.histogram(lbp2.ravel(), bins=np.arange(0, n_points + 3), range=(0, n_points + 2))

    # 归一化直方图
    hist1 = hist1.astype("float") / hist1.sum()
    hist2 = hist2.astype("float") / hist2.sum()

    # 计算直方图的卡方距离作为相似度度量
    similarity = 0.5 * np.sum([((a - b) ** 2) / (a + b + 1e-10) for a, b in zip(hist1, hist2)])

    return similarity

# 读取图像并转换为灰度图
image1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
image2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)

similarity = lbp_similarity(image1, image2)
print("LBP Similarity:", similarity)

小波变换

小波变换可以将图像分解为不同频率的子带,通过分析这些子带的系数来提取纹理特征。

import pywt
import numpy as np
import cv2

def wavelet_similarity(image1, image2):
    # 进行小波变换
    coeffs1 = pywt.dwt2(image1, 'haar')
    coeffs2 = pywt.dwt2(image2, 'haar')

    # 提取小波系数
    cA1, (cH1, cV1, cD1) = coeffs1
    cA2, (cH2, cV2, cD2) = coeffs2

    # 计算系数的差异
    diff_A = np.linalg.norm(cA1 - cA2)
    diff_H = np.linalg.norm(cH1 - cH2)
    diff_V = np.linalg.norm(cV1 - cV2)
    diff_D = np.linalg.norm(cD1 - cD2)

    # 综合差异作为相似度度量
    similarity = diff_A + diff_H + diff_V + diff_D

    return similarity

# 读取图像并转换为灰度图
image1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
image2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)

similarity = wavelet_similarity(image1, image2)
print("Wavelet Similarity:", similarity)

以上代码中,相似度的值越小,表示图像越相似。在实际应用中,可以根据具体需求调整参数和相似度计算方法。

基于结构的方法

  • 形态学方法
    • 原理:利用形态学的基本运算,如腐蚀、膨胀、开运算、闭运算等,来提取图像中的纹理结构信息。例如,通过腐蚀运算可以去除图像中的一些细小纹理,突出主要的纹理结构。
    • 特征提取与比较:对经过形态学运算后的图像进行分析,提取纹理的几何形状、大小、分布等特征。比较两幅图相同区域的这些结构特征,计算特征之间的相似度,如形状相似度、分布密度相似度等,来判断纹理的相似性。
    • 骨架提取方法
    • 原理:提取图像中纹理的骨架,骨架可以看作是纹理的中心轴线,它反映了纹理的大致形状和走向。例如,对于一些具有线条状纹理的图像,通过骨架提取算法可以得到这些线条的中心路径。
    • 特征提取与比较:比较两幅图相同区域的骨架特征,如骨架的长度、曲率、分支点等。计算这些特征的差异或相似度,以此来衡量纹理的相似程度。

基于模型的方法

  • 马尔可夫随机场模型
    • 原理:将图像中的纹理看作是一个马尔可夫随机场,利用马尔可夫随机场的概率模型来描述纹理的统计特性。模型中的参数反映了纹理的局部依赖关系和空间分布规律。
    • 特征提取与比较:估计马尔可夫随机场模型的参数,如邻域像素之间的相互作用参数。通过比较两幅图相同区域的模型参数的相似度来判断纹理的相似性,常用的方法有计算参数之间的距离或进行模型拟合度的比较。
  • 高斯混合模型
    • 原理:将图像的纹理特征用高斯混合模型来建模,假设纹理特征是由多个高斯分布混合而成的。每个高斯分布代表了纹理的一种局部特征模式。
    • 特征提取与比较:估计高斯混合模型的参数,包括均值、协方差等。比较两幅图相同区域的高斯混合模型的参数,计算参数之间的差异或相似度,如采用KL散度等方法来衡量两个高斯混合模型的相似程度,从而判断纹理的相似度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/975610.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[python脚本]论文1.(一)CPU/内存数据分析和分组

CPU 收集到的CPU数据&#xff0c;格式如下&#xff1a; 由于这里6个数据为一组来收集latency的数据以及各个分位值的数据&#xff0c;而本质上每一行都是一次完整的测试&#xff0c;因此这里将这个csv文件分为两个文件&#xff0c;第一个是和latency相关的&#xff0c;将6条数…

綫性與非綫性泛函分析與應用_1.例題(下)-半母本

第1章 實分析與函數論:快速回顧(下) 五、基數;有限集和無限集相關例題 例題1:集合基數的判斷 判斷集合和集合B=\{a,b,c,d,e\}的基數關係。 解析: 可以構造一個雙射,例如,,,,。 所以,兩個集合具有相同的基數。 例題2:可數集的證明 證明整數集是可數集。 解析: …

MQTT实现智能家居------3、源码分析(超详细)

一、连接服务器 1、初始化&#xff1a; mqtt_log_init();是一个空函数&#xff0c;自己定义宏 client mqtt_lease();//创建一个client结构体&#xff0c;从此以后client代表客户端 platform_memory_alloc();//是一个分配内存的总函数&#xff0c;可以适用于Linux、FreeRTos…

Qt常用控件之日历QCalendarWidget

日历QCalendarWidget QCalendarWidget 是一个日历控件。 QCalendarWidget属性 属性说明selectDate当前选中日期。minimumDate最小日期。maximumDate最大日期。firstDayOfWeek设置每周的第一天是周几&#xff08;影响日历的第一列是周几&#xff09;。gridVisible是否显示日历…

智慧废品回收小程序php+uniapp

废品回收小程序&#xff1a;数字化赋能环保&#xff0c;开启资源循环新时代 城市垃圾治理难题&#xff0c;废品回收小程序成破局关键 随着城市化进程加速与消费水平提升&#xff0c;我国生活垃圾总量逐年攀升&#xff0c;年均增速达5%-8%&#xff0c;其中超30%为可回收物。然…

SkyWalking集成Kafka实现日志异步采集经验总结

SkyWalking日志异步采集架构 【重点知识】 1、【Agent】kafka-reporter-plugin-x.x.x.jar包放plugins目录后必走kafka&#xff08;kafka没有正确配置就会报错&#xff09; 2、【Agent】异步如不开启数据压缩&#xff0c;日志数据较大&#xff0c;pod多、业务大时容易造成网络…

C++第十六讲:红黑树

C第十六讲&#xff1a;红黑树 1.什么是红黑树1.1红黑树的特点 2.MyRBTree实现2.1红黑树的结构2.2红黑树的插入2.2.1插入的总体逻辑2.2.2情况一&#xff1a;变色2.2.3情况二&#xff1a;单旋 变色2.2.4情况三&#xff1a;双旋 变色2.2.4插入代码总结 2.3红黑树的检查2.4完整代…

KubeKey一键安装部署k8s集群和KubeSphere详细教程

目录 一、KubeKey简介 二、k8s集群KubeSphere安装 集群规划 硬件要求 Kubernetes支持版本 操作系统要求 SSH免密登录 配置集群时钟 所有节点安装依赖 安装docker DNS要求 存储要求 下载 KubeKey 验证KubeKey 配置集群文件 安装集群 验证命令 登录页面 一、Ku…

Java 值传递

1 形参&实参 方法的定义可能会用到参数&#xff0c;参数在程序语言中分为&#xff1a; 实参&#xff1a;用于传递给函数/方法的参数&#xff0c;必须有确定的值。 形参&#xff1a;用于定义函数/方法&#xff0c;接收实参&#xff0c;不需要有确定的值。 String hello …

开源一款I2C电机驱动扩展板-FreakStudio多米诺系列

总线直流电机扩展板 原文链接&#xff1a; FreakStudio的博客 摘要 设计了一个I2C电机驱动板&#xff0c;通过I2C接口控制多个电机的转速和方向&#xff0c;支持刹车和减速功能。可连接16个扩展板&#xff0c;具有PWM输出、过流过热保护和可更换电机驱动芯片。支持按键控制…

论文笔记(七十二)Reward Centering(三)

Reward Centering&#xff08;三&#xff09; 文章概括摘要3 基于值的奖励中心化4 案例研究&#xff1a; 以奖励为中心的 Q-learning5 讨论、局限性与未来工作致谢 文章概括 引用&#xff1a; article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan…

内部知识库的核心模块是什么?

内容概要 现代企业内部知识库的架构设计遵循系统性、可扩展性与安全性三重原则&#xff0c;其核心模块的协同运作构成完整的知识资产运营体系。在知识存储层&#xff0c;基于结构化分类的存储管理采用多级目录架构&#xff08;如客户服务库、培训学习库&#xff09;&#xff0…

kafka基本知识

什么是 Kafka&#xff1f; Apache Kafka 是一个开源的分布式流处理平台&#xff0c;最初由 LinkedIn 开发&#xff0c;后来成为 Apache 软件基金会的一部分。Kafka 主要用于构建实时数据管道和流处理应用程序。它能够高效地处理大量的数据流&#xff0c;广泛应用于日志收集、数…

P8716 [蓝桥杯 2020 省 AB2] 回文日期

1 题目说明 2 题目分析 暴力不会超时&#xff0c;O(n)的时间复杂度&#xff0c; < 1 0 8 <10^8 <108。分析见代码&#xff1a; #include<iostream> #include<string> using namespace std;int m[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};// 判断日期…

手机时钟精确到秒

这里以小米手机 MIUI 系统 举例 进入开发者模式 设置 - 我的设备 - 全部参数与信息 快速连续多次点击 MIUI 版本选框&#xff0c;即可进入开发者模式&#xff1b; 打开时间悬浮窗 设置 - 更多设置 - 开发者选项&#xff1b; 滑动至 输入 模块&#xff0c;开启时间悬浮窗&a…

京东广告基于 Apache Doris 的冷热数据分层实践

一、背景介绍 京东广告围绕Apache Doris建设广告数据存储服务&#xff0c;为广告主提供实时广告效果报表和多维数据分析服务。历经多年发展&#xff0c;积累了海量的广告数据&#xff0c;目前系统总数据容量接近1PB&#xff0c;数据行数达到18万亿行&#xff0c;日查询请求量8…

ubuntu新系统使用指南

1. 更新源 2. 配置rime 输入法 sudo apt install ibus-rimeibus-setup #打开配置界面添加雾凇拼音 cd ~/Documents/Tool/input_source/plumgit clone --depth 1 https://github.com/rime/plum plum #没有梯子就劝退cd plum/bash rime-install iDvel/rime-ice:others/recipe…

给小米/红米手机root(工具基本为官方工具)——KernelSU篇

目录 前言准备工作下载刷机包xiaomirom下载刷机包【适用于MIUI和hyperOS】“hyper更新”微信小程序【只适用于hyperOS】 下载KernelSU刷机所需程序和驱动文件 开始刷机设置手机第一种刷机方式【KMI】推荐提取boot或init_boot分区 第二种刷机方式【GKI】不推荐 结语 前言 刷机需…

Liunx(CentOS-6-x86_64)系统安装MySql(5.6.50)

一&#xff1a;安装Liunx&#xff08;CentOS-6-x86_64&#xff09; 安装Liunx&#xff08;CentOS-6-x86_64&#xff09; 二&#xff1a;下载MySql&#xff08;5.6.50&#xff09; MySql下载官网 二&#xff1a;安装MySql 2.1 将mysql上传到Liunx 文件地址 /usr/local/ 2…

2025版-Github账号注册详细过程

目录 1.访问GitHub官网 2. 点击“Sign up”按钮 3. 填写注册信息 4. 验证机器人 5. 点击“Create account”按钮 6. 验证邮箱 7. 完成注册 8. 初始设置&#xff08;可选&#xff09; 9. 开始使用 注意事项 1.访问GitHub官网 打开浏览器&#xff0c;访问 GitHub官网。 …