当前位置: 首页 > news >正文

织梦后台点击网站主页网页制作三剑客包括

织梦后台点击网站主页,网页制作三剑客包括,大数据分析网站,北京企业建网站优帮云目录 前言​​​​​​​ 一、 梯度处理的sobel算子函数 功能 参数 返回值 代码演示 二、梯度处理拉普拉斯算子 功能 参数 返回值 代码演示 三、Canny算子 功能 参数 返回值 代码演示 四、findContours函数与drawContours函数 功能 参数 返回值 代码演示 …目录 前言​​​​​​​ 一、 梯度处理的sobel算子函数 功能 参数 返回值 代码演示 二、梯度处理拉普拉斯算子 功能 参数  返回值  代码演示  三、Canny算子 功能 参数 返回值 代码演示 四、findContours函数与drawContours函数 功能 参数 返回值 代码演示 五、透视变换矩阵函数 功能 参数 返回值 代码演示  六、图像的外接边框 总结 前言 在计算机视觉Computer Vision, CV中边缘识别是一个至关重要的步骤它对于多种图像处理和计算机视觉任务都具有重要意义。在OpenCV等计算机视觉库中提供了多种边缘检测算法如Sobel算子、Laplacian算子、Canny边缘检测等这些算法可以有效地识别图像中的边缘信息为后续的图像处理和分析任务提供有力支持。通过合理地选择和调整算法参数我们可以获得更好的边缘检测效果从而提高计算机视觉任务的准确性和效率。 一、 梯度处理的sobel算子函数 功能 Sobel算子是一种用于图像处理中边缘检测的算法主要利用图像像素梯度的方法来计算图像亮度的一阶梯度从而突出图像中的边缘。它通常用于计算机视觉和图像处理任务中如物体检测、图像分割等。Sobel 函数通常用于边缘检测、图像分割、特征提取等图像处理任务中。通过计算图像在 x 和 y 方向上的梯度可以突出图像中的边缘信息这对于后续的图像分析和处理非常有用。 _typing.overload def Sobel(src: cv2.typing.MatLike,ddepth: int,dx: int, dy: int, dst: cv2.typing.MatLike | None ..., ksize: int ..., scale: float ...,delta: float ..., borderType: int ...)\- cv2.typing.MatLike: ... 参数 ‌src (cv2.typing.MatLike)‌: 输入图像必须是一个灰度图像或彩色图像的一个通道。类型cv2.typing.MatLike表示兼容 OpenCV 矩阵类型的输入。 ‌ddepth (int)‌: 输出图像的所需深度。当参数值为 -1 时输出图像与输入图像具有相同的深度。否则它可以是 cv2.CV_8U, cv2.CV_16U, cv2.CV_32F 等之一表示 8 位无符号、16 位无符号或 32 位浮点类型。 ‌dx (int)‌: x 方向上的导数阶数。当需要计算 x 方向上的梯度时将其设置为 1否则设置为 0. ‌dy (int)‌: y 方向上的导数阶数。当需要计算 y 方向上的梯度时将其设置为 1否则设置为 0。 ‌dst (cv2.typing.MatLike | None)‌: 输出图像与输入图像具有相同的大小和类型。如果此参数为 None则函数会创建一个新的输出图像。类型cv2.typing.MatLike | None表示可以是兼容 OpenCV 矩阵类型的输出或者为 None。 ksize (int, 默认值为 3)‌: Sobel 算子的大小必须是 1、3、5、7 之一。它表示算子在 x 或 y 方向上使用的像素邻域的大小。 ‌scale (float, 默认值为 1)‌: 可选的比例因子用于缩放导数的绝对值。默认情况下不进行缩放。 ‌delta (float, 默认值为 0)‌: 可选的增量值该值会被加到最终的梯度图像中。这可以用于调整结果的亮度或对比度。 borderType (int, 默认值为 cv2.BORDER_DEFAULT)‌: 边界模式用于指定边界外像素的外推方法。常见的边界模式包括 cv2.BORDER_CONSTANT, cv2.BORDER_REFLECT, cv2.BORDER_REPLICATE 等。默认值为 cv2.BORDER_DEFAULT它通常表示一种合理的默认边界外推方法。 返回值 ‌cv2.typing.MatLike‌: 输出图像包含了计算得到的梯度信息。如果 dst 参数不为 None则此输出图像与 dst 参数指向的图像相同否则函数会返回一个新的图像。 代码演示 import cv2 import numpy as np# 读取一张图 img cv2.imread(./shudu.png)# sobel算子# 水平梯度处理 img_sobel1 cv2.Sobel(img,-1,0,dy1,ksize3)# 垂直梯度处理 img_sobel2 cv2.Sobel(img,-1,1,dy0,ksize3)# 进行梯度处理 方法一cv2.imshow(image,img)cv2.imshow(img_sobel,img_sobel1) cv2.imshow(img_sobel2,img_sobel2) cv2.waitKey(0) 二、梯度处理拉普拉斯算子 Laplacian算子是一种用于图像处理中边缘检测的二阶微分算子。与Sobel算子不同Laplacian算子通过计算图像像素值的二阶导数来检测边缘因此它对图像中的噪声更加敏感但也能更精确地定位边缘。 功能 Laplacian算子函数的主要功能是检测图像中的边缘和纹理变化。它通过计算图像的二阶导数来突出图像中的快速变化区域这些区域通常对应于边缘或纹理。  def Laplacian(src: cv2.typing.MatLike,ddepth: int, dst: cv2.typing.MatLike | None ...,ksize: int ..., scale: float ..., delta: float ...,borderType: int ...) \- cv2.typing.MatLike: ... 参数  ‌src (cv2.typing.MatLike)‌: 输入图像必须是一个灰度图像。类型cv2.typing.MatLike表示兼容 OpenCV 矩阵类型的输入。 ‌ddepth (int)‌: 输出图像的所需深度。它决定了输出图像的数据类型如 cv2.CV_8U8 位无符号、cv2.CV_16U16 位无符号、cv2.CV_32F32 位浮点或 cv2.CV_64F64 位浮点等。当参数值为 -1 时输出图像与输入图像具有相同的深度。 ‌dst (cv2.typing.MatLike | None)‌: 输出图像与输入图像具有相同的大小和类型除非 ddepth 指定了不同的深度。如果此参数为 None则函数会创建一个新的输出图像。类型cv2.typing.MatLike | None表示可以是兼容 OpenCV 矩阵类型的输出或者为 None。 ‌ksize (int, 默认值为 1)‌: 用于计算二阶导数的滤波器的大小。它必须是正奇数且通常取值为 1、3、5 等。当 ksize1 时表示使用标准的 Laplacian 滤波器即二阶导数滤波器当 ksize 大于 1 时表示使用扩展的 Laplacian 滤波器这有助于在保持边缘检测精度的同时减少噪声的影响。 ‌scale (float, 默认值为 1)‌: 可选的比例因子用于缩放二阶导数的绝对值。默认情况下不进行缩放。 ‌delta (float, 默认值为 0)‌: 可选的增量值该值会被加到最终的梯度图像中。这可以用于调整结果的亮度或对比度。 ‌borderType (int, 默认值为 cv2.BORDER_DEFAULT)‌: 边界模式用于指定边界外像素的外推方法。常见的边界模式包括 cv2.BORDER_CONSTANT常数填充、cv2.BORDER_REFLECT反射、cv2.BORDER_REPLICATE复制等。默认值为 cv2.BORDER_DEFAULT它通常表示一种合理的默认边界外推方法。 返回值  ‌cv2.typing.MatLike‌: 输出图像包含了计算得到的二阶导数信息即 Laplacian 结果。如果 dst 参数不为 None则此输出图像与 dst 参数指向的图像相同否则函数会返回一个新的图像。 代码演示  import cv2img cv2.imread(./shudu.png)img_lap cv2.Laplacian(img,-1,ksize3)cv2.imshow(image,img)cv2.imshow(image_lap,img_lap)cv2.waitKey(0) 三、Canny算子 Canny算子Canny Edge Detector是一种多级边缘检测算法被广泛应用于图像处理中以获取图像的边缘信息。它以其良好的检测性能和抗噪声能力而著称。下面是Canny算子函数的功能、参数、返回值以及应用。 功能 Canny算子函数的主要功能是检测图像中的边缘同时尽可能地减少噪声的影响并精确地定位边缘。它通过一系列的处理步骤包括高斯滤波、计算梯度、非极大值抑制和双阈值检测来实现这一目标。 参数 def Canny(image: cv2.typing.MatLike,threshold1: float, threshold2: float,edges: cv2.typing.MatLike | None ..., apertureSize: int ..., L2gradient: bool ...) \- cv2.typing.MatLike: ... 输入图像 (src)‌: 类型灰度图像二维数组或矩阵。说明需要进行边缘检测的源图像。 ‌阈值1 (threshold1)‌: 类型浮点数或整数。说明低阈值用于双阈值检测中的较低阈值。 ‌阈值2 (threshold2)‌: 类型浮点数或整数。说明高阈值用于双阈值检测中的较高阈值。通常是低阈值的两倍或三倍。 ‌边缘 (edges)‌: 类型二维数组或矩阵。说明用于存储检测到的边缘的输出图像。通常是一个与输入图像大小相同的二值图像。 ‌apertureSize (可选)‌: 类型整数。说明Sobel算子的大小它决定了梯度计算的精度。默认值为3表示使用3x3的Sobel算子。 ‌L2gradient (可选)‌: 类型布尔值。说明一个标志指示是否使用更精确的L2范数进行梯度计算。如果为True则使用L2范数如果为False默认则使用L1范数。 返回值 Canny算子函数的返回值通常是检测到的边缘图像它是一个二维数组或矩阵包含了图像中的边缘信息。这个边缘图像通常是一个二值图像其中边缘像素的值为非零如255非边缘像素的值为零。 代码演示 四、findContours函数与drawContours函数 findContours 函数是 OpenCV 中用于检测图像中轮廓contours的非常有用的函数。轮廓是图像中形状或物体的边界它们对于图像分析、物体检测和识别等任务至关重要。 drawContours 函数是 OpenCV 中用于在图像上绘制轮廓的非常实用的函数。它可以将通过 findContours 函数检测到的轮廓绘制在原始图像或任何其他图像上以便进行可视化或进一步的处理 功能 findContours 函数的主要功能是从二值图像中检测轮廓。这些轮廓可以表示图像中物体的边界为后续的图像分析提供关键信息 drawContours 函数的主要功能是在图像上绘制一个或多个轮廓。这些轮廓通常是通过 findContours 函数从二值图像中检测到的但也可以是由用户自定义的点集。  参数 def findContours(image: cv2.typing.MatLike, mode: int,method: int, contours: _typing.Sequence[cv2.typing.MatLike] | None ...,hierarchy: cv2.typing.MatLike | None ..., offset: cv2.typing.Point ...) \- tuple[_typing.Sequence[cv2.typing.MatLike],cv2.typing.MatLike]: ...‌image (输入图像)‌: 类型二维数组通常是二值图像。说明需要进行轮廓检测的源图像。通常这是通过阈值分割、边缘检测或其他二值化方法得到的图像。 ‌mode (轮廓检索模式)‌: 类型整数。说明指定轮廓检索的模式。常用的模式包括 cv2.RETR_EXTERNAL只检索外部轮廓、cv2.RETR_LIST检索所有轮廓但不创建任何父子关系、cv2.RETR_CCOMP检索所有轮廓并将它们组织为两层结构顶层是外部边界底层是孔的边界、cv2.RETR_TREE检索所有轮廓并重建完整的层次结构。 ‌method (轮廓近似方法)‌: 类型整数。说明指定轮廓近似的方法。常用的方法包括 cv2.CHAIN_APPROX_NONE存储所有的轮廓点不进行任何近似、cv2.CHAIN_APPROX_SIMPLE压缩水平、垂直和对角线段只保留它们的终点、cv2.CHAIN_APPROX_TC89_L1、cv2.CHAIN_APPROX_TC89_KCOS使用 Teh-Chin 链式近似算法。 ‌contours (输出轮廓)‌: 类型列表的列表。说明这是一个输出参数用于存储检测到的轮廓。每个轮廓都是一个点的列表这些点表示了轮廓的边界。 ‌hierarchy (轮廓的层次结构, 可选)‌: 类型NumPy 数组。说明这是一个输出参数用于存储轮廓之间的层次关系。如果不需要层次信息可以将其设置为 None。 ‌offset (轮廓点的偏移量, 可选, 在某些版本中可能不可用)‌: 类型元组两个整数。说明指定轮廓点的偏移量。这个参数在某些版本的 OpenCV 中可能不可用或者其用法可能有所不同。 def drawContours(image: cv2.typing.MatLike,contours: _typing.Sequence[cv2.typing.MatLike],contourIdx: int,color: cv2.typing.Scalar, thickness: int ...,lineType: int ...,hierarchy: cv2.typing.MatLike | None ..., maxLevel: int ..., offset: cv2.typing.Point ...) \- cv2.typing.MatLike: ... ‌image (目标图像)‌: 类型三维数组通常是彩色图像但也可以是灰度图像。说明要在其上绘制轮廓的图像。这个图像将被修改以包含绘制的轮廓。 ‌contours (轮廓列表)‌: 类型列表的列表其中每个内部列表都包含表示轮廓的点。说明要绘制的轮廓列表。这些轮廓通常是通过 findContours 函数获取的。 ‌contourIdx (轮廓索引)‌: 类型整数。说明指定要绘制的轮廓的索引。如果设置为 -1则绘制所有轮廓。 ‌color (轮廓颜色)‌: 类型元组三个整数表示 BGR 颜色值。说明轮廓的颜色。在 OpenCV 中颜色通常以 BGR蓝、绿、红格式指定而不是常见的 RGB 格式。 ‌thickness (轮廓线宽)‌: 类型整数。说明轮廓线的宽度。如果设置为 -1或某些负值具体取决于 OpenCV 版本则轮廓内部将被填充。 ‌lineType (线条类型, 可选)‌: 类型整数。说明线条的类型例如 cv2.LINE_88-连通线、cv2.LINE_44-连通线或 cv2.LINE_AA抗锯齿线。默认值是 cv2.LINE_8。 ‌hierarchy (轮廓层次结构, 可选)‌: 类型NumPy 数组。说明与轮廓列表相关联的层次结构信息。这个参数通常与 findContours 函数一起使用但在 drawContours 中通常是可选的因为绘制轮廓时通常不需要层次信息。 ‌maxLevel (最大层次深度, 可选, 某些版本中可能不可用)‌: 类型整数。说明指定要绘制的轮廓的最大层次深度。这个参数在某些版本的 OpenCV 中可能不可用。 ‌offset (轮廓点偏移量, 可选, 某些版本中可能不可用)‌: 类型元组两个整数。说明指定轮廓点的偏移量。这个参数在某些版本的 OpenCV 中可能不可用或者其用法可能有所不同。 返回值 ‌contours‌: 检测到的轮廓列表。每个轮廓都是一个点的列表或 NumPy 数组表示了轮廓的边界。‌hierarchy‌: 轮廓之间的层次关系如果请求了的话。这是一个 NumPy 数组包含了关于轮廓之间如何相互关联的信息。 cv2.typing.MatLike:输出图像。如果 dst 参数不为 None则此输出图像与 dimage参数指向的图像相同否则函数会返回一个新的图像。 代码演示 import cv2img cv2.imread(./tubao.png) img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) _, img_binary cv2.threshold(img_gray,125,255,cv2.THRESH_BINARYcv2.THRESH_OTSU)# 寻找轮廓 contours,hierarchy cv2.findContours(img_binary,cv2.RETR_EXTERNAL, # 查询轮廓方式cv2.CHAIN_APPROX_SIMPLE) # 保存轮廓点坐标的方式img_copy img.copy() # 绘制轮廓 img_draw cv2.drawContours(img_copy, # 要绘制轮廓的图像contours, # 轮廓坐标顶点坐标集合-1, # 轮廓集合的索引(255,0,0), # 轮廓颜色3) # 轮廓粗细cv2.imshow(image_binary,img_binary) cv2.imshow(img_copy,img_copy) cv2.waitKey(0) 五、透视变换矩阵函数 getPerspectiveTransform 函数是 OpenCV 中用于计算透视变换矩阵的关键函数。这个函数接受源点集src和目标点集dst然后计算出一个变换矩阵该矩阵可以将源点集中的点映射到目标点集中的相应点。下面是对 getPerspectiveTransform 函数的详细解释包括其功能、参数、返回值以及应用。 warpPerspective 函数是 OpenCV 中用于对图像进行透视变换的关键函数。它接受一个源图像src、一个透视变换矩阵M、一个目标图像的大小dsize以及可选的目标图像dst、插值方法flags、边界模式borderMode和边界值borderValue然后返回透视变换后的图像。  功能 getPerspectiveTransform 函数的主要功能是计算一个透视变换矩阵该矩阵可以将一个平面上的点集映射到另一个平面上的点集。这种变换在图像拼接、图像矫正、增强现实等应用中非常有用。 warpPerspective 函数的主要功能是对源图像进行透视变换使其看起来像是从另一个角度或位置拍摄的。这种变换在图像拼接、图像矫正、3D效果模拟等应用中非常有用。  参数 def getPerspectiveTransform(src: cv2.typing.MatLike,dst: cv2.typing.MatLike, solveMethod: int ...) \- cv2.typing.MatLike: ...‌src (源点集)‌: 类型cv2.typing.MatLike通常是一个包含四个二维点通常是浮点型的 NumPy 数组或类似结构。说明源点集表示要进行透视变换的原始图像或平面中的四个点。这些点通常按照某种顺序排列例如顺时针或逆时针。 ‌dst (目标点集)‌: 类型cv2.typing.MatLike与源点集相同也是一个包含四个二维点的 NumPy 数组或类似结构。说明目标点集表示透视变换后的图像或平面中的四个点。这些点应该与源点集中的点一一对应。 ‌solveMethod (求解方法, 可选)‌: 类型整数。说明指定用于计算透视变换矩阵的求解方法。在 OpenCV 中通常使用 cv2.DECOMP_LU、cv2.DECOMP_QR、cv2.DECOMP_NORMAL 等方法。如果省略此参数OpenCV 将选择一种默认的方法。 def warpPerspective(src: cv2.typing.MatLike,M: cv2.typing.MatLike, dsize: cv2.typing.Size,dst: cv2.typing.MatLike | None ..., flags: int ...,borderMode: int ...,borderValue: cv2.typing.Scalar ...) \- cv2.typing.MatLike: ... ‌src (源图像)‌: 类型cv2.typing.MatLike通常是一个包含图像数据的 NumPy 数组或类似结构。说明要进行透视变换的源图像。 ‌M (透视变换矩阵)‌: 类型cv2.typing.MatLike通常是一个 3x3 的浮点型矩阵。说明透视变换矩阵可以通过 getPerspectiveTransform 函数计算得到。 ‌dsize (目标图像大小)‌: 类型cv2.typing.Size是一个包含两个整数的元组或类似结构。说明透视变换后目标图像的大小以像素为单位。 ‌dst (目标图像, 可选)‌: 类型cv2.typing.MatLike 或 None。说明如果提供则透视变换后的图像将存储在这个参数中。如果为 None则函数将创建一个新的图像来存储结果。 ‌flags (插值方法, 可选)‌: 类型整数。说明指定用于图像插值的方法例如 cv2.INTER_LINEAR、cv2.INTER_NEAREST、cv2.INTER_CUBIC 等。默认值是 cv2.INTER_LINEAR。 ‌borderMode (边界模式, 可选)‌: 类型整数。说明指定边界像素的外推方法例如 cv2.BORDER_CONSTANT、cv2.BORDER_REFLECT 等。当图像进行透视变换后有些像素可能会超出目标图像的边界此时需要使用这种方法来处理这些像素。默认值是 cv2.BORDER_CONSTANT。 ‌borderValue (边界值, 可选)‌: 类型cv2.typing.Scalar通常是一个包含三个整数的元组或类似结构表示 BGR 颜色值。说明当 borderMode 设置为 cv2.BORDER_CONSTANT 时这个参数指定了边界像素的颜色值。默认值是黑色 (0, 0, 0)。 返回值 getPerspectiveTransform 函数返回一个 cv2.typing.MatLike 对象通常是一个 3x3 的浮点型矩阵表示计算出的透视变换矩阵。这个矩阵可以用于将源点集中的点映射到目标点集中的点 warpPerspective 函数返回一个 cv2.typing.MatLike 对象表示透视变换后的图像。  代码演示  import cv2 import matplotlib.pyplot as plt import numpy as npimg cv2.imread(./youhua.png) img_arr np.array(img) plt.imshow(img_arr) # points1 np.array([[200,120],[700,170],[140,400],[650,460]],dtypenp.float32) points1 np.array([[174,141],[622,35],[88,493],[652,550]],dtypenp.float32) points2 np.array([[0,0],[img.shape[1],0],[0,img.shape[0]],[img.shape[1],img.shape[0]]],dtypenp.float32) M cv2.getPerspectiveTransform(points1,points2) img_Perspective cv2.warpPerspective(img,M,(img.shape[1],img.shape[0])) cv2.imshow(img_,img_Perspective) cv2.imshow(image,img) cv2.waitKey(0) plt.show() 六、图像的外接边框 在图像处理中轮廓的外接边界框Bounding Box是一个非常重要的概念它通常用于表示轮廓的外部边界。外接边界框是一个简单的矩形它完全包含轮廓内的所有点并且其各边与图像的坐标轴平行。 ‌轮廓‌轮廓是图像中物体边缘的集合通常通过边缘检测或轮廓检测算法得到。轮廓可以是不规则的形状准确地反映了物体的外形。‌外接边界框‌外接边界框是一个完全包含轮廓的矩形它的各边与图像的坐标轴平行。外接边界框不一定紧贴轮廓但它一定包含轮廓内的所有点 用途‌ 轮廓通常用于图像分割、物体识别、形状分析等任务因为它们提供了物体的精确边界信息。外接边界框则更多地用于物体定位、跟踪、标注等任务因为它们简化了物体的表示使得处理和分析更加高效。 计算‌ 轮廓的计算通常涉及复杂的边缘检测或轮廓检测算法如Canny边缘检测、Sobel算子、findContours函数等。外接边界框的计算则相对简单一旦得到轮廓的点集只需要找到这些点的最小和最大x、y坐标就可以确定外接边界框的位置和大小。 代码演示 import cv2 import numpy as np# 读取图片 img cv2.imread(./outline.png)img cv2.resize(img,dsizeNone,fx0.8,fy0.8) # 灰度化 img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 二值化 _,img_binary cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY_INVcv2.THRESH_OTSU)# 寻找论轮廓 c,v cv2.findContours(img_binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)# 绘制轮廓 img_copy img.copy() img_copy cv2.drawContours(img_copy,c,-1,(0,0,255),2)# 外接矩形 # 给所有轮廓都绘制 for cnt in c:x,y,w,h cv2.boundingRect(cnt)# 调用外接矩形函数 获取左上角坐标xy) 和宽w高hcv2.rectangle(img_copy,[x,y], # 左上角坐标[xw,yh], # 右下角坐标(255,255,0), # 矩形颜色2 # 矩形线条粗细)# 调用最小面积外接矩形函数 获取包含中心点坐标 、长宽、旋转角度的三个元组ret cv2.minAreaRect(cnt)box np.int32(cv2.boxPoints(ret)) # 可以获取旋转矩阵的四个顶点cv2.drawContours(img_copy,[box],-1,(255,0,0),3)cv2.polylines(img_copy,[box],True,(255,255,0),1)# 调用最小外接圆的函数,获取圆心和半径(x,y),radius cv2.minEnclosingCircle(cnt)(x,y,radius) np.int32((x,y,radius))cv2.circle(img_copy,(x,y),radius,(0,255,255),2)cv2.imshow(img,img) cv2.imshow(img_copy,img_copy)cv2.waitKey(0) 总结 在计算机视觉Computer Vision, CV中边缘识别是一个至关重要的步骤它对于多种图像处理和计算机视觉任务都具有重要意义。在OpenCV等计算机视觉库中提供了多种边缘检测算法如Sobel算子、Laplacian算子、Canny边缘检测等这些算法可以有效地识别图像中的边缘信息为后续的图像处理和分析任务提供有力支持。通过合理地选择和调整算法参数我们可以获得更好的边缘检测效果从而提高计算机视觉任务的准确性和效率。
http://www.hkea.cn/news/14348868/

相关文章:

  • 茗哥网站建设网站开发范例文档
  • 商场网站设计天眼查免费查询
  • 做公司网站成本长春网站制作教程
  • 有什么好黄页网站中山网站建设文化平台
  • 网站建设广金手指六六十四wordpress主页修改主页
  • 兰州做网站客户手机兼职赚钱平台一单一结
  • 一个服务器做多个网站天津建设工程信息网 塘沽一中
  • 江门移动网站建设多少钱网站建设计划表模板下载
  • 简述建设企业网站可信度的具体策略做网站卖机器怎么弄
  • 专业seo网站优化推广排名教程建一个网站素材哪里来
  • 婚礼网站怎么做网站英文版是怎么做的
  • 网站开发公司 杭州网站专题页是什么
  • e龙岩网站做课件好用的网站
  • 巢湖市网站建设优化广告营销平台
  • 上海网站设计公司联系方式精美旅游网站模板
  • 紫金优化网站制作wordpress导航栏编辑
  • 网站建设的意见征集遵义制作公司网站的公司
  • 招聘网站做招聘顾问房地产管理网站
  • 物流网站首页图片渑池县建设局网站
  • 网站设计常用软件2021好心人给个开车的网站
  • 连锁酒店的网站建设上海网站建设的企
  • 网站建设那个比较好手机网站菜单代码
  • 阳泉网站建设网站wordpress个人网站主题
  • 淄博建设公司网站淘宝商家网站建设
  • 昌网站建设企业网络营销顾问
  • 有做机械工装的网站吗响应式旅游网站模板
  • 北京个人制作网站有哪些商城wordpress主题
  • 做网站赚钱吗 怎么赚wordpress换头像不显示
  • 网站怎么做登陆Wordpress博客怎么盈利
  • 河北住房和城乡建设厅网站电话是多少wordpress 网站被挂马