在数字图像处理领域,图像风格迁移一直是热门方向 —— 它能让普通照片瞬间拥有艺术大师的笔触,比如将风景照转化为梵高《星月夜》的漩涡质感。今天就带大家用 OpenCV 实现这一功能,从代码拆解到实际运行,手把手教你打造自己的风格迁移工具。
一、为什么选择 OpenCV 做风格迁移?
在开始之前,先聊聊技术选型的原因:
- 轻量级易上手:相比 TensorFlow/PyTorch 的复杂模型搭建,OpenCV 的dnn模块可直接加载预训练模型,无需深入理解神经网络原理;
- 跨平台兼容性强:代码可在 Windows、Linux、MacOS 上无缝运行,依赖库仅需 OpenCV 和 NumPy;
- 实时性优秀:对中小型图像(1000x1000 以内)处理速度快,适合快速迭代测试。
本次案例将使用预训练的starry_night.t7模型,实现将普通图像转化为《星月夜》风格的效果。
二、完整代码与逐行解析
先看完整代码(已添加详细注释),再逐步拆解关键步骤:
import cv2
import numpy as np
import os
try:
# 1. 读取输入图像
image = cv2.imread('mengna.jpg')
if image is None:
raise FileNotFoundError("图像文件不存在")
# 2. 显示原始图像
cv2.imshow('Original Image', image)
cv2.waitKey(0) # 等待按键关闭窗口
# 3. 图像预处理:转换为dnn模块所需的blob格式
(h, w) = image.shape[:2] # 获取图像高度和宽度
blob = cv2.dnn.blobFromImage(
image,
scalefactor=1, # 像素值缩放因子(此处保持原尺度)
size=(w,

最低0.47元/天 解锁文章
6473

被折叠的 条评论
为什么被折叠?



