网站不想让百度收录做网站空间备案的职业
2026/2/18 1:05:18 网站建设 项目流程
网站不想让百度收录,做网站空间备案的职业,网页升级紧急通知域名,wordpress 功能介绍一、项目介绍 1 实现效果 运行程序后#xff0c;调用电脑默认摄像头#xff0c;实时采集画面并分割为左上、右上、左下、右下四个区域#xff0c;每个区域独立应用不同的艺术风格迁移模型#xff08;星月夜、缪斯、海浪、马赛克#xff09;#xff0c;最终拼接为完整画面…一、项目介绍1 实现效果运行程序后调用电脑默认摄像头实时采集画面并分割为左上、右上、左下、右下四个区域每个区域独立应用不同的艺术风格迁移模型星月夜、缪斯、海浪、马赛克最终拼接为完整画面实时展示按下 Esc 键即可退出程序。2.预训练风格模型准备本文使用的是 OpenCV dnn 模块兼容的Torch 格式.t7 风格迁移预训练模型这类模型体积小、推理速度快适合实时场景1.模型下载可从 OpenCV 官方示例库、GitHub 开源仓库获取星月夜starry_night.t7、缪斯la_muse.t7、海浪the_wave.t7、马赛克mosaic.t7等经典模型2.路径配置在项目根目录下创建model文件夹将下载的所有.t7 模型放入其中保证代码中模型路径与实际文件一致。二、核心功能模块2.1 模型加载模块load_style_model功能封装 OpenCV dnn 模型加载逻辑接收模型文件路径返回加载好的神经网络对象为后续风格迁移做准备。import cv2 def load_style_model(model_path): net cv2.dnn.readNet(model_path) # 加载预训练模型 return netcv2.dnn.readNet()是 OpenCV dnn 模块的通用模型加载函数支持 Torch.t7、Caffe.prototxt/.caffemodel、TensorFlow.pb等多种格式2.2 风格迁移处理模块apply_style_transfer功能接收单区域画面、加载好的风格模型、模型输入目标尺寸完成图像预处理→模型前向传播→结果后处理的完整风格迁移流程返回风格化后的单区域画面是项目的核心算法模块。import cv2 import numpy as np def apply_style_transfer(frame, net, target_sizeNone): h, w frame.shape[:2] if target_size is None: target_size (w, h) # 预处理转换为dnn模块支持的blob格式 blob cv2.dnn.blobFromImage(frame, 1, target_size, (0, 0, 0), swapRBFalse, cropFalse) # 前向传播输入blob获取风格化结果 net.setInput(blob) output net.forward() # 后处理恢复维度、归一化、转换为常规图像格式 output output.reshape(output.shape[1], output.shape[2], output.shape[3]) cv2.normalize(output, output, norm_typecv2.NORM_MINMAX) output output.transpose(1, 2, 0) # 恢复原区域尺寸 output cv2.resize(output, (w, h)) return output1.尺寸初始化若未指定目标尺寸默认使用输入画面的原始尺寸保证兼容性2.图像预处理blob 转换cv2.dnn.blobFromImage()是 dnn 模块的核心预处理函数将常规的 HWC高度 - 宽度 - 通道格式图像转换为 NCHW批次 - 通道 - 高度 - 宽度格式的 blob深度学习模型标准输入格式参数说明scale1像素值不缩放、mean(0,0,0)不做均值消减、swapRBFalse风格模型要求 RGB 格式OpenCV 读取的图像为 BGR需根据模型需求调整、cropFalse不裁剪保持画面完整3.模型前向传播net.setInput(blob)设置模型输入net.forward()执行推理计算直接输出风格化后的特征图4.结果后处理reshape调整特征图维度适配后续处理cv2.normalize()使用 MINMAX 归一化将特征图数值映射到 [0,1] 区间避免像素值溢出transpose将 NCHW 格式转回 HWC 格式恢复为常规图像的维度顺序resize将风格化后的画面恢复为原区域尺寸保证拼接后无变形。2.3 主程序模块main功能项目的入口和总控模块整合所有功能完成参数配置→摄像头初始化→模型批量加载→主循环实时处理→资源释放的完整流程是程序的运行核心。2.3.1配置参数定义将所有可自定义的参数集中定义便于后续调试和修改# 摄像头ID默认0为电脑内置摄像头外接摄像头可改为1/2 CAMERA_ID 0 # 四格区域与对应风格模型的映射键为区域名称值为模型文件路径 MODEL_PATHS { top_left: rmodel\starry_night.t7, top_right: rmodel\la_muse.t7, bottom_left: rmodel\the_wave.t7, bottom_right: rmodel\mosaic.t7 } TARGET_SIZE (200, 140) # 模型输入尺寸越小推理速度越快可根据性能调整 ESC_KEY 27 # Esc键的ASCII码用于退出程序2.3.2 摄像头初始化调用 OpenCV 的 VideoCapture 类打开摄像头# 打开摄像头 cap cv2.VideoCapture(CAMERA_ID) if not cap.isOpened(): print(f错误无法打开摄像头ID{CAMERA_ID}) return2.3.3 预训练模型批量加载通过字典推导式批量加载 MODEL_PATHS 中的所有风格模型加入异常捕获若模型加载失败则释放摄像头并退出程序try: models { key: load_style_model(path) for key, path in MODEL_PATHS.items() } print(所有风格模型加载成功) except Exception as e: print(f模型加载失败{e}) cap.release() # 及时释放摄像头资源 return2.3.4 实时采集与风格迁移这是程序的核心执行循环实现摄像头帧读取→画面四格分割→多风格并行迁移→画面拼接→实时展示的完整逻辑while True: # 1. 读取摄像头帧ret为是否读取成功frame为采集到的画面 ret, frame cap.read() if not ret: print(错误无法读取摄像头画面) break # 2. 获取原画面尺寸计算分割点画面中心 h, w, c frame.shape h_half, w_half h // 2, w // 2 # 3. 四格画面分割基于numpy切片高效分割无冗余 top_left frame[0:h_half, 0:w_half, :] top_right frame[0:h_half, w_half:w, :] bottom_left frame[h_half:h, 0:w_half, :] bottom_right frame[h_half:h, w_half:w, :] # 4. 为每个区域应用对应风格迁移调用封装的处理函数 top_left_style apply_style_transfer(top_left, models[top_left], TARGET_SIZE) top_right_style apply_style_transfer(top_right, models[top_right], TARGET_SIZE) bottom_left_style apply_style_transfer(bottom_left, models[bottom_left], TARGET_SIZE) bottom_right_style apply_style_transfer(bottom_right, models[bottom_right], TARGET_SIZE) # 5. 画面拼接先水平拼接行再垂直拼接列基于numpy的hstack/vstack高效无失真 top_row np.hstack((top_left_style, top_right_style)) # 水平拼接左上、右上 bottom_row np.hstack((bottom_left_style, bottom_right_style)) # 水平拼接左下、右下 final_frame np.vstack((top_row, bottom_row)) # 垂直拼接上下两行 # 6. 尺寸校准保证拼接后画面与原摄像头画面尺寸一致避免显示变形 final_frame cv2.resize(final_frame, (w, h)) # 7. 实时展示风格化后的完整画面 cv2.imshow(Camera 4-Grid Art Style Transfer, final_frame) # 8. 按键检测60ms延迟平衡画面流畅度和按键响应速度0xFF处理跨平台按键兼容 key cv2.waitKey(60) 0xFF if key ESC_KEY: print(用户按下Esc键退出程序) break采用 numpy 切片分割画面比 OpenCV 的 ROI 提取更高效无内存冗余风格迁移函数批量调用每个区域独立处理无相互干扰三、结果显示

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询