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

海口网站建设方案优化电子产品在哪些网站做调研

海口网站建设方案优化,电子产品在哪些网站做调研,做网站全过程,闸北专业做网站数字图像处理#xff08;四#xff09;三、#xff08;准备工作#xff1a;玩具咋玩#xff09;图像以矩阵形式存储#xff0c;那矩阵一变、图像立刻跟着变#xff1f;原图发挥了钞能力之后的图上述代码包含 10 个图像处理实验#xff0c;每个实验会生成对应处理后的图… 数字图像处理四三、准备工作玩具咋玩图像以矩阵形式存储那矩阵一变、图像立刻跟着变原图发挥了钞能力之后的图上述代码包含 10 个图像处理实验每个实验会生成对应处理后的图像以下为各实验对应生成图像的大致情况实验 1生成原始彩色图像和灰度图像还会展示彩色与灰度图像的矩阵切片信息。实验 2生成原始图像、仅红色通道、仅绿色通道、仅蓝色通道、通道交换BGR→RGB 、自定义通道组合B R G 的图像。实验 3生成原始灰度图像以及阈值为 50、100、150 的二值化图像 。实验 4生成变暗alpha 0.7beta -20 、原始、变亮alpha 1.3beta 30 、高对比度alpha 1.8beta -50 调整后的图像。实验 5生成原始对比度、增强中间调输入范围 [50,200]→输出 [0,255] 、压暗高光输入范围 [0,200]→输出 [0,255] 、提高阴影输入范围 [50,255]→输出 [0,255] 调整后的图像。实验 6生成原始图像、水平翻转、垂直翻转、对角线翻转后的图像。实验 7生成原始图像、顺时针 90° 旋转、180° 旋转、逆时针 90° 旋转、45° 旋转后的图像还有旋转矩阵可视化图。实验 8以不同插值方法最近邻、双线性、区域重采样 对图像进行 0.5 倍、1.5 倍、2.0 倍缩放会生成对应缩放后的多组图像。实验 9生成原始图像以及经模糊、锐化、边缘检测、浮雕卷积滤波后的图像。实验 10生成原始灰度图像、Sobel X 方向梯度、Sobel Y 方向梯度、Sobel 梯度幅值、Canny 边缘检测的图像还有梯度矩阵原理说明图 。三、准备工作玩具咋玩图像以矩阵形式存储那矩阵一变、图像立刻跟着变 你好 从LED冬奥会、奥运会及春晚等等大屏到手机小屏快来挖一挖里面都有什么。 废话不多说上图上代码再上新图 原图 # %% [markdown] # # 系统性图像矩阵处理实验 # **参考教材**冈萨雷斯《数字图像处理》、现代颜色技术原理、图像画质算法 # # 实验顺序 # 1. 图像加载与矩阵表示 # 2. 颜色通道分离与重组 # 3. 图像二值化阈值处理 # 4. 亮度调整矩阵标量乘法 # 5. 对比度调整矩阵线性变换 # 6. 图像翻转矩阵索引操作 # 7. 图像旋转矩阵转置与重排 # 8. 图像缩放矩阵重采样 # 9. 卷积滤波矩阵卷积运算 # 10. 边缘检测梯度矩阵计算# %% [code] # 安装必要库 !pip install opencv-python matplotlib numpy scikit-image# %% [code] import cv2 import numpy as np import matplotlib.pyplot as plt from google.colab import files from skimage import transform# 上传图像到Colab uploaded files.upload() image_path list(uploaded.keys())[0]# %% [markdown] # ## 实验1图像加载与矩阵表示 # **核心原理**图像本质是三维矩阵 [高度, 宽度, 通道] # - 彩色图像3通道 (B, G, R) # - 灰度图像单通道# %% [code] # 实验1图像加载与矩阵表示 def experiment1(img_path):# 读取图像为NumPy矩阵img cv2.imread(img_path)print(✅ 图像已加载为三维矩阵)print(f矩阵形状: {img.shape} (高度, 宽度, 通道))print(f矩阵数据类型: {img.dtype})print(f像素值范围: {img.min()} ~ {img.max()})# 显示原始图像plt.figure(figsize(12, 6))# 彩色图像显示plt.subplot(121)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title(原始彩色图像)plt.axis(off)# 转换为灰度图像gray_img cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)print(f\n灰度矩阵形状: {gray_img.shape} (高度, 宽度))# 灰度图像显示plt.subplot(122)plt.imshow(gray_img, cmapgray)plt.title(灰度图像矩阵)plt.axis(off)plt.tight_layout()plt.show()# 显示矩阵切片左上角10x10区域print(\n 彩色图像左上角10x10x3矩阵切片:)print(img[:10, :10])print(\n 灰度图像左上角10x10矩阵切片:)print(gray_img[:10, :10])return img, gray_img# 执行实验1 original_img, gray_img experiment1(image_path)# %% [markdown] # ## 实验2颜色通道分离与重组 # **核心原理**彩色图像由BGR三个通道矩阵组成 # - 分离通道提取单通道矩阵 # - 重组通道改变通道组合顺序# %% [code] # 实验2颜色通道分离与重组 def experiment2(img):# 分离BGR三个通道b, g, r cv2.split(img)# 创建纯色通道矩阵zero_channel np.zeros_like(b)# 重组不同通道组合red_only cv2.merge([zero_channel, zero_channel, r])green_only cv2.merge([zero_channel, g, zero_channel])blue_only cv2.merge([b, zero_channel, zero_channel])swapped_channels cv2.merge([r, g, b]) # RGB顺序# 可视化plt.figure(figsize(15, 10))# 原始图像plt.subplot(231)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title(原始图像)plt.axis(off)# 红色通道plt.subplot(232)plt.imshow(cv2.cvtColor(red_only, cv2.COLOR_BGR2RGB))plt.title(仅红色通道)plt.axis(off)# 绿色通道plt.subplot(233)plt.imshow(cv2.cvtColor(green_only, cv2.COLOR_BGR2RGB))plt.title(仅绿色通道)plt.axis(off)# 蓝色通道plt.subplot(234)plt.imshow(cv2.cvtColor(blue_only, cv2.COLOR_BGR2RGB))plt.title(仅蓝色通道)plt.axis(off)# 通道交换 (BGR → RGB)plt.subplot(235)plt.imshow(cv2.cvtColor(swapped_channels, cv2.COLOR_BGR2RGB))plt.title(通道交换 (BGR→RGB))plt.axis(off)# 创建特殊通道组合custom_channels cv2.merge([b, r, g]) # 蓝红绿plt.subplot(236)plt.imshow(cv2.cvtColor(custom_channels, cv2.COLOR_BGR2RGB))plt.title(自定义通道组合 (BRG))plt.axis(off)plt.tight_layout()plt.show()# 矩阵变化说明print(\n 通道分离与重组矩阵操作说明:)print(1. 分离通道: b, g, r cv2.split(img))print(2. 创建零矩阵: zero_channel np.zeros_like(b))print(3. 重组通道: cv2.merge([ch1, ch2, ch3]))print(4. 通道交换改变了颜色信息的排列顺序)# 执行实验2 experiment2(original_img)# %% [markdown] # ## 实验3图像二值化阈值处理 # **核心原理**通过阈值将灰度矩阵转换为二值矩阵 # - 矩阵元素值0(黑) 或 255(白) # - 公式dst(x,y) { 255 if src(x,y) thresh else 0 }# %% [code] # 实验3图像二值化 def experiment3(gray_img):# 设置不同阈值thresholds [50, 100, 150]plt.figure(figsize(15, 8))# 原始灰度图像plt.subplot(141)plt.imshow(gray_img, cmapgray)plt.title(原始灰度图像)plt.axis(off)# 不同阈值二值化for i, thresh in enumerate(thresholds):# 二值化矩阵操作_, binary_img cv2.threshold(gray_img, thresh, 255, cv2.THRESH_BINARY)plt.subplot(1, 4, i2)plt.imshow(binary_img, cmapgray)plt.title(f阈值{thresh})plt.axis(off)# 打印矩阵变化信息print(f\n 阈值{thresh}时矩阵变化:)print(f像素值{thresh}的像素比例: {np.mean(binary_img 255)*100:.1f}%)plt.tight_layout()plt.show()# 矩阵操作说明print(\n⚙️ 二值化矩阵操作:)print(_, binary cv2.threshold(gray_img, threshold_value, 255, cv2.THRESH_BINARY))print(本质是: binary_matrix np.where(gray_matrix threshold, 255, 0))# 执行实验3 experiment3(gray_img)# %% [markdown] # ## 实验4亮度调整矩阵标量乘法 # **核心原理**通过标量乘法调整整个矩阵值 # - 公式dst src * alpha beta # - alpha: 增益控制对比度 # - beta: 偏置控制亮度# %% [code] # 实验4亮度调整 def experiment4(img):# 创建调整参数adjustments [(变暗, 0.7, -20),(原始, 1.0, 0),(变亮, 1.3, 30),(高对比度, 1.8, -50)]plt.figure(figsize(15, 10))for i, (title, alpha, beta) in enumerate(adjustments):# 矩阵运算: dst img * alpha betaadjusted cv2.convertScaleAbs(img, alphaalpha, betabeta)# 可视化plt.subplot(2, 2, i1)plt.imshow(cv2.cvtColor(adjusted, cv2.COLOR_BGR2RGB))plt.title(f{title}\n(alpha{alpha}, beta{beta}))plt.axis(off)# 计算矩阵变化diff adjusted.astype(np.float32) - img.astype(np.float32)print(f\n {title}矩阵变化统计:)print(f平均亮度变化: {np.mean(diff):.1f})print(f最大亮度变化: {np.max(diff):.1f})plt.tight_layout()plt.show()# 矩阵操作说明print(\n 亮度调整矩阵操作:)print(adjusted cv2.convertScaleAbs(img, alphaalpha, betabeta))print(等效于: adjusted_matrix np.clip(img_matrix * alpha beta, 0, 255).astype(np.uint8))# 执行实验4 experiment4(original_img)# %% [markdown] # ## 实验5对比度调整矩阵线性变换 # **核心原理**通过分段线性变换调整对比度 # - 增强特定亮度范围的对比度 # - 压缩其他范围的对比度# %% [code] # 实验5对比度调整 def experiment5(img):# 创建对比度调整矩阵操作def adjust_contrast(matrix, low0, high255, new_low0, new_high255):# 线性变换公式slope (new_high - new_low) / (high - low)adjusted matrix.astype(np.float32)adjusted (adjusted - low) * slope new_lowreturn np.clip(adjusted, 0, 255).astype(np.uint8)# 创建调整参数adjustments [(原始对比度, 0, 255, 0, 255),(增强中间调, 50, 200, 0, 255),(压暗高光, 0, 200, 0, 255),(提高阴影, 50, 255, 0, 255)]plt.figure(figsize(15, 10))for i, (title, low, high, new_low, new_high) in enumerate(adjustments):adjusted adjust_contrast(img, low, high, new_low, new_high)# 可视化plt.subplot(2, 2, i1)plt.imshow(cv2.cvtColor(adjusted, cv2.COLOR_BGR2RGB))plt.title(f{title}\n输入范围:[{low},{high}]→输出:[{new_low},{new_high}])plt.axis(off)# 打印变换函数print(f\n {title}变换函数:)print(fy (x - {low}) * {(new_high-new_low)/(high-low):.2f} {new_low})plt.tight_layout()plt.show()# 执行实验5 experiment5(original_img)# %% [markdown] # ## 实验6图像翻转矩阵索引操作 # **核心原理**通过矩阵索引重排实现图像翻转 # - 水平翻转matrix[:, ::-1, :] # - 垂直翻转matrix[::-1, :, :] # - 对角线翻转matrix[::-1, ::-1, :]# %% [code] # 实验6图像翻转 def experiment6(img):# 矩阵翻转操作flip_horizontal img[:, ::-1, :] # 水平翻转flip_vertical img[::-1, :, :] # 垂直翻转flip_both img[::-1, ::-1, :] # 对角线翻转plt.figure(figsize(15, 10))# 原始图像plt.subplot(221)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title(原始图像)plt.axis(off)# 水平翻转plt.subplot(222)plt.imshow(cv2.cvtColor(flip_horizontal, cv2.COLOR_BGR2RGB))plt.title(水平翻转 (矩阵列索引反转))plt.axis(off)# 垂直翻转plt.subplot(223)plt.imshow(cv2.cvtColor(flip_vertical, cv2.COLOR_BGR2RGB))plt.title(垂直翻转 (矩阵行索引反转))plt.axis(off)# 对角线翻转plt.subplot(224)plt.imshow(cv2.cvtColor(flip_both, cv2.COLOR_BGR2RGB))plt.title(对角线翻转 (行列索引同时反转))plt.axis(off)plt.tight_layout()plt.show()# 矩阵操作说明print(\n 翻转矩阵操作说明:)print(水平翻转: flipped img[:, ::-1, :])print(垂直翻转: flipped img[::-1, :, :])print(对角线翻转: flipped img[::-1, ::-1, :])print(原理通过NumPy索引操作重新排列像素位置)# 执行实验6 experiment6(original_img)# %% [markdown] # ## 实验7图像旋转矩阵转置与重排 # **核心原理**通过旋转矩阵进行坐标变换 # - 90°旋转矩阵转置 翻转 # - 任意角度仿射变换矩阵# %% [code] # 实验7图像旋转 def experiment7(img):# 90°倍数旋转rotate_90 cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) # 顺时针90°rotate_180 cv2.rotate(img, cv2.ROTATE_180) # 180°rotate_270 cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE) # 逆时针90°# 任意角度旋转45°h, w img.shape[:2]center (w//2, h//2)M cv2.getRotationMatrix2D(center, 45, 1.0) # 旋转矩阵rotate_45 cv2.warpAffine(img, M, (w, h))plt.figure(figsize(15, 12))# 原始图像plt.subplot(231)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title(原始图像)plt.axis(off)# 90°旋转plt.subplot(232)plt.imshow(cv2.cvtColor(rotate_90, cv2.COLOR_BGR2RGB))plt.title(顺时针90°旋转)plt.axis(off)# 180°旋转plt.subplot(233)plt.imshow(cv2.cvtColor(rotate_180, cv2.COLOR_BGR2RGB))plt.title(180°旋转)plt.axis(off)# 270°旋转plt.subplot(234)plt.imshow(cv2.cvtColor(rotate_270, cv2.COLOR_BGR2RGB))plt.title(逆时针90°旋转)plt.axis(off)# 任意角度旋转plt.subplot(235)plt.imshow(cv2.cvtColor(rotate_45, cv2.COLOR_BGR2RGB))plt.title(45°旋转)plt.axis(off)# 旋转矩阵可视化plt.subplot(236)plt.text(0.1, 0.5, f旋转矩阵(45°):\n{M}, fontsize12)plt.axis(off)plt.tight_layout()plt.show()# 矩阵操作说明print(\n 旋转矩阵操作说明:)print(90°旋转: 使用cv2.rotate()函数)print(任意角度: 创建旋转矩阵 cv2.warpAffine())print(旋转矩阵本质是坐标变换: x a*x b*y c, y d*x e*y f)# 执行实验7 experiment7(original_img)# %% [markdown] # ## 实验8图像缩放矩阵重采样 # **核心原理**通过插值算法重新采样矩阵 # - 最近邻插值快速有锯齿 # - 双线性插值平滑质量较好 # - 区域重采样保持纹理特征# %% [code] # 实验8图像缩放 def experiment8(img):# 设置缩放比例scale_factors [0.5, 1.5, 2.0]methods [(最近邻, cv2.INTER_NEAREST),(双线性, cv2.INTER_LINEAR),(区域重采样, cv2.INTER_AREA)]plt.figure(figsize(15, 12))# 原始图像plt.subplot(331)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title(原始图像)plt.axis(off)# 不同缩放方法row 1for scale in scale_factors:for col, (name, interp) in enumerate(methods):# 计算新尺寸new_size (int(img.shape[1] * scale), int(img.shape[0] * scale)# 执行缩放resized cv2.resize(img, new_size, interpolationinterp)# 可视化plt.subplot(3, 3, row)plt.imshow(cv2.cvtColor(resized, cv2.COLOR_BGR2RGB))plt.title(f{name}缩放 {scale}x)plt.axis(off)# 显示矩阵信息print(f\n️ {name}缩放 {scale}x: 新矩阵形状 {resized.shape})row 1plt.tight_layout()plt.show()# 矩阵操作说明print(\n 缩放矩阵操作说明:)print(缩放本质是重采样: 根据新尺寸重新计算每个像素值)print(不同插值方法影响重采样质量:)print(1. 最近邻: 取最近像素值速度快但质量低)print(2. 双线性: 4个最近像素加权平均平衡速度质量)print(3. 区域重采样: 考虑像素区域关系适合缩小图像)# 执行实验8 experiment8(original_img)# %% [markdown] # ## 实验9卷积滤波矩阵卷积运算 # **核心原理**使用核矩阵与图像进行卷积运算 # - 滤波核3x3或5x5矩阵 # - 卷积操作核矩阵与图像局部区域点乘后求和# %% [code] # 实验9卷积滤波 def experiment9(img):# 定义滤波核kernels {模糊: np.ones((5,5), np.float32)/25,锐化: np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32),边缘检测: np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]], np.float32),浮雕: np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]], np.float32)}plt.figure(figsize(15, 10))# 原始图像plt.subplot(231)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title(原始图像)plt.axis(off)# 应用不同滤波器for i, (name, kernel) in enumerate(kernels.items()):# 执行卷积filtered cv2.filter2D(img, -1, kernel)# 可视化plt.subplot(2, 3, i2)plt.imshow(cv2.cvtColor(filtered, cv2.COLOR_BGR2RGB))plt.title(f{name}滤波)plt.axis(off)# 显示核矩阵print(f\n {name}滤波核:)print(kernel)plt.tight_layout()plt.show()# 矩阵操作说明print(\n 卷积滤波矩阵操作说明:)print(卷积公式: dst(x,y) Σ(kernel(i,j) * src(xi, yj)))print(本质核矩阵在图像上滑动计算局部区域的加权和)# 执行实验9 experiment9(original_img)# %% [markdown] # ## 实验10边缘检测梯度矩阵计算 # **核心原理**通过计算图像梯度矩阵检测边缘 # - Sobel算子计算x/y方向梯度 # - Canny算法多阶段边缘检测# %% [code] # 实验10边缘检测 def experiment10(gray_img):# Sobel边缘检测sobel_x cv2.Sobel(gray_img, cv2.CV_64F, 1, 0, ksize5)sobel_y cv2.Sobel(gray_img, cv2.CV_64F, 0, 1, ksize5)sobel_combined np.sqrt(sobel_x**2 sobel_y**2)# Canny边缘检测edges cv2.Canny(gray_img, 100, 200)plt.figure(figsize(15, 10))# 原始灰度图像plt.subplot(231)plt.imshow(gray_img, cmapgray)plt.title(原始灰度图像)plt.axis(off)# Sobel X方向plt.subplot(232)plt.imshow(np.abs(sobel_x), cmapgray)plt.title(Sobel X方向梯度)plt.axis(off)# Sobel Y方向plt.subplot(233)plt.imshow(np.abs(sobel_y), cmapgray)plt.title(Sobel Y方向梯度)plt.axis(off)# Sobel组合plt.subplot(234)plt.imshow(sobel_combined, cmapgray)plt.title(Sobel梯度幅值)plt.axis(off)# Canny边缘检测plt.subplot(235)plt.imshow(edges, cmapgray)plt.title(Canny边缘检测)plt.axis(off)# 梯度矩阵说明plt.subplot(236)plt.text(0.1, 0.4, 梯度矩阵计算原理:\nGx Sobel_x * I (水平变化率)\nGy Sobel_y * I (垂直变化率)\n|G| √(Gx² Gy²)\nCanny算法使用双阈值检测边缘,fontsize12)plt.axis(off)plt.tight_layout()plt.show()# 矩阵操作说明print(\n 边缘检测矩阵操作说明:)print(Sobel算子计算图像在x/y方向的导数)print(Canny算法高斯滤波 → 梯度计算 → 非极大值抑制 → 双阈值检测)# 执行实验10 experiment10(gray_img)# %% [markdown] # ## 知识体系总结 # 通过以上10个实验我们系统性地学习了 # # 1. **图像本质**图像即矩阵三维高度×宽度×通道 # 2. **基础操作**通道分离、二值化、亮度/对比度调整 # 3. **几何变换**翻转、旋转、缩放矩阵索引与重采样 # 4. **图像增强**线性变换、卷积滤波 # 5. **特征提取**边缘检测梯度计算 # # 掌握这些核心矩阵操作后您可以自由组合创造更复杂的图像处理效果# %% [code] # 保存所有实验代码到文件 with open(image_matrix_experiments.py, w) as f:f.write( # 图像矩阵处理实验完整代码 # 包含10个核心实验可直接运行 import cv2 import numpy as np import matplotlib.pyplot as plt # ...此处包含上面所有实验函数)# 下载代码文件 files.download(image_matrix_experiments.py)发挥了钞能力之后的图 上述代码包含 10 个图像处理实验每个实验会生成对应处理后的图像以下为各实验对应生成图像的大致情况 实验 1生成原始彩色图像和灰度图像还会展示彩色与灰度图像的矩阵切片信息。 实验 2生成原始图像、仅红色通道、仅绿色通道、仅蓝色通道、通道交换BGR→RGB 、自定义通道组合B R G 的图像。 实验 3生成原始灰度图像以及阈值为 50、100、150 的二值化图像 。 实验 4生成变暗alpha 0.7beta -20 、原始、变亮alpha 1.3beta 30 、高对比度alpha 1.8beta -50 调整后的图像。 实验 5生成原始对比度、增强中间调输入范围 [50,200]→输出 [0,255] 、压暗高光输入范围 [0,200]→输出 [0,255] 、提高阴影输入范围 [50,255]→输出 [0,255] 调整后的图像。 实验 6生成原始图像、水平翻转、垂直翻转、对角线翻转后的图像。 实验 7生成原始图像、顺时针 90° 旋转、180° 旋转、逆时针 90° 旋转、45° 旋转后的图像还有旋转矩阵可视化图。 实验 8以不同插值方法最近邻、双线性、区域重采样 对图像进行 0.5 倍、1.5 倍、2.0 倍缩放会生成对应缩放后的多组图像。 实验 9生成原始图像以及经模糊、锐化、边缘检测、浮雕卷积滤波后的图像。 实验 10生成原始灰度图像、Sobel X 方向梯度、Sobel Y 方向梯度、Sobel 梯度幅值、Canny 边缘检测的图像还有梯度矩阵原理说明图 。 邓爷爷也说过理论和实际相结合嘛。咱们做了一波实验然后再学点理论再做实验…反反复复这快慢慢随着我的老年斑的增长经验值是不是就上来了 如果想了解一些成像系统、图像、人眼、颜色等等的小知识快去看看视频吧 GodWarrior、抖音号59412983611B站宇宙第一AIYWM 认准一个头像保你不迷路
http://www.zqtcl.cn/news/947616/

相关文章:

  • wordpress百度百科网站开发 seo
  • 网站主机名wordpress主题修改底部版权
  • 网站官网怎么做龙岩iot开发福建小程序建设
  • 哪个学校设有网站开发专业北京有哪些网站公司
  • 做网站需要的带宽上行还是下行湖南竞网科技有限公司
  • 帝国cms企业门户网站仿站视频教程 网盘互联网金融p2p网站建设
  • 个人网站备案涉及支付宝做二手的网站都有哪些
  • 如何给网站做宣传导航栏网页怎么制作
  • 返利网站建设高校精神文明建设网站
  • 河北百度推广seoseo全网优化指南
  • 网站建设网页开发一个类引用另一个类的方法
  • 第四章第二节网站建设的教学设计云南网站建设一度科技公司
  • php 搭建手机网站建e网app下载
  • 河北手机版建站系统价格微信怎么开店铺小程序
  • 中国建设教育网官网是什么网站潮州seo建站
  • 如何做个购物网站学校网站设计的目的
  • 建设部网站158号文件1688官网app
  • 临沂科技网站建设在线网页截图工具
  • 聊城网站推广软件简单网页制作训练
  • wordpress去除文章作者seo核心技术排名
  • 网站建设黄页免费观看wordpress所有文章
  • 企业整站优化沈阳建设学院
  • 网站怎么做弹框河北省建设注册中心网站首页
  • 大连哪里有手机自适应网站建设网站开发层次
  • 网站首页的浮窗怎么做美食网站程序
  • 淮北网站建设建设银行福州分行招聘网站
  • c 网站开发 pdf济南集团网站建设报价
  • 做网站找哪家公司好中国网络优化推广
  • 创建网站目录结构应遵循的方法dz旅游网站模板
  • 我看别人做系统就直接网站下载软件外贸物流流程