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

WordPress网站自媒体模板电影里的做视频在线观看网站

WordPress网站自媒体模板,电影里的做视频在线观看网站,网络营销就是网络推广对吗,新手怎么引流推广推广引流1.人脸跟踪 1.1 级联分类器 OpenCV中的级联分类器是一种基于AdaBoost算法的多级分类器#xff0c;主要用于在图像中检测目标对象。以下是对其简单而全面的解释#xff1a; 一、基本概念 级联分类器#xff1a;是一种由多个简单分类器#xff08;弱分类器#xff09;级联组…1.人脸跟踪 1.1 级联分类器 OpenCV中的级联分类器是一种基于AdaBoost算法的多级分类器主要用于在图像中检测目标对象。以下是对其简单而全面的解释 一、基本概念 级联分类器是一种由多个简单分类器弱分类器级联组成的强分类器。每个弱分类器逐步过滤掉非目标区域减少误检率同时尽可能保持高召回率。这种结构使得级联分类器在检测过程中能够高效且准确地识别目标对象。 AdaBoost算法Adaptive Boosting自适应增强的缩写是一种集成学习算法。它通过构建一系列弱分类器并根据每个弱分类器的表现即分类错误率来调整其在最终强分类器中的权重从而组合成一个强分类器。 二、工作原理 特征提取级联分类器使用特征提取器如Haar-like特征、Local Binary PatternsLBP等从图像中提取出用于分类的特征。这些特征通常反映了图像的灰度变化、纹理信息等。 训练过程 准备训练数据包括大量的正样本包含目标对象的图像和负样本不包含目标对象的图像。使用AdaBoost算法训练每一级分类器在每一级中算法会选择一些特征来训练一个弱分类器并通过调整样本权重来优化分类器的性能。随着训练的进行后续级别的分类器会专注于更难以区分的样本。重复上述过程直到满足预定的训练精度要求或达到预设的级数。 检测过程 输入待检测的图像并将其转换为灰度图像。使用训练好的级联分类器对图像进行扫描通过不断缩小图像制作图像金字塔和滑动检测窗口来寻找目标对象。每一级分类器都会对当前检测窗口内的图像区域进行分类如果认为是目标对象的一部分则将该区域传递给下一级分类器进行更细粒度的检测。最终当某个检测窗口通过所有级别的分类器时就认为该窗口内存在目标对象并输出其位置和大小。 三、优缺点 优点 简单、易于理解和实现。易于并行化适合处理大量数据。在许多目标检测任务中表现出色特别是在面部检测和其他特征点检测方面。 缺点 对异常值敏感容易受到噪声和光照变化的影响。需要大量的训练数据和计算资源来训练级联分类器。对复杂形状和纹理的描述能力有限可能无法准确检测某些类型的目标对象。 四、应用场景 OpenCV中的级联分类器广泛应用于各种目标检测任务中包括但不限于面部检测、眼睛检测、车辆检测等。这些分类器通常以XML文件的形式提供包含了训练好的特征和分类器参数用户可以直接加载这些文件来进行目标检测。 综上所述OpenCV中的级联分类器是一种高效且强大的目标检测工具通过结合AdaBoost算法和特征提取技术能够在复杂的图像中准确地识别出目标对象。 1.2 方法 OpenCV通过CascadeClassifier()方法创建了级联分类器对象其语法结构如下 CascadeClassifier object cv2.CascadeClassifier(filename) 参数说明 filename:级联分类器的XML文件名。 返回值说明 object:分类器对象。 之后使用已经创建好的分类器对图像进行识别此过程需要调用分类器对象的detectMulti-Scale()方法语法格式如下 objects cascsde.detectMultiScale(image, scaleFactor, minNeighbors, flags,minSize,maxSize) 对象说明 cascade:已有的分类器对象。 参数说明 image待分析的图像。 scaleFactor:可选参数扫描图像时的缩放比例。 minNeighbors:可选参数每个候选区域至少保留多少个检测结果才可以判定为人脸。该值越大分析的误差越小。 flags:可选参数建议使用默认值。 minSize:可选参数最小的目标尺寸。 maxSize:可选参数最大的目标尺寸。 返回值说明 objects:捕捉到的目标区域数组数组中每一个元都是一个目标区域每一个目标区域都包含四个值分别是左上角点横坐标左上角点纵坐标区域宽区域高。 1.3分析人脸位置 haarcascade_frontalface_default.xml是就按测正面人脸的级联分类器文件加载该文件就可以创建出追踪正面人脸的分类器调用分类器对象的detectMultiScale()方法就可以得到人脸区域的坐标的和宽高。 1.3.1 在图像的人脸位置绘制红框 操作代码示例 import cv2img cv2.imread(rC:\Users\cgs\Desktop\pictures\1 (37).jpg) # 读取人脸图像 # 加载识别人脸的级联分类器 faceCascade cv2.CascadeClassifier(rB:\Python_opencv_book\12\01\cascades\haarcascade_frontalface_default.xml) faces faceCascade.detectMultiScale(img, 1.3) # 识别出所有人脸 for (x, y, w, h) in faces: # 遍历所有人脸的区域cv2.rectangle(img, (x, y), (x w, y h), (255, 0, 255), 5) # 在图像中人脸的位置绘制方框 cv2.imshow(img, img) # 显示最终处理的效果 cv2.waitKey() cv2.destroyAllWindows() 操作效果图像 1.3.2 实现特效、 操作代码示例 import cv2# 覆盖图像 def overlay_img(img, img_over, img_over_x, img_over_y):覆盖图像:param img: 背景图像:param img_over: 覆盖的图像:param img_over_x: 覆盖图像在背景图像上的横坐标:param img_over_y: 覆盖图像在背景图像上的纵坐标:return: 两张图像合并之后的图像img_h, img_w, img_p img.shape # 背景图像宽、高、通道数img_over_h, img_over_w, img_over_c img_over.shape # 覆盖图像高、宽、通道数if img_over_c 3: # 通道数小于等于3img_over cv2.cvtColor(img_over, cv2.COLOR_BGR2BGRA) # 转换成4通道图像for w in range(0, img_over_w): # 遍历列for h in range(0, img_over_h): # 遍历行if img_over[h, w, 3] ! 0: # 如果不是全透明的像素for c in range(0, 3): # 遍历三个通道x img_over_x w # 覆盖像素的横坐标y img_over_y h # 覆盖像素的纵坐标if x img_w or y img_h: # 如果坐标超出最大宽高break # 不做操作img[y, x, c] img_over[h, w, c] # 覆盖像素return img # 完成覆盖的图像face_img cv2.imread(rC:\Users\cgs\Desktop\pictures\1_37.jpg) # 读取人脸图像 face_img cv2.resize(face_img, (800, 800)) glass_img cv2.imread(rB:\Python_opencv_book\12\02\glass.png, cv2.IMREAD_UNCHANGED) # 读取眼镜图像保留图像类型 height, width, channel glass_img.shape # 获取眼镜图像高、宽、通道数 # 加载级联分类器 face_cascade cv2.CascadeClassifier(rB:\Python_opencv_book\12\02\cascades\haarcascade_frontalface_default.xml) garyframe cv2.cvtColor(face_img, cv2.COLOR_BGR2GRAY) # 转为黑白图像 faces face_cascade.detectMultiScale(garyframe, 1.3, 5) # 识别人脸 for (x, y, w, h) in faces: # 遍历所有人脸的区域gw w # 眼镜缩放之后的宽度gh int(height * w / width) # 眼镜缩放之后的高度度glass_img cv2.resize(glass_img, (gw, gh)) # 按照人脸大小缩放眼镜overlay_img(face_img, glass_img, x, y int(h * 1 / 3)) # 将眼镜绘制到人脸上 cv2.imshow(screen, face_img) # 显示最终处理的效果 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAllWindows() # 释放所有窗体操作效果图像 2.检测其他内容 2.1 眼睛跟踪 操作代码示例 import cv2img cv2.imread(rC:\Users\cgs\Desktop\pictures\12-3.jpg) # 读取人脸图像 # img cv2.resize(img, (800, 800)) # 加载识别眼睛的级联分类器 eyeCascade cv2.CascadeClassifier(rB:\Python_opencv_book\12\03\cascades\haarcascade_eye.xml) eyes eyeCascade.detectMultiScale(img, 1.15) # 识别出所有眼睛 for (x, y, w, h) in eyes: # 遍历所有眼睛的区域cv2.rectangle(img, (x, y), (x w, y h), (0, 0, 255), 4) # 在图像中眼睛的位置绘制方框 cv2.imshow(img, img) # 显示最终处理的效果 cv2.waitKey() cv2.destroyAllWindows() 操作效果图像 2.2 猫脸跟踪 操作代码示例 import cv2 img cv2.imread(rB:\Python_opencv_book\12\04\cat.jpg) # 读取猫脸图像 # 加载识别猫脸的级联分类器 catFaceCascade cv2.CascadeClassifier(rB:\Python_opencv_book\12\04\cascades\haarcascade_frontalcatface_extended.xml) catFace catFaceCascade.detectMultiScale(img, 1.15, 4) # 识别出所有猫脸 for (x, y, w, h) in catFace: # 遍历所有猫脸的区域cv2.rectangle(img, (x, y), (x w, y h), (0, 0, 255), 5)# 在图像中猫脸的位置绘制方框 cv2.imshow(A cute cat., img) # 显示最终处理的效果 cv2.waitKey() cv2.destroyAllWindows() 操作效果图像 2.3 行人跟踪 在操作用图像 操作代码示例 import cv2 img cv2.imread(rB:\Python_opencv_book\12\05\monitoring.jpg) # 读取图像 # 加载识别类人体的级联分类器 bodyCascade cv2.CascadeClassifier(rB:\Python_opencv_book\12\05\cascades\haarcascade_fullbody.xml) bodys bodyCascade.detectMultiScale(img, 1.15, 4) # 识别出所有人体 for (x, y, w, h) in bodys: # 遍历所有人体区域cv2.rectangle(img, (x, y), (x w, y h), (0, 0, 255), 5)# 在图像中人体的位置绘制方框 cv2.imshow(img, img) # 显示最终处理的效果 cv2.waitKey() cv2.destroyAllWindows() 操作效果图像 2.4 车牌跟踪 操作代码示例 import cv2img cv2.imread(rC:\Users\cgs\Desktop\pictures\12_10.jpg) # 读取车的图像 # 加载识别车牌的级联分类器 plateCascade cv2.CascadeClassifier(rB:\Python_opencv_book\12\06\cascades\haarcascade_russian_plate_number.xml) plates plateCascade.detectMultiScale(img, 1.15, 4) # 识别出所有车牌 for (x, y, w, h) in plates: # 遍历所有车牌区域cv2.rectangle(img, (x, y), (x w, y h), (0, 0, 255), 5) # 在图像中车牌的位置绘制方框 cv2.imshow(img, img) # 显示最终处理的效果 cv2.waitKey() cv2.destroyAllWindows() 操作效果图像 3.人脸识别 3.1 Eigenfaces人脸识别器 Eigenfaces人脸识别器是一种基于主成分分析PCA技术的人脸识别方法也常被称为“特征脸”方法。以下是对Eigenfaces人脸识别器的详细简述 原理 Eigenfaces方法的核心思想是通过PCA将人脸图像从高维空间转换到低维空间同时保留图像中的主要特征信息。具体来说PCA被用来计算训练集中所有人脸图像的协方差矩阵并从中提取出一组特征向量即主成分这些特征向量被称为“特征脸”Eigenfaces。这些特征脸代表了人脸图像中最具代表性的特征如眼睛、鼻子和嘴巴的位置和形状等。 步骤 Eigenfaces人脸识别器的实现通常包括以下步骤 数据预处理将人脸图像转换为灰度图像并进行大小归一化处理以确保所有图像具有相同的尺寸和格式。特征提取对预处理后的人脸图像进行PCA分析提取出一组特征向量特征脸。这些特征向量能够捕捉到人脸图像中的关键特征信息。训练分类器使用提取出的特征向量和对应的标签即人脸的身份信息来训练一个分类器。这个分类器可以是K-近邻分类器、支持向量机SVM等用于将输入的人脸图像映射到其对应的身份标签上。人脸识别对于一张新的未知身份的人脸图像首先将其转换为特征向量然后使用训练好的分类器进行识别。分类器会计算输入图像与训练集中各个身份的特征向量之间的距离或相似度并返回最相似的身份标签作为识别结果。 优缺点 优点 Eigenfaces方法能够有效地降低人脸图像的维度同时保留关键特征信息从而提高识别效率。它对光照、表情等变化具有一定的鲁棒性能够在一定程度上应对这些变化对识别结果的影响。 缺点 Eigenfaces方法对姿态变化比较敏感当人脸图像存在较大的姿态差异时识别效果可能会下降。它对于图像质量的要求较高如果输入图像的质量较差如模糊、遮挡等可能会影响识别效果。 需要通过三个方法来完成人脸识别操作 1.通过cv2.face.EigenFaceRecognizer_creat()方法创建人脸识别器 语法格式如下recognizer cv2.face.EigenFacecognizer_create(num_components,threshold) 参数说明 num_components:可选参数PCA方法中保留的分量个数 thresh:可选参数。人脸识别时使用的阈值 返回值说明 recognizer:创建完的人脸识别器对象。 2.创建完识别器对象后需要通过对象的train()方法来训练识别器。建议每个人都给出2张以上的照片作为训练样本。该方法语法结构如下 recognizer.train(src, labels) 对象说明 recognizer.train(src, lables) 参数说明 src:用来训练的人脸图像样本列别格式为list。样本图像必须宽高一致。 labels:样本对应的标签格式为数组元素类型为整数。数组长度必须与样本列表长度相同。样本与标签一一对应 3.训练完识别器后就可以通过识别器的predict()方法来识别人脸了该方法hi比对样本的特征给出最相近的结果和评分。其语法结构如下 label, confidence recognizer.predict(src) 对象说明 recognizer:已有的Eigenfaces人脸识别器对象。 参数说明 src:需要识别的人脸对象,该图像宽高必须与样本一致。 返回值说明 label:与样本匹配程度最高的标签值。 confidence:匹配程度最高的信用度评分小于5000就可以认为匹配程度较高0分表示两幅图像完全一样。 示例代码如下其中Elvis1、2、3和summers1、2、3为训练样本summers4为待识别图像。 import cv2 import numpy as npphotos list() # 样本图像列表 labels list() # 标签列表 photos.append(cv2.imread(rB:\Python_opencv_book\12\07\face\summer1.png, 0)) # 记录第1张人脸图像 labels.append(0) # 第1张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\07\face\summer2.png, 0)) # 记录第2张人脸图像 labels.append(0) # 第2张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\07\face\summer3.png, 0)) # 记录第3张人脸图像 labels.append(0) # 第3张图像对应的标签photos.append(cv2.imread(rB:\Python_opencv_book\12\07\face\Elvis1.png, 0)) # 记录第4张人脸图像 labels.append(1) # 第4张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\07\face\Elvis2.png, 0)) # 记录第5张人脸图像 labels.append(1) # 第5张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\07\face\Elvis3.png, 0)) # 记录第6张人脸图像 labels.append(1) # 第6张图像对应的标签names {0: Summer, 1: Elvis} # 标签对应的名称字典recognizer cv2.face.EigenFaceRecognizer_create() # 创建特征脸识别器 recognizer.train(photos, np.array(labels)) # 识别器开始训练i cv2.imread(rB:\Python_opencv_book\12\07\face\summer4.png, 0) # 待识别的人脸图像 label, confidence recognizer.predict(i) # 识别器开始分析人脸图像 print(confidence str(confidence)) # 打印评分 print(names[str(label)]) # 数组字典里标签对应的名字 cv2.waitKey() cv2.destroyAllWindows() 操作结果 3.2 Fisherfaces人脸识别器 同样是三个步骤 1. 创建 FisherFaces 人脸识别器 使用cv2.face.FisherFaceRecognizer_create() 方法创建人脸识别器。 语法格式如下 recognizer cv2.face.FisherFaceRecognizer_create(num_components150, threshold200.0) 2.训练识别器 语法格式如下  # 假设 images 是包含人脸图像列表的变量每个图像已调整为相同大小 # labels 是与每个图像对应的标签列表 recognizer.train(images, labels) 3.识别人脸 语法格式如下 # 假设 new_face 是待识别的人脸图像且已调整为与训练样本相同的尺寸 label, confidence recognizer.predict(new_face) # 输出识别结果 print(fRecognized as person with label: {label}, confidence: {confidence}) # 根据置信度判断识别是否成功 if confidence 5000: print(High confidence in recognition) else: print(Low confidence in recognition) 操作代码示例 import cv2 import numpy as npphotos list() # 样本图像列表 lables list() # 标签列表 photos.append(cv2.imread(rB:\Python_opencv_book\12\08\face\Mike1.png, 0)) # 记录第1张人脸图像 lables.append(0) # 第1张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\08\face\Mike2.png, 0)) # 记录第2张人脸图像 lables.append(0) # 第2张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\08\face\Mike3.png, 0)) # 记录第3张人脸图像 lables.append(0) # 第3张图像对应的标签photos.append(cv2.imread(rB:\Python_opencv_book\12\08\face\kaikai1.png, 0)) # 记录第4张人脸图像 lables.append(1) # 第4张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\08\face\kaikai2.png, 0)) # 记录第5张人脸图像 lables.append(1) # 第5张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\08\face\kaikai3.png, 0)) # 记录第6张人脸图像 lables.append(1) # 第6张图像对应的标签names {0: Mike, 1: kaikai} # 标签对应的名称字典recognizer cv2.face.FisherFaceRecognizer_create() # 创建线性判别分析识别器 recognizer.train(photos, np.array(lables)) # 识别器开始训练i cv2.imread(rB:\Python_opencv_book\12\08\face\Mike4.png, 0) # 待识别的人脸图像 label, confidence recognizer.predict(i) # 识别器开始分析人脸图像 print(confidence str(confidence)) # 打印评分 print(names[str(label)]) # 数组字典里标签对应的名字cv2.waitKey() cv2.destroyAllWindows() 操作效果 3.3 Local Binary Pattern Histogram人脸识别器 同样三个步骤 1.创建LBPH人脸识别器 语法格式如下 import cv2 # 创建LBPH人脸识别器 recognizer cv2.face.LBPHFaceRecognizer_create() # 如果需要可以设置参数如半径和邻居数等但这里我们使用默认设置 # recognizer cv2.face.LBPHFaceRecognizer_create(radius1, neighbors8, grid_x8, grid_y8) 2.训练识别器 语法格式如下  # 假设images是预处理过灰度化、大小调整等的图像列表labels是对应的标签 images [...] # 图像列表 labels [...] # 对应的标签列表 # 训练识别器 recognizer.train(images, labels) 3.使用predict()方法来识别人脸 语法结构如下  # 假设test_image是待识别的图像且已调整为与训练图像相同的大小 test_image ... # 待识别的图像 # 预测 label, confidence recognizer.predict(test_image) # 打印预测结果 print(fPredicted label: {label}, Confidence: {confidence}) # 置信度评分小于某个阈值例如5000时认为识别成功 if confidence 5000: print(Recognized with high confidence!) else: print(Low confidence recognition or unknown face.) 操作实例代码 import cv2 import numpy as npphotos list() # 样本图像列表 lables list() # 标签列表 photos.append(cv2.imread(rB:\Python_opencv_book\12\09\face\lxe1.png, 0)) # 记录第1张人脸图像 lables.append(0) # 第1张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\09\face\lxe2.png, 0)) # 记录第2张人脸图像 lables.append(0) # 第2张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\09\face\lxe3.png, 0)) # 记录第3张人脸图像 lables.append(0) # 第3张图像对应的标签photos.append(cv2.imread(rB:\Python_opencv_book\12\09\face\ruirui1.png, 0)) # 记录第4张人脸图像 lables.append(1) # 第4张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\09\face\ruirui2.png, 0)) # 记录第5张人脸图像 lables.append(1) # 第5张图像对应的标签 photos.append(cv2.imread(rB:\Python_opencv_book\12\09\face\ruirui3.png, 0)) # 记录第6张人脸图像 lables.append(1) # 第6张图像对应的标签names {0: LXE, 1: RuiRui} # 标签对应的名称字典recognizer cv2.face.LBPHFaceRecognizer_create() # 创建LBPH识别器 recognizer.train(photos, np.array(lables)) # 识别器开始训练i cv2.imread(rB:\Python_opencv_book\12\09\face\ruirui4.png, 0) # 待识别的人脸图像 label, confidence recognizer.predict(i) # 识别器开始分析人脸图像 print(confidence str(confidence)) # 打印评分 print(names[str(label)]) # 数组字典里标签对应的名字cv2.waitKey() cv2.destroyAllWindows() 操作效果 4.总结 LBPHLocal Binary Patterns Histogram局部二值模式直方图、Eigenfaces和Fisherfaces是人脸识别中常用的三种算法它们各自具有不同的优势和劣势。 LBPH人脸识别器 优势 灵活性高LBPH算法允许模型样本人脸和检测到的人脸在形状、大小上有所不同这增加了算法的适用范围。鲁棒性强由于LBP特征对光照变化不敏感LBPH算法在光照变化较大的环境中也能保持较好的识别效果。计算效率高LBP特征提取简单计算速度快适合实时性要求较高的场景。 劣势 精度依赖样本质量如果训练样本的质量不高或者样本之间的差异性较小可能会影响识别精度。对极端表情和姿态的适应性差在极端表情或姿态下人脸特征可能会发生较大变化影响识别效果。 Eigenfaces人脸识别器 优势 理论基础扎实Eigenfaces基于PCA主成分分析进行特征提取PCA是计算机视觉中常用的降维技术理论成熟。计算相对简单相比于其他复杂的人脸识别算法Eigenfaces的计算过程相对简单。 劣势 对光照敏感Eigenfaces算法对光照变化较为敏感光照条件的变化可能会影响识别效果。识别精度有限在复杂的人脸图像数据集中Eigenfaces的识别精度可能不如一些更先进的算法。 Fisherfaces人脸识别器 优势 识别精度高Fisherfaces从PCA衍生发展而来逻辑更复杂计算更密集通常能够获得比Eigenfaces更高的识别精度。对光照和表情变化有一定适应性Fisherfaces算法能够推断和插值照明和面部表情的变化从而提高识别效果。 劣势 计算复杂度高相比于Eigenfaces和LBPHFisherfaces的计算复杂度更高需要更多的计算资源。训练过程较长由于算法复杂Fisherfaces的训练过程可能需要更长的时间。
http://www.hkea.cn/news/14432204/

相关文章:

  • 阿里云服务器建设网站选择那个镜像青岛市建设监理网站
  • 可以上传软件的网站网络开发定制
  • 网站开发与app开发原理搭建网站需要什么技能
  • 免费收录网站提交做网站都有备案吗
  • 手表交易网站建设网站工具
  • 如何搜网站深圳全网推广排名
  • 网络建站网站逻辑结构
  • 站长之家ip查询沧州市网站制作公司
  • 深圳营销型网站建设公司哪家好做半成品网站
  • 免费行情网站链接外链提交
  • 天津大学新校区建设网站seo 网站 制作
  • 网站建设商家公司南宁网站制
  • 简洁大气企业网站源码 后台义县网站建设
  • 印度尼西亚网站后缀有多少网站是做废旧信息的
  • 最好的手机资源网站网站怎么做可以被收录
  • 大兴做网站公司有域名有服务器如何做网站
  • ds216j做网站无法分享到wordpress
  • 能够做冶金工程毕业设计的网站惠州网站制作案例
  • 自己电脑做网站访问快吗窦各庄网站建设
  • 一流的聊城做网站公司用vs2013网站开发
  • 如何修改网站关键词手机vi设计公司
  • 建设收费网站北京公司如何做网站
  • 网站免费模板制作织梦个人网站模版
  • 如何选择网站模板网络营销服务有哪些
  • 深圳网站设计精选刻网站建设公司加优化
  • 网站开发php js滨海做网站哪家公司好
  • 安徽金开建设集团网站兴宁市网站建设
  • 17网做网站百度seo自动优化
  • 响应式网站图片代码凡科可以做社交网站吗
  • 关于内网站建设的请示wordpress php7不兼容