diff --git a/src/.idea/.gitignore b/src/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/src/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/src/.idea/.name b/src/.idea/.name
new file mode 100644
index 0000000..11a5d8e
--- /dev/null
+++ b/src/.idea/.name
@@ -0,0 +1 @@
+main.py
\ No newline at end of file
diff --git a/src/.idea/Image_Processing.iml b/src/.idea/Image_Processing.iml
new file mode 100644
index 0000000..d0876a7
--- /dev/null
+++ b/src/.idea/Image_Processing.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/inspectionProfiles/Project_Default.xml b/src/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..06bb031
--- /dev/null
+++ b/src/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/inspectionProfiles/profiles_settings.xml b/src/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/src/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/misc.xml b/src/.idea/misc.xml
new file mode 100644
index 0000000..75ab79f
--- /dev/null
+++ b/src/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/modules.xml b/src/.idea/modules.xml
new file mode 100644
index 0000000..3cbc939
--- /dev/null
+++ b/src/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/README.md b/src/README.md
new file mode 100644
index 0000000..18ef940
--- /dev/null
+++ b/src/README.md
@@ -0,0 +1,65 @@
+# 图像处理程序
+
+这是一个基于opencv和pytorch的图像处理程序,实现了模糊、锐化、边缘检测等图像处理基本功能,提供了图像矫正等实际应用,以及基于深度学习的图像/视频风格迁移功能,采用pyqt5制作图形化用户界面。
+
+## 项目背景
+
+图像处理是计算机视觉领域的一个重要分支,它涉及到对图像进行各种操作,如滤波、增强、变换、分割、检测等,以达到改善图像质量、提取图像信息、增加图像效果等目的。图像处理的应用场景非常广泛,如医学影像、卫星遥感、人脸识别、数字水印等。
+
+随着深度学习技术的发展,图像处理也出现了一些新的方法和应用,如风格迁移、超分辨率、图像生成等。这些方法利用深度神经网络来学习图像之间的映射关系或潜在特征,从而实现对图像的高级处理。
+
+本项目是一个基于opencv和pytorch的图像处理程序,旨在结合传统的图像处理方法和深度学习方法,实现一些常见的图像处理功能和应用,并提供一个友好的图形化用户界面,方便用户使用。本项目可以作为一个学习和交流的平台,也可以作为一个实用的工具,为用户提供高效和高质量的图像处理服务。
+
+## 功能特性
+
+- 基本功能,包括图像缩放、图像调节、灰度化、二值化、反相、浮雕、模糊、锐化、边缘检测、旋转
+- 实际应用,利用高斯滤波和开闭运算计算矩形顶点,通过透视变化进行图像矫正
+- 高级功能,基于pytorch深度学习实现图像风格迁移,进一步改进后实现视频风格迁移
+- 图形界面,集成了多种功能,可以方便地打开、处理、刷新、保存图片,并直观地展现原图和处理后图片的差别
+
+## 环境依赖
+
+- Python 3.9
+- Anaconda
+
+## 部署步骤
+
+1. 克隆项目到本地
+
+```bash
+git clone ssh
+```
+
+2. 配置Anaconda及pytorch
+
+参考以下博客:
+https://blog.csdn.net/weixin_52836217/article/details/126674089
+
+3. 安装依赖库
+
+```bash
+pip install -r requirements.txt
+```
+
+4. 运行主程序
+
+```bash
+python main.py
+```
+
+## 目录结构描述
+
+
+- UI:存放QtDesigner设计的ui文件及转化后的py文件
+- image:程序工作过程需要调用的图片
+- original:原图
+- sample:视频示例
+- style:风格图片
+- style.pth:训练后的风格模型
+- main.py: 主程序入口文件
+- README.md: 项目说明文件
+
+## 贡献
+- 华东师范大学 张宜添
+- 华东师范大学 马鼎
+- 华东师范大学 张国帅
\ No newline at end of file
diff --git a/src/UI/BaseAdjustDialog.py b/src/UI/BaseAdjustDialog.py
new file mode 100644
index 0000000..c49cc7d
--- /dev/null
+++ b/src/UI/BaseAdjustDialog.py
@@ -0,0 +1,117 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'BaseAdjustDialog.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.9
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_baseAdjustDialog(object):
+ def setupUi(self, baseAdjustDialog):
+ baseAdjustDialog.setObjectName("baseAdjustDialog")
+ baseAdjustDialog.resize(384, 424)
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(baseAdjustDialog)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.widget = QtWidgets.QWidget(baseAdjustDialog)
+ self.widget.setObjectName("widget")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.bright = QtWidgets.QLabel(self.widget)
+ self.bright.setObjectName("bright")
+ self.horizontalLayout.addWidget(self.bright)
+ spacerItem = QtWidgets.QSpacerItem(280, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout.addItem(spacerItem)
+ self.brightLabel = QtWidgets.QLabel(self.widget)
+ self.brightLabel.setObjectName("brightLabel")
+ self.horizontalLayout.addWidget(self.brightLabel)
+ self.verticalLayout_2.addWidget(self.widget)
+ self.brightSlider = QtWidgets.QSlider(baseAdjustDialog)
+ self.brightSlider.setMinimum(-100)
+ self.brightSlider.setMaximum(100)
+ self.brightSlider.setOrientation(QtCore.Qt.Horizontal)
+ self.brightSlider.setObjectName("brightSlider")
+ self.verticalLayout_2.addWidget(self.brightSlider)
+ self.widget_2 = QtWidgets.QWidget(baseAdjustDialog)
+ self.widget_2.setObjectName("widget_2")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget_2)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.contrast = QtWidgets.QLabel(self.widget_2)
+ self.contrast.setObjectName("contrast")
+ self.horizontalLayout_2.addWidget(self.contrast)
+ spacerItem1 = QtWidgets.QSpacerItem(267, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_2.addItem(spacerItem1)
+ self.contrastLabel = QtWidgets.QLabel(self.widget_2)
+ self.contrastLabel.setObjectName("contrastLabel")
+ self.horizontalLayout_2.addWidget(self.contrastLabel)
+ self.verticalLayout_2.addWidget(self.widget_2)
+ self.contrastSlider = QtWidgets.QSlider(baseAdjustDialog)
+ self.contrastSlider.setMinimum(-100)
+ self.contrastSlider.setMaximum(100)
+ self.contrastSlider.setOrientation(QtCore.Qt.Horizontal)
+ self.contrastSlider.setObjectName("contrastSlider")
+ self.verticalLayout_2.addWidget(self.contrastSlider)
+ self.widget_3 = QtWidgets.QWidget(baseAdjustDialog)
+ self.widget_3.setObjectName("widget_3")
+ self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.widget_3)
+ self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+ self.saturability = QtWidgets.QLabel(self.widget_3)
+ self.saturability.setObjectName("saturability")
+ self.horizontalLayout_3.addWidget(self.saturability)
+ spacerItem2 = QtWidgets.QSpacerItem(267, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_3.addItem(spacerItem2)
+ self.saturabilityLabel = QtWidgets.QLabel(self.widget_3)
+ self.saturabilityLabel.setObjectName("saturabilityLabel")
+ self.horizontalLayout_3.addWidget(self.saturabilityLabel)
+ self.verticalLayout_2.addWidget(self.widget_3)
+ self.saturabilitySlider = QtWidgets.QSlider(baseAdjustDialog)
+ self.saturabilitySlider.setMinimum(-100)
+ self.saturabilitySlider.setMaximum(100)
+ self.saturabilitySlider.setOrientation(QtCore.Qt.Horizontal)
+ self.saturabilitySlider.setObjectName("saturabilitySlider")
+ self.verticalLayout_2.addWidget(self.saturabilitySlider)
+ self.widget_4 = QtWidgets.QWidget(baseAdjustDialog)
+ self.widget_4.setObjectName("widget_4")
+ self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.widget_4)
+ self.horizontalLayout_4.setObjectName("horizontalLayout_4")
+ self.warm = QtWidgets.QLabel(self.widget_4)
+ self.warm.setObjectName("warm")
+ self.horizontalLayout_4.addWidget(self.warm)
+ spacerItem3 = QtWidgets.QSpacerItem(267, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_4.addItem(spacerItem3)
+ self.warmLabel = QtWidgets.QLabel(self.widget_4)
+ self.warmLabel.setObjectName("warmLabel")
+ self.horizontalLayout_4.addWidget(self.warmLabel)
+ self.verticalLayout_2.addWidget(self.widget_4)
+ self.warmSlider = QtWidgets.QSlider(baseAdjustDialog)
+ self.warmSlider.setMinimum(-100)
+ self.warmSlider.setMaximum(100)
+ self.warmSlider.setOrientation(QtCore.Qt.Horizontal)
+ self.warmSlider.setObjectName("warmSlider")
+ self.verticalLayout_2.addWidget(self.warmSlider)
+ self.dialogBtnBox = QtWidgets.QDialogButtonBox(baseAdjustDialog)
+ self.dialogBtnBox.setOrientation(QtCore.Qt.Horizontal)
+ self.dialogBtnBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
+ self.dialogBtnBox.setObjectName("dialogBtnBox")
+ self.verticalLayout_2.addWidget(self.dialogBtnBox)
+
+ self.retranslateUi(baseAdjustDialog)
+ self.dialogBtnBox.accepted.connect(baseAdjustDialog.accept) # type: ignore
+ self.dialogBtnBox.rejected.connect(baseAdjustDialog.reject) # type: ignore
+ QtCore.QMetaObject.connectSlotsByName(baseAdjustDialog)
+
+ def retranslateUi(self, baseAdjustDialog):
+ _translate = QtCore.QCoreApplication.translate
+ baseAdjustDialog.setWindowTitle(_translate("baseAdjustDialog", "基础调整"))
+ self.bright.setText(_translate("baseAdjustDialog", "亮度"))
+ self.brightLabel.setText(_translate("baseAdjustDialog", "0"))
+ self.contrast.setText(_translate("baseAdjustDialog", "对比度"))
+ self.contrastLabel.setText(_translate("baseAdjustDialog", "0"))
+ self.saturability.setText(_translate("baseAdjustDialog", "饱和度"))
+ self.saturabilityLabel.setText(_translate("baseAdjustDialog", "0"))
+ self.warm.setText(_translate("baseAdjustDialog", "暖色调"))
+ self.warmLabel.setText(_translate("baseAdjustDialog", "0"))
diff --git a/src/UI/BaseAdjustDialog.ui b/src/UI/BaseAdjustDialog.ui
new file mode 100644
index 0000000..4ac3749
--- /dev/null
+++ b/src/UI/BaseAdjustDialog.ui
@@ -0,0 +1,248 @@
+
+
+ baseAdjustDialog
+
+
+
+ 0
+ 0
+ 384
+ 424
+
+
+
+ 基础调整
+
+
+ -
+
+
+
-
+
+
+ 亮度
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 280
+ 20
+
+
+
+
+ -
+
+
+ 0
+
+
+
+
+
+
+ -
+
+
+ -100
+
+
+ 100
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
-
+
+
+ 对比度
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 267
+ 20
+
+
+
+
+ -
+
+
+ 0
+
+
+
+
+
+
+ -
+
+
+ -100
+
+
+ 100
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
-
+
+
+ 饱和度
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 267
+ 20
+
+
+
+
+ -
+
+
+ 0
+
+
+
+
+
+
+ -
+
+
+ -100
+
+
+ 100
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
-
+
+
+ 暖色调
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 267
+ 20
+
+
+
+
+ -
+
+
+ 0
+
+
+
+
+
+
+ -
+
+
+ -100
+
+
+ 100
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+ dialogBtnBox
+ accepted()
+ baseAdjustDialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ dialogBtnBox
+ rejected()
+ baseAdjustDialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/src/UI/ChangeColor.py b/src/UI/ChangeColor.py
new file mode 100644
index 0000000..28a21d8
--- /dev/null
+++ b/src/UI/ChangeColor.py
@@ -0,0 +1,128 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'ChangeColor.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.9
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(475, 419)
+ self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
+ self.buttonBox.setGeometry(QtCore.QRect(-10, 340, 341, 32))
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.line = QtWidgets.QFrame(Dialog)
+ self.line.setGeometry(QtCore.QRect(30, 60, 20, 241))
+ self.line.setFrameShape(QtWidgets.QFrame.VLine)
+ self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line.setObjectName("line")
+ self.line_2 = QtWidgets.QFrame(Dialog)
+ self.line_2.setGeometry(QtCore.QRect(40, 50, 91, 16))
+ self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
+ self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_2.setObjectName("line_2")
+ self.line_3 = QtWidgets.QFrame(Dialog)
+ self.line_3.setGeometry(QtCore.QRect(120, 50, 20, 251))
+ self.line_3.setFrameShape(QtWidgets.QFrame.VLine)
+ self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_3.setObjectName("line_3")
+ self.line_4 = QtWidgets.QFrame(Dialog)
+ self.line_4.setGeometry(QtCore.QRect(40, 290, 91, 16))
+ self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
+ self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_4.setObjectName("line_4")
+ self.line_5 = QtWidgets.QFrame(Dialog)
+ self.line_5.setGeometry(QtCore.QRect(320, 50, 20, 241))
+ self.line_5.setFrameShape(QtWidgets.QFrame.VLine)
+ self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_5.setObjectName("line_5")
+ self.line_6 = QtWidgets.QFrame(Dialog)
+ self.line_6.setGeometry(QtCore.QRect(400, 60, 41, 231))
+ self.line_6.setFrameShape(QtWidgets.QFrame.VLine)
+ self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_6.setObjectName("line_6")
+ self.line_7 = QtWidgets.QFrame(Dialog)
+ self.line_7.setGeometry(QtCore.QRect(330, 50, 91, 20))
+ self.line_7.setFrameShape(QtWidgets.QFrame.HLine)
+ self.line_7.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_7.setObjectName("line_7")
+ self.line_8 = QtWidgets.QFrame(Dialog)
+ self.line_8.setGeometry(QtCore.QRect(330, 290, 91, 16))
+ self.line_8.setFrameShape(QtWidgets.QFrame.HLine)
+ self.line_8.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_8.setObjectName("line_8")
+ self.widget = QtWidgets.QWidget(Dialog)
+ self.widget.setGeometry(QtCore.QRect(60, 50, 191, 241))
+ self.widget.setObjectName("widget")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
+ self.verticalLayout.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.checkBox = QtWidgets.QCheckBox(self.widget)
+ self.checkBox.setObjectName("checkBox")
+ self.verticalLayout.addWidget(self.checkBox)
+ self.checkBox_2 = QtWidgets.QCheckBox(self.widget)
+ self.checkBox_2.setObjectName("checkBox_2")
+ self.verticalLayout.addWidget(self.checkBox_2)
+ self.checkBox_3 = QtWidgets.QCheckBox(self.widget)
+ self.checkBox_3.setObjectName("checkBox_3")
+ self.verticalLayout.addWidget(self.checkBox_3)
+ self.widget1 = QtWidgets.QWidget(Dialog)
+ self.widget1.setGeometry(QtCore.QRect(350, 50, 191, 241))
+ self.widget1.setObjectName("widget1")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget1)
+ self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.checkBox_4 = QtWidgets.QCheckBox(self.widget1)
+ self.checkBox_4.setObjectName("checkBox_4")
+ self.verticalLayout_2.addWidget(self.checkBox_4)
+ self.checkBox_5 = QtWidgets.QCheckBox(self.widget1)
+ self.checkBox_5.setObjectName("checkBox_5")
+ self.verticalLayout_2.addWidget(self.checkBox_5)
+ self.checkBox_6 = QtWidgets.QCheckBox(self.widget1)
+ self.checkBox_6.setObjectName("checkBox_6")
+ self.verticalLayout_2.addWidget(self.checkBox_6)
+ self.label = QtWidgets.QLabel(Dialog)
+ self.label.setGeometry(QtCore.QRect(150, 160, 221, 24))
+ font = QtGui.QFont()
+ font.setFamily("Agency FB")
+ font.setPointSize(16)
+ self.label.setFont(font)
+ self.label.setObjectName("label")
+ self.buttonBox.raise_()
+ self.checkBox.raise_()
+ self.checkBox_2.raise_()
+ self.checkBox_3.raise_()
+ self.line.raise_()
+ self.line_2.raise_()
+ self.line_3.raise_()
+ self.line_4.raise_()
+ self.line_5.raise_()
+ self.line_6.raise_()
+ self.line_7.raise_()
+ self.line_8.raise_()
+ self.label.raise_()
+
+ self.retranslateUi(Dialog)
+ self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
+ self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ _translate = QtCore.QCoreApplication.translate
+ Dialog.setWindowTitle(_translate("Dialog", "颜色变化"))
+ self.checkBox.setText(_translate("Dialog", "红色"))
+ self.checkBox_2.setText(_translate("Dialog", "蓝色"))
+ self.checkBox_3.setText(_translate("Dialog", "白色"))
+ self.checkBox_4.setText(_translate("Dialog", "红色"))
+ self.checkBox_5.setText(_translate("Dialog", "蓝色"))
+ self.checkBox_6.setText(_translate("Dialog", "白色"))
+ self.label.setText(_translate("Dialog", "--transferTo-->"))
diff --git a/src/UI/ChangeColor.ui b/src/UI/ChangeColor.ui
new file mode 100644
index 0000000..f844072
--- /dev/null
+++ b/src/UI/ChangeColor.ui
@@ -0,0 +1,271 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 475
+ 419
+
+
+
+ 颜色变化
+
+
+
+
+ -10
+ 340
+ 341
+ 32
+
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+ 30
+ 60
+ 20
+ 241
+
+
+
+ Qt::Vertical
+
+
+
+
+
+ 40
+ 50
+ 91
+ 16
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 120
+ 50
+ 20
+ 251
+
+
+
+ Qt::Vertical
+
+
+
+
+
+ 40
+ 290
+ 91
+ 16
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 320
+ 50
+ 20
+ 241
+
+
+
+ Qt::Vertical
+
+
+
+
+
+ 400
+ 60
+ 41
+ 231
+
+
+
+ Qt::Vertical
+
+
+
+
+
+ 330
+ 50
+ 91
+ 20
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 330
+ 290
+ 91
+ 16
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 60
+ 50
+ 191
+ 241
+
+
+
+ -
+
+
+ 红色
+
+
+
+ -
+
+
+ 蓝色
+
+
+
+ -
+
+
+ 白色
+
+
+
+
+
+
+
+
+ 350
+ 50
+ 191
+ 241
+
+
+
+ -
+
+
+ 红色
+
+
+
+ -
+
+
+ 蓝色
+
+
+
+ -
+
+
+ 白色
+
+
+
+
+
+
+
+
+ 150
+ 160
+ 221
+ 24
+
+
+
+
+ Agency FB
+ 16
+
+
+
+ --transferTo-->
+
+
+ buttonBox
+ checkBox
+ checkBox_2
+ checkBox_3
+ layoutWidget
+ line
+ line_2
+ line_3
+ line_4
+ line_5
+ line_6
+ line_7
+ line_8
+ label
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/src/UI/SelectStyle.py b/src/UI/SelectStyle.py
new file mode 100644
index 0000000..df355cd
--- /dev/null
+++ b/src/UI/SelectStyle.py
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'selectStyle.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.9
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_dialog(object):
+ def setupUi(self, dialog):
+ dialog.setObjectName("dialog")
+ dialog.resize(588, 437)
+ self.pushButton = QtWidgets.QPushButton(dialog)
+ self.pushButton.setGeometry(QtCore.QRect(120, 340, 91, 31))
+ self.pushButton.setObjectName("pushButton")
+ self.pushButton_2 = QtWidgets.QPushButton(dialog)
+ self.pushButton_2.setGeometry(QtCore.QRect(360, 340, 101, 31))
+ self.pushButton_2.setObjectName("pushButton_2")
+ self.layoutWidget = QtWidgets.QWidget(dialog)
+ self.layoutWidget.setGeometry(QtCore.QRect(30, 50, 531, 221))
+ self.layoutWidget.setObjectName("layoutWidget")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
+ self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.label = QtWidgets.QLabel(self.layoutWidget)
+ self.label.setObjectName("label")
+ self.horizontalLayout.addWidget(self.label)
+ self.label_2 = QtWidgets.QLabel(self.layoutWidget)
+ self.label_2.setObjectName("label_2")
+ self.horizontalLayout.addWidget(self.label_2)
+ self.textBrowser = QtWidgets.QTextBrowser(dialog)
+ self.textBrowser.setGeometry(QtCore.QRect(100, 278, 419, 41))
+ self.textBrowser.setObjectName("textBrowser")
+
+ self.retranslateUi(dialog)
+ QtCore.QMetaObject.connectSlotsByName(dialog)
+
+ def retranslateUi(self, dialog):
+ _translate = QtCore.QCoreApplication.translate
+ dialog.setWindowTitle(_translate("dialog", "视频风格"))
+ self.pushButton.setText(_translate("dialog", "style1"))
+ self.pushButton_2.setText(_translate("dialog", "style2"))
+ self.label.setText(_translate("dialog", "style1"))
+ self.label_2.setText(_translate("dialog", "style2"))
diff --git a/src/UI/SelectStyle.ui b/src/UI/SelectStyle.ui
new file mode 100644
index 0000000..5640c6b
--- /dev/null
+++ b/src/UI/SelectStyle.ui
@@ -0,0 +1,84 @@
+
+
+ dialog
+
+
+
+ 0
+ 0
+ 588
+ 437
+
+
+
+ 视频风格
+
+
+
+
+ 120
+ 340
+ 91
+ 31
+
+
+
+ style1
+
+
+
+
+
+ 360
+ 340
+ 101
+ 31
+
+
+
+ style2
+
+
+
+
+
+ 30
+ 50
+ 531
+ 221
+
+
+
+ -
+
+
+ style1
+
+
+
+ -
+
+
+ style2
+
+
+
+
+
+
+
+
+ 100
+ 270
+ 421
+ 71
+
+
+
+ 生成视频,可能需要几分钟的时间,视频将保存在原目录下
+
+
+
+
+
+
diff --git a/src/UI/__pycache__/BaseAdjustDialog.cpython-310.pyc b/src/UI/__pycache__/BaseAdjustDialog.cpython-310.pyc
new file mode 100644
index 0000000..242a1f6
Binary files /dev/null and b/src/UI/__pycache__/BaseAdjustDialog.cpython-310.pyc differ
diff --git a/src/UI/__pycache__/ChangeColor.cpython-310.pyc b/src/UI/__pycache__/ChangeColor.cpython-310.pyc
new file mode 100644
index 0000000..49e6c2b
Binary files /dev/null and b/src/UI/__pycache__/ChangeColor.cpython-310.pyc differ
diff --git a/src/UI/__pycache__/SelectStyle.cpython-310.pyc b/src/UI/__pycache__/SelectStyle.cpython-310.pyc
new file mode 100644
index 0000000..11d6204
Binary files /dev/null and b/src/UI/__pycache__/SelectStyle.cpython-310.pyc differ
diff --git a/src/UI/__pycache__/demo.cpython-310.pyc b/src/UI/__pycache__/demo.cpython-310.pyc
new file mode 100644
index 0000000..80837aa
Binary files /dev/null and b/src/UI/__pycache__/demo.cpython-310.pyc differ
diff --git a/src/UI/__pycache__/setsize.cpython-310.pyc b/src/UI/__pycache__/setsize.cpython-310.pyc
new file mode 100644
index 0000000..e94ef39
Binary files /dev/null and b/src/UI/__pycache__/setsize.cpython-310.pyc differ
diff --git a/src/UI/demo.py b/src/UI/demo.py
new file mode 100644
index 0000000..859ca46
--- /dev/null
+++ b/src/UI/demo.py
@@ -0,0 +1,185 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'demo.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.9
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ MainWindow.setObjectName("MainWindow")
+ MainWindow.resize(1600, 900)
+ self.centralwidget = QtWidgets.QWidget(MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
+ self.layoutWidget.setGeometry(QtCore.QRect(210, 70, 1341, 561))
+ self.layoutWidget.setObjectName("layoutWidget")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
+ self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.line_4 = QtWidgets.QFrame(self.layoutWidget)
+ self.line_4.setFrameShape(QtWidgets.QFrame.VLine)
+ self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_4.setObjectName("line_4")
+ self.horizontalLayout.addWidget(self.line_4)
+ self.src_image = QtWidgets.QLabel(self.layoutWidget)
+ self.src_image.setMinimumSize(QtCore.QSize(281, 271))
+ self.src_image.setText("")
+ self.src_image.setObjectName("src_image")
+ self.horizontalLayout.addWidget(self.src_image)
+ self.line = QtWidgets.QFrame(self.layoutWidget)
+ self.line.setFrameShape(QtWidgets.QFrame.VLine)
+ self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line.setObjectName("line")
+ self.horizontalLayout.addWidget(self.line)
+ self.dest_image = QtWidgets.QLabel(self.layoutWidget)
+ self.dest_image.setMinimumSize(QtCore.QSize(311, 291))
+ self.dest_image.setText("")
+ self.dest_image.setObjectName("dest_image")
+ self.horizontalLayout.addWidget(self.dest_image)
+ self.line_5 = QtWidgets.QFrame(self.layoutWidget)
+ self.line_5.setFrameShape(QtWidgets.QFrame.VLine)
+ self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_5.setObjectName("line_5")
+ self.horizontalLayout.addWidget(self.line_5)
+ self.label_2 = QtWidgets.QLabel(self.centralwidget)
+ self.label_2.setGeometry(QtCore.QRect(1200, 690, 61, 21))
+ self.label_2.setStyleSheet("Qlable{\n"
+" font: 75 24pt \"Arial\";\n"
+" rgb(170, 0, 0)\n"
+"}")
+ self.label_2.setObjectName("label_2")
+ self.label = QtWidgets.QLabel(self.centralwidget)
+ self.label.setGeometry(QtCore.QRect(530, 690, 51, 21))
+ self.label.setStyleSheet("Qlable{\n"
+" font: 75 24pt \"Arial\";\n"
+" rgb(170, 0, 0)\n"
+"}")
+ self.label.setTextFormat(QtCore.Qt.AutoText)
+ self.label.setObjectName("label")
+ self.line_2 = QtWidgets.QFrame(self.centralwidget)
+ self.line_2.setGeometry(QtCore.QRect(210, 60, 1341, 21))
+ self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
+ self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_2.setObjectName("line_2")
+ self.line_3 = QtWidgets.QFrame(self.centralwidget)
+ self.line_3.setGeometry(QtCore.QRect(210, 630, 1341, 16))
+ self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
+ self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.line_3.setObjectName("line_3")
+ self.layoutWidget1 = QtWidgets.QWidget(self.centralwidget)
+ self.layoutWidget1.setGeometry(QtCore.QRect(40, 90, 121, 361))
+ self.layoutWidget1.setObjectName("layoutWidget1")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget1)
+ self.verticalLayout.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.pushButton = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton.setObjectName("pushButton")
+ self.verticalLayout.addWidget(self.pushButton)
+ self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton_2.setObjectName("pushButton_2")
+ self.verticalLayout.addWidget(self.pushButton_2)
+ self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton_3.setObjectName("pushButton_3")
+ self.verticalLayout.addWidget(self.pushButton_3)
+ self.pushButton_4 = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton_4.setObjectName("pushButton_4")
+ self.verticalLayout.addWidget(self.pushButton_4)
+ self.pushButton_5 = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton_5.setObjectName("pushButton_5")
+ self.verticalLayout.addWidget(self.pushButton_5)
+ self.pushButton_6 = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton_6.setObjectName("pushButton_6")
+ self.verticalLayout.addWidget(self.pushButton_6)
+ self.pushButton_7 = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton_7.setObjectName("pushButton_7")
+ self.verticalLayout.addWidget(self.pushButton_7)
+ self.pushButton_8 = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton_8.setObjectName("pushButton_8")
+ self.verticalLayout.addWidget(self.pushButton_8)
+ self.pushButton_9 = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton_9.setObjectName("pushButton_9")
+ self.verticalLayout.addWidget(self.pushButton_9)
+ self.pushButton_10 = QtWidgets.QPushButton(self.layoutWidget1)
+ self.pushButton_10.setObjectName("pushButton_10")
+ self.verticalLayout.addWidget(self.pushButton_10)
+ self.pushButton_11 = QtWidgets.QPushButton(self.centralwidget)
+ self.pushButton_11.setGeometry(QtCore.QRect(1450, 20, 109, 23))
+ self.pushButton_11.setObjectName("pushButton_11")
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.menubar = QtWidgets.QMenuBar(MainWindow)
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 1600, 24))
+ self.menubar.setObjectName("menubar")
+ self.menu = QtWidgets.QMenu(self.menubar)
+ self.menu.setObjectName("menu")
+ self.menug = QtWidgets.QMenu(self.menubar)
+ self.menug.setObjectName("menug")
+ self.menu_2 = QtWidgets.QMenu(self.menubar)
+ self.menu_2.setObjectName("menu_2")
+ MainWindow.setMenuBar(self.menubar)
+ self.statusbar = QtWidgets.QStatusBar(MainWindow)
+ self.statusbar.setObjectName("statusbar")
+ MainWindow.setStatusBar(self.statusbar)
+ self.actionopen = QtWidgets.QAction(MainWindow)
+ self.actionopen.setObjectName("actionopen")
+ self.actionsave = QtWidgets.QAction(MainWindow)
+ self.actionsave.setObjectName("actionsave")
+ self.actiontansfer = QtWidgets.QAction(MainWindow)
+ self.actiontansfer.setObjectName("actiontansfer")
+ self.actionvideo = QtWidgets.QAction(MainWindow)
+ self.actionvideo.setObjectName("actionvideo")
+ self.actionCorrect = QtWidgets.QAction(MainWindow)
+ self.actionCorrect.setObjectName("actionCorrect")
+ self.actioncorrect_2 = QtWidgets.QAction(MainWindow)
+ self.actioncorrect_2.setObjectName("actioncorrect_2")
+ self.actionChangeColor = QtWidgets.QAction(MainWindow)
+ self.actionChangeColor.setObjectName("actionChangeColor")
+ self.menu.addAction(self.actionopen)
+ self.menu.addAction(self.actionsave)
+ self.menug.addAction(self.actiontansfer)
+ self.menug.addAction(self.actionvideo)
+ self.menu_2.addAction(self.actionCorrect)
+ self.menu_2.addAction(self.actioncorrect_2)
+ self.menu_2.addAction(self.actionChangeColor)
+ self.menubar.addAction(self.menu.menuAction())
+ self.menubar.addAction(self.menu_2.menuAction())
+ self.menubar.addAction(self.menug.menuAction())
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "图像处理程序"))
+ self.label_2.setText(_translate("MainWindow", "处理后"))
+ self.label.setText(_translate("MainWindow", "原图"))
+ self.pushButton.setText(_translate("MainWindow", "图像缩放"))
+ self.pushButton_2.setText(_translate("MainWindow", "图像调节"))
+ self.pushButton_3.setText(_translate("MainWindow", "灰度化"))
+ self.pushButton_4.setText(_translate("MainWindow", "二值化"))
+ self.pushButton_5.setText(_translate("MainWindow", "反相"))
+ self.pushButton_6.setText(_translate("MainWindow", "浮雕"))
+ self.pushButton_7.setText(_translate("MainWindow", "边缘检测"))
+ self.pushButton_8.setText(_translate("MainWindow", "模糊"))
+ self.pushButton_9.setText(_translate("MainWindow", "锐化"))
+ self.pushButton_10.setText(_translate("MainWindow", "旋转"))
+ self.pushButton_11.setText(_translate("MainWindow", "刷新"))
+ self.menu.setTitle(_translate("MainWindow", "文件"))
+ self.menug.setTitle(_translate("MainWindow", "高级功能"))
+ self.menu_2.setTitle(_translate("MainWindow", "实际应用"))
+ self.actionopen.setText(_translate("MainWindow", "打开图片"))
+ self.actionopen.setToolTip(_translate("MainWindow", "打开图片"))
+ self.actionsave.setText(_translate("MainWindow", "保存图片"))
+ self.actiontansfer.setText(_translate("MainWindow", "图像风格迁移"))
+ self.actionvideo.setText(_translate("MainWindow", "视频风格迁移"))
+ self.actionCorrect.setText(_translate("MainWindow", "证件矫正"))
+ self.actionCorrect.setToolTip(_translate("MainWindow", "证件矫正"))
+ self.actioncorrect_2.setText(_translate("MainWindow", "书页矫正"))
+ self.actioncorrect_2.setToolTip(_translate("MainWindow", "书页矫正"))
+ self.actionChangeColor.setText(_translate("MainWindow", "证件底色转换"))
diff --git a/src/UI/demo.ui b/src/UI/demo.ui
new file mode 100644
index 0000000..2cfa876
--- /dev/null
+++ b/src/UI/demo.ui
@@ -0,0 +1,322 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 1600
+ 900
+
+
+
+ 图像处理程序
+
+
+
+
+
+ 210
+ 70
+ 1341
+ 561
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+
+ 281
+ 271
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+
+ 311
+ 291
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+
+
+
+
+
+ 1200
+ 690
+ 61
+ 21
+
+
+
+ Qlable{
+ font: 75 24pt "Arial";
+ rgb(170, 0, 0)
+}
+
+
+ 处理后
+
+
+
+
+
+ 530
+ 690
+ 51
+ 21
+
+
+
+ Qlable{
+ font: 75 24pt "Arial";
+ rgb(170, 0, 0)
+}
+
+
+ 原图
+
+
+ Qt::AutoText
+
+
+
+
+
+ 210
+ 60
+ 1341
+ 21
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 210
+ 630
+ 1341
+ 16
+
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 40
+ 90
+ 121
+ 361
+
+
+
+ -
+
+
+ 图像缩放
+
+
+
+ -
+
+
+ 图像调节
+
+
+
+ -
+
+
+ 灰度化
+
+
+
+ -
+
+
+ 二值化
+
+
+
+ -
+
+
+ 反相
+
+
+
+ -
+
+
+ 浮雕
+
+
+
+ -
+
+
+ 边缘检测
+
+
+
+ -
+
+
+ 模糊
+
+
+
+ -
+
+
+ 锐化
+
+
+
+ -
+
+
+ 旋转
+
+
+
+
+
+
+
+
+ 1450
+ 20
+ 109
+ 23
+
+
+
+ 刷新
+
+
+
+
+
+
+
+ 打开图片
+
+
+ 打开图片
+
+
+
+
+ 保存图片
+
+
+
+
+ 图像风格迁移
+
+
+
+
+ 视频风格迁移
+
+
+
+
+ 证件矫正
+
+
+ 证件矫正
+
+
+
+
+ 书页矫正
+
+
+ 书页矫正
+
+
+
+
+ 证件底色转换
+
+
+
+
+
+
diff --git a/src/UI/setsize.py b/src/UI/setsize.py
new file mode 100644
index 0000000..18f485f
--- /dev/null
+++ b/src/UI/setsize.py
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'setsize.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.9
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(400, 300)
+ self.pushButton = QtWidgets.QPushButton(Dialog)
+ self.pushButton.setGeometry(QtCore.QRect(150, 190, 75, 23))
+ self.pushButton.setObjectName("pushButton")
+ self.label = QtWidgets.QLabel(Dialog)
+ self.label.setGeometry(QtCore.QRect(80, 70, 54, 31))
+ self.label.setObjectName("label")
+ self.label_2 = QtWidgets.QLabel(Dialog)
+ self.label_2.setGeometry(QtCore.QRect(80, 120, 54, 31))
+ self.label_2.setObjectName("label_2")
+ self.lineEdit = QtWidgets.QLineEdit(Dialog)
+ self.lineEdit.setGeometry(QtCore.QRect(140, 70, 113, 20))
+ self.lineEdit.setObjectName("lineEdit")
+ self.lineEdit_2 = QtWidgets.QLineEdit(Dialog)
+ self.lineEdit_2.setGeometry(QtCore.QRect(140, 130, 113, 20))
+ self.lineEdit_2.setObjectName("lineEdit_2")
+
+ self.retranslateUi(Dialog)
+ self.pushButton.clicked.connect(Dialog.close) # type: ignore
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ _translate = QtCore.QCoreApplication.translate
+ Dialog.setWindowTitle(_translate("Dialog", "大小调整"))
+ self.pushButton.setText(_translate("Dialog", "确定"))
+ self.label.setText(_translate("Dialog", "宽度:"))
+ self.label_2.setText(_translate("Dialog", "高度:"))
diff --git a/src/UI/setsize.ui b/src/UI/setsize.ui
new file mode 100644
index 0000000..f7abaa9
--- /dev/null
+++ b/src/UI/setsize.ui
@@ -0,0 +1,95 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+ Dialog
+
+
+
+
+ 150
+ 190
+ 75
+ 23
+
+
+
+ 确定
+
+
+
+
+
+ 80
+ 70
+ 54
+ 31
+
+
+
+ 宽度:
+
+
+
+
+
+ 80
+ 120
+ 54
+ 31
+
+
+
+ 高度:
+
+
+
+
+
+ 140
+ 70
+ 113
+ 20
+
+
+
+
+
+
+ 140
+ 130
+ 113
+ 20
+
+
+
+
+
+
+
+ pushButton
+ clicked()
+ Dialog
+ close()
+
+
+ 183
+ 201
+
+
+ 295
+ 189
+
+
+
+
+
diff --git a/src/Vgg16.py b/src/Vgg16.py
new file mode 100644
index 0000000..1d791f4
--- /dev/null
+++ b/src/Vgg16.py
@@ -0,0 +1,38 @@
+from collections import namedtuple
+
+import torch
+from torchvision import models
+
+
+class Vgg16(torch.nn.Module):
+ def __init__(self, requires_grad=False):
+ super(Vgg16, self).__init__()
+ vgg_pretrained_features = models.vgg16(pretrained=True).features
+ self.slice1 = torch.nn.Sequential()
+ self.slice2 = torch.nn.Sequential()
+ self.slice3 = torch.nn.Sequential()
+ self.slice4 = torch.nn.Sequential()
+ for x in range(4):
+ self.slice1.add_module(str(x), vgg_pretrained_features[x])
+ for x in range(4, 9):
+ self.slice2.add_module(str(x), vgg_pretrained_features[x])
+ for x in range(9, 16):
+ self.slice3.add_module(str(x), vgg_pretrained_features[x])
+ for x in range(16, 23):
+ self.slice4.add_module(str(x), vgg_pretrained_features[x])
+ if not requires_grad:
+ for param in self.parameters():
+ param.requires_grad = False
+
+ def forward(self, X):
+ h = self.slice1(X)
+ h_relu1_2 = h
+ h = self.slice2(h)
+ h_relu2_2 = h
+ h = self.slice3(h)
+ h_relu3_3 = h
+ h = self.slice4(h)
+ h_relu4_3 = h
+ vgg_outputs = namedtuple("VggOutputs", ['relu1_2', 'relu2_2', 'relu3_3', 'relu4_3'])
+ out = vgg_outputs(h_relu1_2, h_relu2_2, h_relu3_3, h_relu4_3)
+ return out
\ No newline at end of file
diff --git a/src/__pycache__/change_color.cpython-310.pyc b/src/__pycache__/change_color.cpython-310.pyc
new file mode 100644
index 0000000..e3e318c
Binary files /dev/null and b/src/__pycache__/change_color.cpython-310.pyc differ
diff --git a/src/__pycache__/correct.cpython-310.pyc b/src/__pycache__/correct.cpython-310.pyc
new file mode 100644
index 0000000..8a7f7e1
Binary files /dev/null and b/src/__pycache__/correct.cpython-310.pyc differ
diff --git a/src/__pycache__/image_trans.cpython-310.pyc b/src/__pycache__/image_trans.cpython-310.pyc
new file mode 100644
index 0000000..8db1b24
Binary files /dev/null and b/src/__pycache__/image_trans.cpython-310.pyc differ
diff --git a/src/__pycache__/transfer.cpython-310.pyc b/src/__pycache__/transfer.cpython-310.pyc
new file mode 100644
index 0000000..d24d59b
Binary files /dev/null and b/src/__pycache__/transfer.cpython-310.pyc differ
diff --git a/src/__pycache__/transfer_net.cpython-310.pyc b/src/__pycache__/transfer_net.cpython-310.pyc
new file mode 100644
index 0000000..48cdd52
Binary files /dev/null and b/src/__pycache__/transfer_net.cpython-310.pyc differ
diff --git a/src/__pycache__/video.cpython-310.pyc b/src/__pycache__/video.cpython-310.pyc
new file mode 100644
index 0000000..c033c8a
Binary files /dev/null and b/src/__pycache__/video.cpython-310.pyc differ
diff --git a/src/change_color.py b/src/change_color.py
new file mode 100644
index 0000000..ab25fec
--- /dev/null
+++ b/src/change_color.py
@@ -0,0 +1,69 @@
+import cv2
+import numpy as np
+import os
+from PIL import Image
+
+
+def run2(img, src_type, dst_type):
+ cv2.imwrite("image/tmp_src.jpg", img)
+ # 输入
+ in_path = "image/tmp_src.jpg"
+ # 输出
+ out_path = "image/tmp_dst.jpg"
+ # 要替换的背景颜色
+ color = "deepskyblue"
+ # 红:red、蓝:blue、黑:black、白:white
+
+ # 去掉背景颜色
+ os.system('backgroundremover -i "' + str(in_path) + '" -o "image/cg.jpg"')
+ # 加上背景颜色
+ no_bg_image = Image.open("image/cg.jpg")
+ x, y = no_bg_image.size
+ new_image = Image.new('RGBA', no_bg_image.size, color=color)
+ new_image.paste(no_bg_image, (0, 0, x, y), no_bg_image)
+ new_image.save(out_path)
+ res = cv2.imread(out_path)
+ return res
+
+
+def run(image, src_type, dst_type):
+ # 图像缩放
+ img = cv2.resize(image, None, fx=1, fy=1)
+ rows, cols, channels = img.shape
+ # 图片转换为灰度图
+ hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
+ # 图片的二值化处理
+ if src_type == 'r':
+ lower_red = np.array([0, 150, 50])
+ upper_red = np.array([5, 255, 255])
+ mask = cv2.inRange(hsv, lower_red, upper_red)
+ lower_red2 = np.array([175, 150, 50])
+ upper_red2 = np.array([179, 255, 255])
+ mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
+ mask=cv2.bitwise_or(mask,mask2)
+ elif src_type == 'b':
+ lower_blue = np.array([90, 70, 70])
+ upper_blue = np.array([110, 255, 255])
+ mask = cv2.inRange(hsv, lower_blue, upper_blue)
+ else:
+ mask = cv2.inRange(hsv, np.array([0, 0, 221]), np.array([180, 30, 255]))
+ # 腐蚀膨胀
+ erode = cv2.erode(mask, np.ones((10, 10), np.uint8), iterations=1)
+ dilate = cv2.dilate(erode, np.ones((10, 10), np.uint8), iterations=1)
+ # 转变为
+ if dst_type == 'w':
+ for i in range(rows):
+ for j in range(cols):
+ if dilate[i, j] == 255: # 像素点255表示白色
+ img[i, j] = (255, 255, 255) # 此处替换颜色,为BGR通道,不是RGB
+ elif dst_type == 'r':
+ for i in range(rows):
+ for j in range(cols):
+ if dilate[i, j] == 255: # 像素点255表示白色
+ img[i, j] = (0, 0, 255) # 此处替换颜色,为BGR通道,不是RGB
+ elif dst_type == 'b':
+ for i in range(rows):
+ for j in range(cols):
+ if dilate[i, j] == 255: # 像素点255表示白色
+ img[i, j] = (255, 0, 0) # 此处替换颜色,为BGR通道,不是RGB
+ return img
diff --git a/src/correct.py b/src/correct.py
new file mode 100644
index 0000000..9806ff2
--- /dev/null
+++ b/src/correct.py
@@ -0,0 +1,116 @@
+import cv2
+import math
+import numpy as np
+
+
+def Img_Outline(img):
+ original_img = img
+ gray_img = cv2.cvtColor(original_img, cv2.COLOR_BGR2GRAY)
+ blurred = cv2.GaussianBlur(gray_img, (9, 9), 0) # 高斯模糊去噪(设定卷积核大小影响效果)
+ _, RedThresh = cv2.threshold(blurred, 165, 255, cv2.THRESH_BINARY) # 设定阈值165(阈值影响开闭运算效果)
+ kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 定义矩形结构元素
+ closed = cv2.morphologyEx(RedThresh, cv2.MORPH_CLOSE, kernel) # 闭运算(链接块)
+ opened = cv2.morphologyEx(closed, cv2.MORPH_OPEN, kernel) # 开运算(去噪点)
+ return original_img, opened
+
+
+def findContours_img(original_img, opened):
+ contours, hierarchy = cv2.findContours(opened, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
+ c = sorted(contours, key=cv2.contourArea, reverse=True)[1] # 计算最大轮廓的旋转包围盒
+ rect = cv2.minAreaRect(c) # 获取包围盒(中心点,宽高,旋转角度)
+ box = np.int0(cv2.boxPoints(rect)) # box
+ draw_img = cv2.drawContours(original_img.copy(), [box], -1, (0, 0, 255), 3)
+
+ print("box[0]:", box[0])
+ print("box[1]:", box[1])
+ print("box[2]:", box[2])
+ print("box[3]:", box[3])
+ return box, draw_img
+
+
+def Perspective_transform(box, original_img):
+ # 获取画框宽高(x=orignal_W,y=orignal_H)
+ orignal_W = math.ceil(np.sqrt((box[3][1] - box[2][1]) ** 2 + (box[3][0] - box[2][0]) ** 2))
+ orignal_H = math.ceil(np.sqrt((box[3][1] - box[0][1]) ** 2 + (box[3][0] - box[0][0]) ** 2))
+
+ # 原图中的四个顶点,与变换矩阵
+ pts1 = np.float32([box[0], box[1], box[2], box[3]])
+ pts2 = np.float32(
+ [[int(orignal_W + 1), int(orignal_H + 1)], [0, int(orignal_H + 1)], [0, 0], [int(orignal_W + 1), 0]])
+
+ # 生成透视变换矩阵;进行透视变换
+ M = cv2.getPerspectiveTransform(pts1, pts2)
+ result_img = cv2.warpPerspective(original_img, M, (int(orignal_W + 3), int(orignal_H + 1)))
+
+ return result_img
+
+
+def fourier_demo(img):
+ # 1、灰度化读取文件,
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
+
+ # 2、图像延扩
+ h, w = img.shape[:2]
+ new_h = cv2.getOptimalDFTSize(h)
+ new_w = cv2.getOptimalDFTSize(w)
+ right = new_w - w
+ bottom = new_h - h
+ nimg = cv2.copyMakeBorder(img, 0, bottom, 0, right, borderType=cv2.BORDER_CONSTANT, value=0)
+
+ # 3、执行傅里叶变换,并过得频域图像
+ f = np.fft.fft2(nimg)
+ fshift = np.fft.fftshift(f)
+ magnitude = np.log(np.abs(fshift))
+
+ # 二值化
+ magnitude_uint = magnitude.astype(np.uint8)
+ ret, thresh = cv2.threshold(magnitude_uint, 11, 255, cv2.THRESH_BINARY)
+ print(ret)
+
+ print(thresh.dtype)
+ # 霍夫直线变换
+ lines = cv2.HoughLinesP(thresh, 2, np.pi / 180, 30, minLineLength=40, maxLineGap=100)
+ print(len(lines))
+
+ # 创建一个新图像,标注直线
+ lineimg = np.ones(nimg.shape, dtype=np.uint8)
+ lineimg = lineimg * 255
+
+ piThresh = np.pi / 180
+ pi2 = np.pi / 2
+ print(piThresh)
+
+ for line in lines:
+ x1, y1, x2, y2 = line[0]
+ cv2.line(lineimg, (x1, y1), (x2, y2), (0, 255, 0), 2)
+ if x2 - x1 == 0:
+ continue
+ else:
+ theta = (y2 - y1) / (x2 - x1)
+ if abs(theta) < piThresh or abs(theta - pi2) < piThresh:
+ continue
+ else:
+ print(theta)
+
+ angle = math.atan(theta)
+ print(angle)
+ angle = angle * (180 / np.pi)
+ print(angle)
+ angle = (angle - 90) / (w / h)
+ print(angle)
+
+ center = (w // 2, h // 2)
+ M = cv2.getRotationMatrix2D(center, angle, 1.0)
+ rotated = cv2.warpAffine(img, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)
+ return rotated
+
+
+def runCard(img):
+ original_img, opened = Img_Outline(img)
+ box, draw_img = findContours_img(original_img, opened)
+ result_img = Perspective_transform(box, original_img)
+ return result_img
+
+
+def runPaper(img):
+ return fourier_demo(img)
diff --git a/src/frames/1.jpg b/src/frames/1.jpg
new file mode 100644
index 0000000..4500a76
Binary files /dev/null and b/src/frames/1.jpg differ
diff --git a/src/frames/10.jpg b/src/frames/10.jpg
new file mode 100644
index 0000000..45216f3
Binary files /dev/null and b/src/frames/10.jpg differ
diff --git a/src/frames/100.jpg b/src/frames/100.jpg
new file mode 100644
index 0000000..ce1438a
Binary files /dev/null and b/src/frames/100.jpg differ
diff --git a/src/frames/101.jpg b/src/frames/101.jpg
new file mode 100644
index 0000000..98e9991
Binary files /dev/null and b/src/frames/101.jpg differ
diff --git a/src/frames/102.jpg b/src/frames/102.jpg
new file mode 100644
index 0000000..91aa1be
Binary files /dev/null and b/src/frames/102.jpg differ
diff --git a/src/frames/103.jpg b/src/frames/103.jpg
new file mode 100644
index 0000000..61470da
Binary files /dev/null and b/src/frames/103.jpg differ
diff --git a/src/frames/104.jpg b/src/frames/104.jpg
new file mode 100644
index 0000000..04ab826
Binary files /dev/null and b/src/frames/104.jpg differ
diff --git a/src/frames/105.jpg b/src/frames/105.jpg
new file mode 100644
index 0000000..ab849fc
Binary files /dev/null and b/src/frames/105.jpg differ
diff --git a/src/frames/106.jpg b/src/frames/106.jpg
new file mode 100644
index 0000000..ad560c9
Binary files /dev/null and b/src/frames/106.jpg differ
diff --git a/src/frames/107.jpg b/src/frames/107.jpg
new file mode 100644
index 0000000..b0ba715
Binary files /dev/null and b/src/frames/107.jpg differ
diff --git a/src/frames/108.jpg b/src/frames/108.jpg
new file mode 100644
index 0000000..bfc9522
Binary files /dev/null and b/src/frames/108.jpg differ
diff --git a/src/frames/109.jpg b/src/frames/109.jpg
new file mode 100644
index 0000000..68d0b06
Binary files /dev/null and b/src/frames/109.jpg differ
diff --git a/src/frames/11.jpg b/src/frames/11.jpg
new file mode 100644
index 0000000..1c65ca6
Binary files /dev/null and b/src/frames/11.jpg differ
diff --git a/src/frames/110.jpg b/src/frames/110.jpg
new file mode 100644
index 0000000..609e70c
Binary files /dev/null and b/src/frames/110.jpg differ
diff --git a/src/frames/111.jpg b/src/frames/111.jpg
new file mode 100644
index 0000000..a6bf4ef
Binary files /dev/null and b/src/frames/111.jpg differ
diff --git a/src/frames/112.jpg b/src/frames/112.jpg
new file mode 100644
index 0000000..061f519
Binary files /dev/null and b/src/frames/112.jpg differ
diff --git a/src/frames/113.jpg b/src/frames/113.jpg
new file mode 100644
index 0000000..b51e329
Binary files /dev/null and b/src/frames/113.jpg differ
diff --git a/src/frames/114.jpg b/src/frames/114.jpg
new file mode 100644
index 0000000..5426d0b
Binary files /dev/null and b/src/frames/114.jpg differ
diff --git a/src/frames/115.jpg b/src/frames/115.jpg
new file mode 100644
index 0000000..e6a6e82
Binary files /dev/null and b/src/frames/115.jpg differ
diff --git a/src/frames/116.jpg b/src/frames/116.jpg
new file mode 100644
index 0000000..d65403b
Binary files /dev/null and b/src/frames/116.jpg differ
diff --git a/src/frames/117.jpg b/src/frames/117.jpg
new file mode 100644
index 0000000..95f556c
Binary files /dev/null and b/src/frames/117.jpg differ
diff --git a/src/frames/118.jpg b/src/frames/118.jpg
new file mode 100644
index 0000000..8c4c42c
Binary files /dev/null and b/src/frames/118.jpg differ
diff --git a/src/frames/119.jpg b/src/frames/119.jpg
new file mode 100644
index 0000000..c42a0da
Binary files /dev/null and b/src/frames/119.jpg differ
diff --git a/src/frames/12.jpg b/src/frames/12.jpg
new file mode 100644
index 0000000..3d80a07
Binary files /dev/null and b/src/frames/12.jpg differ
diff --git a/src/frames/120.jpg b/src/frames/120.jpg
new file mode 100644
index 0000000..b3a5a54
Binary files /dev/null and b/src/frames/120.jpg differ
diff --git a/src/frames/121.jpg b/src/frames/121.jpg
new file mode 100644
index 0000000..3040440
Binary files /dev/null and b/src/frames/121.jpg differ
diff --git a/src/frames/122.jpg b/src/frames/122.jpg
new file mode 100644
index 0000000..e6faa37
Binary files /dev/null and b/src/frames/122.jpg differ
diff --git a/src/frames/123.jpg b/src/frames/123.jpg
new file mode 100644
index 0000000..c60d6b7
Binary files /dev/null and b/src/frames/123.jpg differ
diff --git a/src/frames/124.jpg b/src/frames/124.jpg
new file mode 100644
index 0000000..894f2af
Binary files /dev/null and b/src/frames/124.jpg differ
diff --git a/src/frames/125.jpg b/src/frames/125.jpg
new file mode 100644
index 0000000..af543a3
Binary files /dev/null and b/src/frames/125.jpg differ
diff --git a/src/frames/126.jpg b/src/frames/126.jpg
new file mode 100644
index 0000000..3033d6d
Binary files /dev/null and b/src/frames/126.jpg differ
diff --git a/src/frames/127.jpg b/src/frames/127.jpg
new file mode 100644
index 0000000..ae1f841
Binary files /dev/null and b/src/frames/127.jpg differ
diff --git a/src/frames/128.jpg b/src/frames/128.jpg
new file mode 100644
index 0000000..fd7c739
Binary files /dev/null and b/src/frames/128.jpg differ
diff --git a/src/frames/129.jpg b/src/frames/129.jpg
new file mode 100644
index 0000000..48d4422
Binary files /dev/null and b/src/frames/129.jpg differ
diff --git a/src/frames/13.jpg b/src/frames/13.jpg
new file mode 100644
index 0000000..c7a2c73
Binary files /dev/null and b/src/frames/13.jpg differ
diff --git a/src/frames/130.jpg b/src/frames/130.jpg
new file mode 100644
index 0000000..718e788
Binary files /dev/null and b/src/frames/130.jpg differ
diff --git a/src/frames/131.jpg b/src/frames/131.jpg
new file mode 100644
index 0000000..4403cd7
Binary files /dev/null and b/src/frames/131.jpg differ
diff --git a/src/frames/132.jpg b/src/frames/132.jpg
new file mode 100644
index 0000000..b1b1f57
Binary files /dev/null and b/src/frames/132.jpg differ
diff --git a/src/frames/133.jpg b/src/frames/133.jpg
new file mode 100644
index 0000000..e3e5dd7
Binary files /dev/null and b/src/frames/133.jpg differ
diff --git a/src/frames/134.jpg b/src/frames/134.jpg
new file mode 100644
index 0000000..2538266
Binary files /dev/null and b/src/frames/134.jpg differ
diff --git a/src/frames/135.jpg b/src/frames/135.jpg
new file mode 100644
index 0000000..4bac348
Binary files /dev/null and b/src/frames/135.jpg differ
diff --git a/src/frames/136.jpg b/src/frames/136.jpg
new file mode 100644
index 0000000..ddf8913
Binary files /dev/null and b/src/frames/136.jpg differ
diff --git a/src/frames/137.jpg b/src/frames/137.jpg
new file mode 100644
index 0000000..5cb5898
Binary files /dev/null and b/src/frames/137.jpg differ
diff --git a/src/frames/138.jpg b/src/frames/138.jpg
new file mode 100644
index 0000000..63233ec
Binary files /dev/null and b/src/frames/138.jpg differ
diff --git a/src/frames/139.jpg b/src/frames/139.jpg
new file mode 100644
index 0000000..50392dc
Binary files /dev/null and b/src/frames/139.jpg differ
diff --git a/src/frames/14.jpg b/src/frames/14.jpg
new file mode 100644
index 0000000..1f347b6
Binary files /dev/null and b/src/frames/14.jpg differ
diff --git a/src/frames/140.jpg b/src/frames/140.jpg
new file mode 100644
index 0000000..d381494
Binary files /dev/null and b/src/frames/140.jpg differ
diff --git a/src/frames/141.jpg b/src/frames/141.jpg
new file mode 100644
index 0000000..07a231a
Binary files /dev/null and b/src/frames/141.jpg differ
diff --git a/src/frames/142.jpg b/src/frames/142.jpg
new file mode 100644
index 0000000..c3bc453
Binary files /dev/null and b/src/frames/142.jpg differ
diff --git a/src/frames/143.jpg b/src/frames/143.jpg
new file mode 100644
index 0000000..995e793
Binary files /dev/null and b/src/frames/143.jpg differ
diff --git a/src/frames/144.jpg b/src/frames/144.jpg
new file mode 100644
index 0000000..4c38254
Binary files /dev/null and b/src/frames/144.jpg differ
diff --git a/src/frames/145.jpg b/src/frames/145.jpg
new file mode 100644
index 0000000..2ccb314
Binary files /dev/null and b/src/frames/145.jpg differ
diff --git a/src/frames/146.jpg b/src/frames/146.jpg
new file mode 100644
index 0000000..4f83d12
Binary files /dev/null and b/src/frames/146.jpg differ
diff --git a/src/frames/147.jpg b/src/frames/147.jpg
new file mode 100644
index 0000000..71403d6
Binary files /dev/null and b/src/frames/147.jpg differ
diff --git a/src/frames/148.jpg b/src/frames/148.jpg
new file mode 100644
index 0000000..5cacd5a
Binary files /dev/null and b/src/frames/148.jpg differ
diff --git a/src/frames/149.jpg b/src/frames/149.jpg
new file mode 100644
index 0000000..e5c296b
Binary files /dev/null and b/src/frames/149.jpg differ
diff --git a/src/frames/15.jpg b/src/frames/15.jpg
new file mode 100644
index 0000000..51cefa5
Binary files /dev/null and b/src/frames/15.jpg differ
diff --git a/src/frames/150.jpg b/src/frames/150.jpg
new file mode 100644
index 0000000..c3ab1e1
Binary files /dev/null and b/src/frames/150.jpg differ
diff --git a/src/frames/151.jpg b/src/frames/151.jpg
new file mode 100644
index 0000000..ca62e26
Binary files /dev/null and b/src/frames/151.jpg differ
diff --git a/src/frames/152.jpg b/src/frames/152.jpg
new file mode 100644
index 0000000..5071f84
Binary files /dev/null and b/src/frames/152.jpg differ
diff --git a/src/frames/153.jpg b/src/frames/153.jpg
new file mode 100644
index 0000000..04c7735
Binary files /dev/null and b/src/frames/153.jpg differ
diff --git a/src/frames/154.jpg b/src/frames/154.jpg
new file mode 100644
index 0000000..8c52750
Binary files /dev/null and b/src/frames/154.jpg differ
diff --git a/src/frames/155.jpg b/src/frames/155.jpg
new file mode 100644
index 0000000..e6b84d5
Binary files /dev/null and b/src/frames/155.jpg differ
diff --git a/src/frames/156.jpg b/src/frames/156.jpg
new file mode 100644
index 0000000..10c5ed8
Binary files /dev/null and b/src/frames/156.jpg differ
diff --git a/src/frames/157.jpg b/src/frames/157.jpg
new file mode 100644
index 0000000..e4484cc
Binary files /dev/null and b/src/frames/157.jpg differ
diff --git a/src/frames/158.jpg b/src/frames/158.jpg
new file mode 100644
index 0000000..c6e7c4e
Binary files /dev/null and b/src/frames/158.jpg differ
diff --git a/src/frames/159.jpg b/src/frames/159.jpg
new file mode 100644
index 0000000..76756ac
Binary files /dev/null and b/src/frames/159.jpg differ
diff --git a/src/frames/16.jpg b/src/frames/16.jpg
new file mode 100644
index 0000000..b11abb4
Binary files /dev/null and b/src/frames/16.jpg differ
diff --git a/src/frames/160.jpg b/src/frames/160.jpg
new file mode 100644
index 0000000..c395d57
Binary files /dev/null and b/src/frames/160.jpg differ
diff --git a/src/frames/161.jpg b/src/frames/161.jpg
new file mode 100644
index 0000000..3878a25
Binary files /dev/null and b/src/frames/161.jpg differ
diff --git a/src/frames/162.jpg b/src/frames/162.jpg
new file mode 100644
index 0000000..7665c13
Binary files /dev/null and b/src/frames/162.jpg differ
diff --git a/src/frames/163.jpg b/src/frames/163.jpg
new file mode 100644
index 0000000..5c26a70
Binary files /dev/null and b/src/frames/163.jpg differ
diff --git a/src/frames/164.jpg b/src/frames/164.jpg
new file mode 100644
index 0000000..af7a2c8
Binary files /dev/null and b/src/frames/164.jpg differ
diff --git a/src/frames/165.jpg b/src/frames/165.jpg
new file mode 100644
index 0000000..a25f1dd
Binary files /dev/null and b/src/frames/165.jpg differ
diff --git a/src/frames/166.jpg b/src/frames/166.jpg
new file mode 100644
index 0000000..4f41f1f
Binary files /dev/null and b/src/frames/166.jpg differ
diff --git a/src/frames/167.jpg b/src/frames/167.jpg
new file mode 100644
index 0000000..c3c37cf
Binary files /dev/null and b/src/frames/167.jpg differ
diff --git a/src/frames/168.jpg b/src/frames/168.jpg
new file mode 100644
index 0000000..89c47f3
Binary files /dev/null and b/src/frames/168.jpg differ
diff --git a/src/frames/169.jpg b/src/frames/169.jpg
new file mode 100644
index 0000000..5e8ec86
Binary files /dev/null and b/src/frames/169.jpg differ
diff --git a/src/frames/17.jpg b/src/frames/17.jpg
new file mode 100644
index 0000000..b7265ca
Binary files /dev/null and b/src/frames/17.jpg differ
diff --git a/src/frames/170.jpg b/src/frames/170.jpg
new file mode 100644
index 0000000..5cac7e9
Binary files /dev/null and b/src/frames/170.jpg differ
diff --git a/src/frames/171.jpg b/src/frames/171.jpg
new file mode 100644
index 0000000..f558464
Binary files /dev/null and b/src/frames/171.jpg differ
diff --git a/src/frames/172.jpg b/src/frames/172.jpg
new file mode 100644
index 0000000..9ab1053
Binary files /dev/null and b/src/frames/172.jpg differ
diff --git a/src/frames/173.jpg b/src/frames/173.jpg
new file mode 100644
index 0000000..3b71f07
Binary files /dev/null and b/src/frames/173.jpg differ
diff --git a/src/frames/174.jpg b/src/frames/174.jpg
new file mode 100644
index 0000000..0d1f339
Binary files /dev/null and b/src/frames/174.jpg differ
diff --git a/src/frames/175.jpg b/src/frames/175.jpg
new file mode 100644
index 0000000..a9df265
Binary files /dev/null and b/src/frames/175.jpg differ
diff --git a/src/frames/176.jpg b/src/frames/176.jpg
new file mode 100644
index 0000000..e00a4aa
Binary files /dev/null and b/src/frames/176.jpg differ
diff --git a/src/frames/177.jpg b/src/frames/177.jpg
new file mode 100644
index 0000000..0ece87d
Binary files /dev/null and b/src/frames/177.jpg differ
diff --git a/src/frames/178.jpg b/src/frames/178.jpg
new file mode 100644
index 0000000..c5352b0
Binary files /dev/null and b/src/frames/178.jpg differ
diff --git a/src/frames/179.jpg b/src/frames/179.jpg
new file mode 100644
index 0000000..416d940
Binary files /dev/null and b/src/frames/179.jpg differ
diff --git a/src/frames/18.jpg b/src/frames/18.jpg
new file mode 100644
index 0000000..9d585d2
Binary files /dev/null and b/src/frames/18.jpg differ
diff --git a/src/frames/180.jpg b/src/frames/180.jpg
new file mode 100644
index 0000000..28f1bc7
Binary files /dev/null and b/src/frames/180.jpg differ
diff --git a/src/frames/181.jpg b/src/frames/181.jpg
new file mode 100644
index 0000000..f28fd93
Binary files /dev/null and b/src/frames/181.jpg differ
diff --git a/src/frames/182.jpg b/src/frames/182.jpg
new file mode 100644
index 0000000..d0e110b
Binary files /dev/null and b/src/frames/182.jpg differ
diff --git a/src/frames/183.jpg b/src/frames/183.jpg
new file mode 100644
index 0000000..a96880b
Binary files /dev/null and b/src/frames/183.jpg differ
diff --git a/src/frames/184.jpg b/src/frames/184.jpg
new file mode 100644
index 0000000..defb08b
Binary files /dev/null and b/src/frames/184.jpg differ
diff --git a/src/frames/185.jpg b/src/frames/185.jpg
new file mode 100644
index 0000000..c40e6a5
Binary files /dev/null and b/src/frames/185.jpg differ
diff --git a/src/frames/186.jpg b/src/frames/186.jpg
new file mode 100644
index 0000000..b138264
Binary files /dev/null and b/src/frames/186.jpg differ
diff --git a/src/frames/187.jpg b/src/frames/187.jpg
new file mode 100644
index 0000000..318a279
Binary files /dev/null and b/src/frames/187.jpg differ
diff --git a/src/frames/188.jpg b/src/frames/188.jpg
new file mode 100644
index 0000000..cea794e
Binary files /dev/null and b/src/frames/188.jpg differ
diff --git a/src/frames/189.jpg b/src/frames/189.jpg
new file mode 100644
index 0000000..56af88c
Binary files /dev/null and b/src/frames/189.jpg differ
diff --git a/src/frames/19.jpg b/src/frames/19.jpg
new file mode 100644
index 0000000..ea9f17a
Binary files /dev/null and b/src/frames/19.jpg differ
diff --git a/src/frames/190.jpg b/src/frames/190.jpg
new file mode 100644
index 0000000..36fd145
Binary files /dev/null and b/src/frames/190.jpg differ
diff --git a/src/frames/191.jpg b/src/frames/191.jpg
new file mode 100644
index 0000000..ce3eb73
Binary files /dev/null and b/src/frames/191.jpg differ
diff --git a/src/frames/192.jpg b/src/frames/192.jpg
new file mode 100644
index 0000000..ab2b290
Binary files /dev/null and b/src/frames/192.jpg differ
diff --git a/src/frames/193.jpg b/src/frames/193.jpg
new file mode 100644
index 0000000..d12ed3a
Binary files /dev/null and b/src/frames/193.jpg differ
diff --git a/src/frames/194.jpg b/src/frames/194.jpg
new file mode 100644
index 0000000..ad5dbf0
Binary files /dev/null and b/src/frames/194.jpg differ
diff --git a/src/frames/195.jpg b/src/frames/195.jpg
new file mode 100644
index 0000000..9c04ea9
Binary files /dev/null and b/src/frames/195.jpg differ
diff --git a/src/frames/196.jpg b/src/frames/196.jpg
new file mode 100644
index 0000000..a05a295
Binary files /dev/null and b/src/frames/196.jpg differ
diff --git a/src/frames/197.jpg b/src/frames/197.jpg
new file mode 100644
index 0000000..78c0c46
Binary files /dev/null and b/src/frames/197.jpg differ
diff --git a/src/frames/198.jpg b/src/frames/198.jpg
new file mode 100644
index 0000000..d47d084
Binary files /dev/null and b/src/frames/198.jpg differ
diff --git a/src/frames/199.jpg b/src/frames/199.jpg
new file mode 100644
index 0000000..3fd8048
Binary files /dev/null and b/src/frames/199.jpg differ
diff --git a/src/frames/2.jpg b/src/frames/2.jpg
new file mode 100644
index 0000000..f0b2c42
Binary files /dev/null and b/src/frames/2.jpg differ
diff --git a/src/frames/20.jpg b/src/frames/20.jpg
new file mode 100644
index 0000000..9e13e43
Binary files /dev/null and b/src/frames/20.jpg differ
diff --git a/src/frames/200.jpg b/src/frames/200.jpg
new file mode 100644
index 0000000..6ed29ea
Binary files /dev/null and b/src/frames/200.jpg differ
diff --git a/src/frames/201.jpg b/src/frames/201.jpg
new file mode 100644
index 0000000..4f38d64
Binary files /dev/null and b/src/frames/201.jpg differ
diff --git a/src/frames/202.jpg b/src/frames/202.jpg
new file mode 100644
index 0000000..afb92fd
Binary files /dev/null and b/src/frames/202.jpg differ
diff --git a/src/frames/203.jpg b/src/frames/203.jpg
new file mode 100644
index 0000000..cd8be7e
Binary files /dev/null and b/src/frames/203.jpg differ
diff --git a/src/frames/204.jpg b/src/frames/204.jpg
new file mode 100644
index 0000000..6173ed2
Binary files /dev/null and b/src/frames/204.jpg differ
diff --git a/src/frames/205.jpg b/src/frames/205.jpg
new file mode 100644
index 0000000..654f452
Binary files /dev/null and b/src/frames/205.jpg differ
diff --git a/src/frames/206.jpg b/src/frames/206.jpg
new file mode 100644
index 0000000..f63322e
Binary files /dev/null and b/src/frames/206.jpg differ
diff --git a/src/frames/207.jpg b/src/frames/207.jpg
new file mode 100644
index 0000000..0aca755
Binary files /dev/null and b/src/frames/207.jpg differ
diff --git a/src/frames/208.jpg b/src/frames/208.jpg
new file mode 100644
index 0000000..9200b87
Binary files /dev/null and b/src/frames/208.jpg differ
diff --git a/src/frames/209.jpg b/src/frames/209.jpg
new file mode 100644
index 0000000..95bd46c
Binary files /dev/null and b/src/frames/209.jpg differ
diff --git a/src/frames/21.jpg b/src/frames/21.jpg
new file mode 100644
index 0000000..d861bf3
Binary files /dev/null and b/src/frames/21.jpg differ
diff --git a/src/frames/210.jpg b/src/frames/210.jpg
new file mode 100644
index 0000000..095b8dc
Binary files /dev/null and b/src/frames/210.jpg differ
diff --git a/src/frames/211.jpg b/src/frames/211.jpg
new file mode 100644
index 0000000..b6f3d93
Binary files /dev/null and b/src/frames/211.jpg differ
diff --git a/src/frames/212.jpg b/src/frames/212.jpg
new file mode 100644
index 0000000..869d7f8
Binary files /dev/null and b/src/frames/212.jpg differ
diff --git a/src/frames/213.jpg b/src/frames/213.jpg
new file mode 100644
index 0000000..3f236a0
Binary files /dev/null and b/src/frames/213.jpg differ
diff --git a/src/frames/214.jpg b/src/frames/214.jpg
new file mode 100644
index 0000000..a5bc399
Binary files /dev/null and b/src/frames/214.jpg differ
diff --git a/src/frames/215.jpg b/src/frames/215.jpg
new file mode 100644
index 0000000..6a31a5a
Binary files /dev/null and b/src/frames/215.jpg differ
diff --git a/src/frames/216.jpg b/src/frames/216.jpg
new file mode 100644
index 0000000..86b0c89
Binary files /dev/null and b/src/frames/216.jpg differ
diff --git a/src/frames/217.jpg b/src/frames/217.jpg
new file mode 100644
index 0000000..f45771f
Binary files /dev/null and b/src/frames/217.jpg differ
diff --git a/src/frames/218.jpg b/src/frames/218.jpg
new file mode 100644
index 0000000..d6f8316
Binary files /dev/null and b/src/frames/218.jpg differ
diff --git a/src/frames/219.jpg b/src/frames/219.jpg
new file mode 100644
index 0000000..d496218
Binary files /dev/null and b/src/frames/219.jpg differ
diff --git a/src/frames/22.jpg b/src/frames/22.jpg
new file mode 100644
index 0000000..23321ef
Binary files /dev/null and b/src/frames/22.jpg differ
diff --git a/src/frames/220.jpg b/src/frames/220.jpg
new file mode 100644
index 0000000..96740a7
Binary files /dev/null and b/src/frames/220.jpg differ
diff --git a/src/frames/221.jpg b/src/frames/221.jpg
new file mode 100644
index 0000000..98fcdc5
Binary files /dev/null and b/src/frames/221.jpg differ
diff --git a/src/frames/222.jpg b/src/frames/222.jpg
new file mode 100644
index 0000000..cfc3d83
Binary files /dev/null and b/src/frames/222.jpg differ
diff --git a/src/frames/223.jpg b/src/frames/223.jpg
new file mode 100644
index 0000000..2abbd41
Binary files /dev/null and b/src/frames/223.jpg differ
diff --git a/src/frames/224.jpg b/src/frames/224.jpg
new file mode 100644
index 0000000..e0dcc96
Binary files /dev/null and b/src/frames/224.jpg differ
diff --git a/src/frames/225.jpg b/src/frames/225.jpg
new file mode 100644
index 0000000..d5624e5
Binary files /dev/null and b/src/frames/225.jpg differ
diff --git a/src/frames/226.jpg b/src/frames/226.jpg
new file mode 100644
index 0000000..987b771
Binary files /dev/null and b/src/frames/226.jpg differ
diff --git a/src/frames/227.jpg b/src/frames/227.jpg
new file mode 100644
index 0000000..65c1e3d
Binary files /dev/null and b/src/frames/227.jpg differ
diff --git a/src/frames/228.jpg b/src/frames/228.jpg
new file mode 100644
index 0000000..ddd2721
Binary files /dev/null and b/src/frames/228.jpg differ
diff --git a/src/frames/229.jpg b/src/frames/229.jpg
new file mode 100644
index 0000000..83def5d
Binary files /dev/null and b/src/frames/229.jpg differ
diff --git a/src/frames/23.jpg b/src/frames/23.jpg
new file mode 100644
index 0000000..ef38f9e
Binary files /dev/null and b/src/frames/23.jpg differ
diff --git a/src/frames/230.jpg b/src/frames/230.jpg
new file mode 100644
index 0000000..f42e16d
Binary files /dev/null and b/src/frames/230.jpg differ
diff --git a/src/frames/231.jpg b/src/frames/231.jpg
new file mode 100644
index 0000000..48e11bd
Binary files /dev/null and b/src/frames/231.jpg differ
diff --git a/src/frames/232.jpg b/src/frames/232.jpg
new file mode 100644
index 0000000..83e7ad0
Binary files /dev/null and b/src/frames/232.jpg differ
diff --git a/src/frames/233.jpg b/src/frames/233.jpg
new file mode 100644
index 0000000..2e1b1af
Binary files /dev/null and b/src/frames/233.jpg differ
diff --git a/src/frames/234.jpg b/src/frames/234.jpg
new file mode 100644
index 0000000..edfba4c
Binary files /dev/null and b/src/frames/234.jpg differ
diff --git a/src/frames/235.jpg b/src/frames/235.jpg
new file mode 100644
index 0000000..42147dd
Binary files /dev/null and b/src/frames/235.jpg differ
diff --git a/src/frames/236.jpg b/src/frames/236.jpg
new file mode 100644
index 0000000..d1835d9
Binary files /dev/null and b/src/frames/236.jpg differ
diff --git a/src/frames/237.jpg b/src/frames/237.jpg
new file mode 100644
index 0000000..0f5378b
Binary files /dev/null and b/src/frames/237.jpg differ
diff --git a/src/frames/238.jpg b/src/frames/238.jpg
new file mode 100644
index 0000000..5c84fc2
Binary files /dev/null and b/src/frames/238.jpg differ
diff --git a/src/frames/239.jpg b/src/frames/239.jpg
new file mode 100644
index 0000000..a61b5c9
Binary files /dev/null and b/src/frames/239.jpg differ
diff --git a/src/frames/24.jpg b/src/frames/24.jpg
new file mode 100644
index 0000000..62e438d
Binary files /dev/null and b/src/frames/24.jpg differ
diff --git a/src/frames/240.jpg b/src/frames/240.jpg
new file mode 100644
index 0000000..b716922
Binary files /dev/null and b/src/frames/240.jpg differ
diff --git a/src/frames/241.jpg b/src/frames/241.jpg
new file mode 100644
index 0000000..4f2eebe
Binary files /dev/null and b/src/frames/241.jpg differ
diff --git a/src/frames/242.jpg b/src/frames/242.jpg
new file mode 100644
index 0000000..22172cd
Binary files /dev/null and b/src/frames/242.jpg differ
diff --git a/src/frames/243.jpg b/src/frames/243.jpg
new file mode 100644
index 0000000..f45bcaa
Binary files /dev/null and b/src/frames/243.jpg differ
diff --git a/src/frames/244.jpg b/src/frames/244.jpg
new file mode 100644
index 0000000..e51228f
Binary files /dev/null and b/src/frames/244.jpg differ
diff --git a/src/frames/245.jpg b/src/frames/245.jpg
new file mode 100644
index 0000000..2ccb9a6
Binary files /dev/null and b/src/frames/245.jpg differ
diff --git a/src/frames/246.jpg b/src/frames/246.jpg
new file mode 100644
index 0000000..617375e
Binary files /dev/null and b/src/frames/246.jpg differ
diff --git a/src/frames/247.jpg b/src/frames/247.jpg
new file mode 100644
index 0000000..5464409
Binary files /dev/null and b/src/frames/247.jpg differ
diff --git a/src/frames/248.jpg b/src/frames/248.jpg
new file mode 100644
index 0000000..74718f3
Binary files /dev/null and b/src/frames/248.jpg differ
diff --git a/src/frames/249.jpg b/src/frames/249.jpg
new file mode 100644
index 0000000..f12d948
Binary files /dev/null and b/src/frames/249.jpg differ
diff --git a/src/frames/25.jpg b/src/frames/25.jpg
new file mode 100644
index 0000000..079fb3c
Binary files /dev/null and b/src/frames/25.jpg differ
diff --git a/src/frames/250.jpg b/src/frames/250.jpg
new file mode 100644
index 0000000..90729b6
Binary files /dev/null and b/src/frames/250.jpg differ
diff --git a/src/frames/251.jpg b/src/frames/251.jpg
new file mode 100644
index 0000000..4a12c2a
Binary files /dev/null and b/src/frames/251.jpg differ
diff --git a/src/frames/252.jpg b/src/frames/252.jpg
new file mode 100644
index 0000000..52612fd
Binary files /dev/null and b/src/frames/252.jpg differ
diff --git a/src/frames/253.jpg b/src/frames/253.jpg
new file mode 100644
index 0000000..5f6bd0c
Binary files /dev/null and b/src/frames/253.jpg differ
diff --git a/src/frames/254.jpg b/src/frames/254.jpg
new file mode 100644
index 0000000..de27d96
Binary files /dev/null and b/src/frames/254.jpg differ
diff --git a/src/frames/255.jpg b/src/frames/255.jpg
new file mode 100644
index 0000000..41d74ac
Binary files /dev/null and b/src/frames/255.jpg differ
diff --git a/src/frames/256.jpg b/src/frames/256.jpg
new file mode 100644
index 0000000..c6f6c42
Binary files /dev/null and b/src/frames/256.jpg differ
diff --git a/src/frames/257.jpg b/src/frames/257.jpg
new file mode 100644
index 0000000..446b15e
Binary files /dev/null and b/src/frames/257.jpg differ
diff --git a/src/frames/258.jpg b/src/frames/258.jpg
new file mode 100644
index 0000000..84d0118
Binary files /dev/null and b/src/frames/258.jpg differ
diff --git a/src/frames/259.jpg b/src/frames/259.jpg
new file mode 100644
index 0000000..a9ea5b6
Binary files /dev/null and b/src/frames/259.jpg differ
diff --git a/src/frames/26.jpg b/src/frames/26.jpg
new file mode 100644
index 0000000..32e87f2
Binary files /dev/null and b/src/frames/26.jpg differ
diff --git a/src/frames/260.jpg b/src/frames/260.jpg
new file mode 100644
index 0000000..ad745e8
Binary files /dev/null and b/src/frames/260.jpg differ
diff --git a/src/frames/261.jpg b/src/frames/261.jpg
new file mode 100644
index 0000000..c8f5331
Binary files /dev/null and b/src/frames/261.jpg differ
diff --git a/src/frames/262.jpg b/src/frames/262.jpg
new file mode 100644
index 0000000..1b8675c
Binary files /dev/null and b/src/frames/262.jpg differ
diff --git a/src/frames/263.jpg b/src/frames/263.jpg
new file mode 100644
index 0000000..da4e347
Binary files /dev/null and b/src/frames/263.jpg differ
diff --git a/src/frames/264.jpg b/src/frames/264.jpg
new file mode 100644
index 0000000..03772e2
Binary files /dev/null and b/src/frames/264.jpg differ
diff --git a/src/frames/265.jpg b/src/frames/265.jpg
new file mode 100644
index 0000000..bc3c38a
Binary files /dev/null and b/src/frames/265.jpg differ
diff --git a/src/frames/266.jpg b/src/frames/266.jpg
new file mode 100644
index 0000000..c56ccd7
Binary files /dev/null and b/src/frames/266.jpg differ
diff --git a/src/frames/267.jpg b/src/frames/267.jpg
new file mode 100644
index 0000000..ec1b911
Binary files /dev/null and b/src/frames/267.jpg differ
diff --git a/src/frames/268.jpg b/src/frames/268.jpg
new file mode 100644
index 0000000..58916b2
Binary files /dev/null and b/src/frames/268.jpg differ
diff --git a/src/frames/269.jpg b/src/frames/269.jpg
new file mode 100644
index 0000000..d14a582
Binary files /dev/null and b/src/frames/269.jpg differ
diff --git a/src/frames/27.jpg b/src/frames/27.jpg
new file mode 100644
index 0000000..2dacc06
Binary files /dev/null and b/src/frames/27.jpg differ
diff --git a/src/frames/270.jpg b/src/frames/270.jpg
new file mode 100644
index 0000000..1241819
Binary files /dev/null and b/src/frames/270.jpg differ
diff --git a/src/frames/271.jpg b/src/frames/271.jpg
new file mode 100644
index 0000000..fa1b874
Binary files /dev/null and b/src/frames/271.jpg differ
diff --git a/src/frames/272.jpg b/src/frames/272.jpg
new file mode 100644
index 0000000..34a3fc3
Binary files /dev/null and b/src/frames/272.jpg differ
diff --git a/src/frames/273.jpg b/src/frames/273.jpg
new file mode 100644
index 0000000..96f104a
Binary files /dev/null and b/src/frames/273.jpg differ
diff --git a/src/frames/274.jpg b/src/frames/274.jpg
new file mode 100644
index 0000000..68cecc9
Binary files /dev/null and b/src/frames/274.jpg differ
diff --git a/src/frames/275.jpg b/src/frames/275.jpg
new file mode 100644
index 0000000..203515a
Binary files /dev/null and b/src/frames/275.jpg differ
diff --git a/src/frames/276.jpg b/src/frames/276.jpg
new file mode 100644
index 0000000..ab03d0b
Binary files /dev/null and b/src/frames/276.jpg differ
diff --git a/src/frames/277.jpg b/src/frames/277.jpg
new file mode 100644
index 0000000..be19fdc
Binary files /dev/null and b/src/frames/277.jpg differ
diff --git a/src/frames/278.jpg b/src/frames/278.jpg
new file mode 100644
index 0000000..fbabb1f
Binary files /dev/null and b/src/frames/278.jpg differ
diff --git a/src/frames/279.jpg b/src/frames/279.jpg
new file mode 100644
index 0000000..08085cb
Binary files /dev/null and b/src/frames/279.jpg differ
diff --git a/src/frames/28.jpg b/src/frames/28.jpg
new file mode 100644
index 0000000..7e2513d
Binary files /dev/null and b/src/frames/28.jpg differ
diff --git a/src/frames/280.jpg b/src/frames/280.jpg
new file mode 100644
index 0000000..5af9afd
Binary files /dev/null and b/src/frames/280.jpg differ
diff --git a/src/frames/29.jpg b/src/frames/29.jpg
new file mode 100644
index 0000000..bcca547
Binary files /dev/null and b/src/frames/29.jpg differ
diff --git a/src/frames/3.jpg b/src/frames/3.jpg
new file mode 100644
index 0000000..75b8ea5
Binary files /dev/null and b/src/frames/3.jpg differ
diff --git a/src/frames/30.jpg b/src/frames/30.jpg
new file mode 100644
index 0000000..d0254bb
Binary files /dev/null and b/src/frames/30.jpg differ
diff --git a/src/frames/31.jpg b/src/frames/31.jpg
new file mode 100644
index 0000000..336b23b
Binary files /dev/null and b/src/frames/31.jpg differ
diff --git a/src/frames/32.jpg b/src/frames/32.jpg
new file mode 100644
index 0000000..7f7a944
Binary files /dev/null and b/src/frames/32.jpg differ
diff --git a/src/frames/33.jpg b/src/frames/33.jpg
new file mode 100644
index 0000000..c748e6f
Binary files /dev/null and b/src/frames/33.jpg differ
diff --git a/src/frames/34.jpg b/src/frames/34.jpg
new file mode 100644
index 0000000..250e6a8
Binary files /dev/null and b/src/frames/34.jpg differ
diff --git a/src/frames/35.jpg b/src/frames/35.jpg
new file mode 100644
index 0000000..7111d83
Binary files /dev/null and b/src/frames/35.jpg differ
diff --git a/src/frames/36.jpg b/src/frames/36.jpg
new file mode 100644
index 0000000..5c76069
Binary files /dev/null and b/src/frames/36.jpg differ
diff --git a/src/frames/37.jpg b/src/frames/37.jpg
new file mode 100644
index 0000000..05227a6
Binary files /dev/null and b/src/frames/37.jpg differ
diff --git a/src/frames/38.jpg b/src/frames/38.jpg
new file mode 100644
index 0000000..b0e00a1
Binary files /dev/null and b/src/frames/38.jpg differ
diff --git a/src/frames/39.jpg b/src/frames/39.jpg
new file mode 100644
index 0000000..de65f29
Binary files /dev/null and b/src/frames/39.jpg differ
diff --git a/src/frames/4.jpg b/src/frames/4.jpg
new file mode 100644
index 0000000..27dc83f
Binary files /dev/null and b/src/frames/4.jpg differ
diff --git a/src/frames/40.jpg b/src/frames/40.jpg
new file mode 100644
index 0000000..efcf132
Binary files /dev/null and b/src/frames/40.jpg differ
diff --git a/src/frames/41.jpg b/src/frames/41.jpg
new file mode 100644
index 0000000..221eff3
Binary files /dev/null and b/src/frames/41.jpg differ
diff --git a/src/frames/42.jpg b/src/frames/42.jpg
new file mode 100644
index 0000000..9fc7f82
Binary files /dev/null and b/src/frames/42.jpg differ
diff --git a/src/frames/43.jpg b/src/frames/43.jpg
new file mode 100644
index 0000000..16010e4
Binary files /dev/null and b/src/frames/43.jpg differ
diff --git a/src/frames/44.jpg b/src/frames/44.jpg
new file mode 100644
index 0000000..1d1938f
Binary files /dev/null and b/src/frames/44.jpg differ
diff --git a/src/frames/45.jpg b/src/frames/45.jpg
new file mode 100644
index 0000000..f244976
Binary files /dev/null and b/src/frames/45.jpg differ
diff --git a/src/frames/46.jpg b/src/frames/46.jpg
new file mode 100644
index 0000000..0150f9d
Binary files /dev/null and b/src/frames/46.jpg differ
diff --git a/src/frames/47.jpg b/src/frames/47.jpg
new file mode 100644
index 0000000..1f606fb
Binary files /dev/null and b/src/frames/47.jpg differ
diff --git a/src/frames/48.jpg b/src/frames/48.jpg
new file mode 100644
index 0000000..8978c7b
Binary files /dev/null and b/src/frames/48.jpg differ
diff --git a/src/frames/49.jpg b/src/frames/49.jpg
new file mode 100644
index 0000000..2862032
Binary files /dev/null and b/src/frames/49.jpg differ
diff --git a/src/frames/5.jpg b/src/frames/5.jpg
new file mode 100644
index 0000000..4b76dfa
Binary files /dev/null and b/src/frames/5.jpg differ
diff --git a/src/frames/50.jpg b/src/frames/50.jpg
new file mode 100644
index 0000000..ef478f7
Binary files /dev/null and b/src/frames/50.jpg differ
diff --git a/src/frames/51.jpg b/src/frames/51.jpg
new file mode 100644
index 0000000..09d577b
Binary files /dev/null and b/src/frames/51.jpg differ
diff --git a/src/frames/52.jpg b/src/frames/52.jpg
new file mode 100644
index 0000000..92bd1f1
Binary files /dev/null and b/src/frames/52.jpg differ
diff --git a/src/frames/53.jpg b/src/frames/53.jpg
new file mode 100644
index 0000000..9ddc377
Binary files /dev/null and b/src/frames/53.jpg differ
diff --git a/src/frames/54.jpg b/src/frames/54.jpg
new file mode 100644
index 0000000..43c2cdc
Binary files /dev/null and b/src/frames/54.jpg differ
diff --git a/src/frames/55.jpg b/src/frames/55.jpg
new file mode 100644
index 0000000..17a27e6
Binary files /dev/null and b/src/frames/55.jpg differ
diff --git a/src/frames/56.jpg b/src/frames/56.jpg
new file mode 100644
index 0000000..4a3d449
Binary files /dev/null and b/src/frames/56.jpg differ
diff --git a/src/frames/57.jpg b/src/frames/57.jpg
new file mode 100644
index 0000000..83c9fe0
Binary files /dev/null and b/src/frames/57.jpg differ
diff --git a/src/frames/58.jpg b/src/frames/58.jpg
new file mode 100644
index 0000000..e56ac1e
Binary files /dev/null and b/src/frames/58.jpg differ
diff --git a/src/frames/59.jpg b/src/frames/59.jpg
new file mode 100644
index 0000000..3e08e25
Binary files /dev/null and b/src/frames/59.jpg differ
diff --git a/src/frames/6.jpg b/src/frames/6.jpg
new file mode 100644
index 0000000..537909c
Binary files /dev/null and b/src/frames/6.jpg differ
diff --git a/src/frames/60.jpg b/src/frames/60.jpg
new file mode 100644
index 0000000..d602159
Binary files /dev/null and b/src/frames/60.jpg differ
diff --git a/src/frames/61.jpg b/src/frames/61.jpg
new file mode 100644
index 0000000..6c58efd
Binary files /dev/null and b/src/frames/61.jpg differ
diff --git a/src/frames/62.jpg b/src/frames/62.jpg
new file mode 100644
index 0000000..9615f68
Binary files /dev/null and b/src/frames/62.jpg differ
diff --git a/src/frames/63.jpg b/src/frames/63.jpg
new file mode 100644
index 0000000..fcf4eb7
Binary files /dev/null and b/src/frames/63.jpg differ
diff --git a/src/frames/64.jpg b/src/frames/64.jpg
new file mode 100644
index 0000000..5121b2b
Binary files /dev/null and b/src/frames/64.jpg differ
diff --git a/src/frames/65.jpg b/src/frames/65.jpg
new file mode 100644
index 0000000..6cb5280
Binary files /dev/null and b/src/frames/65.jpg differ
diff --git a/src/frames/66.jpg b/src/frames/66.jpg
new file mode 100644
index 0000000..ac318dc
Binary files /dev/null and b/src/frames/66.jpg differ
diff --git a/src/frames/67.jpg b/src/frames/67.jpg
new file mode 100644
index 0000000..8e87d76
Binary files /dev/null and b/src/frames/67.jpg differ
diff --git a/src/frames/68.jpg b/src/frames/68.jpg
new file mode 100644
index 0000000..7b4b9b9
Binary files /dev/null and b/src/frames/68.jpg differ
diff --git a/src/frames/69.jpg b/src/frames/69.jpg
new file mode 100644
index 0000000..f8d1c95
Binary files /dev/null and b/src/frames/69.jpg differ
diff --git a/src/frames/7.jpg b/src/frames/7.jpg
new file mode 100644
index 0000000..a8f6b9e
Binary files /dev/null and b/src/frames/7.jpg differ
diff --git a/src/frames/70.jpg b/src/frames/70.jpg
new file mode 100644
index 0000000..ea24b4f
Binary files /dev/null and b/src/frames/70.jpg differ
diff --git a/src/frames/71.jpg b/src/frames/71.jpg
new file mode 100644
index 0000000..f731d85
Binary files /dev/null and b/src/frames/71.jpg differ
diff --git a/src/frames/72.jpg b/src/frames/72.jpg
new file mode 100644
index 0000000..1ab2f49
Binary files /dev/null and b/src/frames/72.jpg differ
diff --git a/src/frames/73.jpg b/src/frames/73.jpg
new file mode 100644
index 0000000..aed5885
Binary files /dev/null and b/src/frames/73.jpg differ
diff --git a/src/frames/74.jpg b/src/frames/74.jpg
new file mode 100644
index 0000000..d995115
Binary files /dev/null and b/src/frames/74.jpg differ
diff --git a/src/frames/75.jpg b/src/frames/75.jpg
new file mode 100644
index 0000000..8962a87
Binary files /dev/null and b/src/frames/75.jpg differ
diff --git a/src/frames/76.jpg b/src/frames/76.jpg
new file mode 100644
index 0000000..f130f61
Binary files /dev/null and b/src/frames/76.jpg differ
diff --git a/src/frames/77.jpg b/src/frames/77.jpg
new file mode 100644
index 0000000..ad74b4e
Binary files /dev/null and b/src/frames/77.jpg differ
diff --git a/src/frames/78.jpg b/src/frames/78.jpg
new file mode 100644
index 0000000..6b29a57
Binary files /dev/null and b/src/frames/78.jpg differ
diff --git a/src/frames/79.jpg b/src/frames/79.jpg
new file mode 100644
index 0000000..fe4cca3
Binary files /dev/null and b/src/frames/79.jpg differ
diff --git a/src/frames/8.jpg b/src/frames/8.jpg
new file mode 100644
index 0000000..7771c6b
Binary files /dev/null and b/src/frames/8.jpg differ
diff --git a/src/frames/80.jpg b/src/frames/80.jpg
new file mode 100644
index 0000000..2bc5d62
Binary files /dev/null and b/src/frames/80.jpg differ
diff --git a/src/frames/81.jpg b/src/frames/81.jpg
new file mode 100644
index 0000000..00b8df5
Binary files /dev/null and b/src/frames/81.jpg differ
diff --git a/src/frames/82.jpg b/src/frames/82.jpg
new file mode 100644
index 0000000..2709dda
Binary files /dev/null and b/src/frames/82.jpg differ
diff --git a/src/frames/83.jpg b/src/frames/83.jpg
new file mode 100644
index 0000000..ebe4606
Binary files /dev/null and b/src/frames/83.jpg differ
diff --git a/src/frames/84.jpg b/src/frames/84.jpg
new file mode 100644
index 0000000..049a552
Binary files /dev/null and b/src/frames/84.jpg differ
diff --git a/src/frames/85.jpg b/src/frames/85.jpg
new file mode 100644
index 0000000..395c8f4
Binary files /dev/null and b/src/frames/85.jpg differ
diff --git a/src/frames/86.jpg b/src/frames/86.jpg
new file mode 100644
index 0000000..3b1f187
Binary files /dev/null and b/src/frames/86.jpg differ
diff --git a/src/frames/87.jpg b/src/frames/87.jpg
new file mode 100644
index 0000000..70408d7
Binary files /dev/null and b/src/frames/87.jpg differ
diff --git a/src/frames/88.jpg b/src/frames/88.jpg
new file mode 100644
index 0000000..c8ce7c2
Binary files /dev/null and b/src/frames/88.jpg differ
diff --git a/src/frames/89.jpg b/src/frames/89.jpg
new file mode 100644
index 0000000..ed90eb2
Binary files /dev/null and b/src/frames/89.jpg differ
diff --git a/src/frames/9.jpg b/src/frames/9.jpg
new file mode 100644
index 0000000..14d45bd
Binary files /dev/null and b/src/frames/9.jpg differ
diff --git a/src/frames/90.jpg b/src/frames/90.jpg
new file mode 100644
index 0000000..2cd6175
Binary files /dev/null and b/src/frames/90.jpg differ
diff --git a/src/frames/91.jpg b/src/frames/91.jpg
new file mode 100644
index 0000000..08ed64d
Binary files /dev/null and b/src/frames/91.jpg differ
diff --git a/src/frames/92.jpg b/src/frames/92.jpg
new file mode 100644
index 0000000..9df4a6f
Binary files /dev/null and b/src/frames/92.jpg differ
diff --git a/src/frames/93.jpg b/src/frames/93.jpg
new file mode 100644
index 0000000..a345f04
Binary files /dev/null and b/src/frames/93.jpg differ
diff --git a/src/frames/94.jpg b/src/frames/94.jpg
new file mode 100644
index 0000000..414fcfe
Binary files /dev/null and b/src/frames/94.jpg differ
diff --git a/src/frames/95.jpg b/src/frames/95.jpg
new file mode 100644
index 0000000..65f273f
Binary files /dev/null and b/src/frames/95.jpg differ
diff --git a/src/frames/96.jpg b/src/frames/96.jpg
new file mode 100644
index 0000000..77d768d
Binary files /dev/null and b/src/frames/96.jpg differ
diff --git a/src/frames/97.jpg b/src/frames/97.jpg
new file mode 100644
index 0000000..266c5ff
Binary files /dev/null and b/src/frames/97.jpg differ
diff --git a/src/frames/98.jpg b/src/frames/98.jpg
new file mode 100644
index 0000000..38357f8
Binary files /dev/null and b/src/frames/98.jpg differ
diff --git a/src/frames/99.jpg b/src/frames/99.jpg
new file mode 100644
index 0000000..9d6349c
Binary files /dev/null and b/src/frames/99.jpg differ
diff --git a/src/image/1.jpg b/src/image/1.jpg
new file mode 100644
index 0000000..c014e23
Binary files /dev/null and b/src/image/1.jpg differ
diff --git a/src/image/2.jpg b/src/image/2.jpg
new file mode 100644
index 0000000..bea9a75
Binary files /dev/null and b/src/image/2.jpg differ
diff --git a/src/image/result.jpg b/src/image/result.jpg
new file mode 100644
index 0000000..677a266
Binary files /dev/null and b/src/image/result.jpg differ
diff --git a/src/image/tmp_content.jpg b/src/image/tmp_content.jpg
new file mode 100644
index 0000000..155e848
Binary files /dev/null and b/src/image/tmp_content.jpg differ
diff --git a/src/image/tmp_style.jpg b/src/image/tmp_style.jpg
new file mode 100644
index 0000000..b939a93
Binary files /dev/null and b/src/image/tmp_style.jpg differ
diff --git a/src/image_trans.py b/src/image_trans.py
new file mode 100644
index 0000000..d3dfcca
--- /dev/null
+++ b/src/image_trans.py
@@ -0,0 +1,193 @@
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+import torch.optim as optim
+
+from PIL import Image
+import matplotlib.pyplot as plt
+
+import torchvision.transforms as transforms
+import torchvision.models as models
+
+import copy
+
+device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
+torch.set_default_device(device)
+imsize = 512 if torch.cuda.is_available() else 128 # use small size if no GPU
+loader = transforms.Compose([
+ transforms.Resize(imsize), # scale imported image
+ transforms.ToTensor()]) # transform it into a torch tensor
+
+
+def image_loader(image_name):
+ image = Image.open(image_name)
+ image = image.resize((512, 512))
+ image = loader(image).unsqueeze(0)
+ return image.to(device, torch.float)
+
+
+
+unloader = transforms.ToPILImage() # reconvert into PIL image
+
+
+class ContentLoss(nn.Module):
+
+ def __init__(self, target, ):
+ super(ContentLoss, self).__init__()
+ self.target = target.detach()
+
+ def forward(self, input):
+ self.loss = F.mse_loss(input, self.target)
+ return input
+
+
+def gram_matrix(input):
+ a, b, c, d = input.size() # a=batch size(=1)
+ features = input.view(a * b, c * d) # resize F_XL into \hat F_XL
+ G = torch.mm(features, features.t()) # compute the gram product
+ return G.div(a * b * c * d)
+
+
+class StyleLoss(nn.Module):
+
+ def __init__(self, target_feature):
+ super(StyleLoss, self).__init__()
+ self.target = gram_matrix(target_feature).detach()
+
+ def forward(self, input):
+ G = gram_matrix(input)
+ self.loss = F.mse_loss(G, self.target)
+ return input
+
+
+cnn = models.vgg19(pretrained=True).features.eval()
+
+cnn_normalization_mean = torch.tensor([0.485, 0.456, 0.406])
+cnn_normalization_std = torch.tensor([0.229, 0.224, 0.225])
+
+
+class Normalization(nn.Module):
+ def __init__(self, mean, std):
+ super(Normalization, self).__init__()
+ self.mean = torch.tensor(mean).view(-1, 1, 1)
+ self.std = torch.tensor(std).view(-1, 1, 1)
+
+ def forward(self, img):
+ return (img - self.mean) / self.std
+
+
+content_layers_default = ['conv_4']
+style_layers_default = ['conv_1', 'conv_2', 'conv_3', 'conv_4', 'conv_5']
+
+
+def get_style_model_and_losses(cnn, normalization_mean, normalization_std,
+ style_img, content_img,
+ content_layers=content_layers_default,
+ style_layers=style_layers_default):
+ normalization = Normalization(normalization_mean, normalization_std)
+ content_losses = []
+ style_losses = []
+ model = nn.Sequential(normalization)
+ i = 0
+ for layer in cnn.children():
+ if isinstance(layer, nn.Conv2d):
+ i += 1
+ name = 'conv_{}'.format(i)
+ elif isinstance(layer, nn.ReLU):
+ name = 'relu_{}'.format(i)
+
+ layer = nn.ReLU(inplace=False)
+ elif isinstance(layer, nn.MaxPool2d):
+ name = 'pool_{}'.format(i)
+ elif isinstance(layer, nn.BatchNorm2d):
+ name = 'bn_{}'.format(i)
+ else:
+ raise RuntimeError('Unrecognized layer: {}'.format(layer.__class__.__name__))
+
+ model.add_module(name, layer)
+
+ if name in content_layers:
+ target = model(content_img).detach()
+ content_loss = ContentLoss(target)
+ model.add_module("content_loss_{}".format(i), content_loss)
+ content_losses.append(content_loss)
+
+ if name in style_layers:
+ target_feature = model(style_img).detach()
+ style_loss = StyleLoss(target_feature)
+ model.add_module("style_loss_{}".format(i), style_loss)
+ style_losses.append(style_loss)
+
+ for i in range(len(model) - 1, -1, -1):
+ if isinstance(model[i], ContentLoss) or isinstance(model[i], StyleLoss):
+ break
+
+ model = model[:(i + 1)]
+
+ return model, style_losses, content_losses
+
+
+def get_input_optimizer(input_img):
+ optimizer = optim.LBFGS([input_img])
+ return optimizer
+
+
+def run_style_transfer(cnn, normalization_mean, normalization_std,
+ content_img, style_img, input_img, num_steps=300,
+ style_weight=1000000, content_weight=1):
+ model, style_losses, content_losses = get_style_model_and_losses(cnn,
+ normalization_mean, normalization_std, style_img,
+ content_img)
+ input_img.requires_grad_(True)
+ model.eval()
+ model.requires_grad_(False)
+ optimizer = get_input_optimizer(input_img)
+ run = [0]
+ while run[0] <= num_steps:
+
+ def closure():
+ # correct the values of updated input image
+ with torch.no_grad():
+ input_img.clamp_(0, 1)
+
+ optimizer.zero_grad()
+ model(input_img)
+ style_score = 0
+ content_score = 0
+
+ for sl in style_losses:
+ style_score += sl.loss
+ for cl in content_losses:
+ content_score += cl.loss
+
+ style_score *= style_weight
+ content_score *= content_weight
+
+ loss = style_score + content_score
+ loss.backward()
+
+ run[0] += 1
+ if run[0] % 50 == 0:
+ print('Style Loss : {:4f} Content Loss: {:4f}'.format(
+ style_score.item(), content_score.item()))
+ print()
+ return style_score + content_score
+
+ optimizer.step(closure)
+
+ with torch.no_grad():
+ input_img.clamp_(0, 1)
+
+ return input_img
+
+
+def run():
+ style_img = image_loader("image/tmp_style.jpg")
+ content_img = image_loader("image/tmp_content.jpg")
+ input_img = content_img.clone()
+ output = run_style_transfer(cnn, cnn_normalization_mean, cnn_normalization_std,
+ content_img, style_img, input_img,100)
+ output = output.cpu().clone()
+ output = output.squeeze(0)
+ pic = unloader(output)
+ pic.save('image/result.jpg')
diff --git a/src/main.py b/src/main.py
new file mode 100644
index 0000000..9800253
--- /dev/null
+++ b/src/main.py
@@ -0,0 +1,548 @@
+# -*- coding: utf-8 -*-
+import sys
+from functools import partial
+
+import cv2
+import numpy as np
+from PyQt5 import QtWidgets, QtGui, QtCore
+from PyQt5.QtCore import Qt
+from PyQt5.QtGui import QImage
+from PyQt5.QtWidgets import QFileDialog
+
+import image_trans as tr
+import video, correct, change_color
+from UI import setsize, demo, SelectStyle, ChangeColor
+from UI.BaseAdjustDialog import Ui_baseAdjustDialog
+
+
+# qt图片转化为opencv
+def qtpixmap_to_cvimg(qtpixmap):
+ qimg = qtpixmap.toImage()
+ temp_shape = (qimg.height(), qimg.bytesPerLine() * 8 // qimg.depth())
+ temp_shape += (4,)
+ ptr = qimg.bits()
+ ptr.setsize(qimg.byteCount())
+ result = np.array(ptr, dtype=np.uint8).reshape(temp_shape)
+ result = result[..., :3]
+ return result
+
+
+# opencv图片转化为qt
+def cvimg_to_qtimg(cvimg):
+ rows, columns, channels = cvimg.shape
+ bytesPerLine = channels * columns
+ pix = QImage(cvimg.data.tobytes(), columns, rows, bytesPerLine, QImage.Format_BGR888)
+ return QtGui.QPixmap(pix)
+
+
+class MyWindow(QtWidgets.QMainWindow, demo.Ui_MainWindow):
+ def __init__(self):
+ super(MyWindow, self).__init__()
+ self.setupUi(self)
+ # 子窗口
+ self.ChildDialog = ChildWin()
+ self.baseAdjustDialog = BaseAdjustDialog()
+ self.selectStyleDialog = SelectStyleDialog()
+ self.changeColorDialog = ChangeColorDialog()
+
+ # 待处理图片
+ self.Image = None
+ # 处理后图片
+ self.Dest_Image = None
+ self.Tmp_Image = None
+
+ # 定义触发信号
+ self.actionopen.triggered.connect(self.openImage)
+ self.actionsave.triggered.connect(self.saveImage)
+ self.actiontansfer.triggered.connect(self.transferImage)
+ self.actionvideo.triggered.connect(self.openTransferVideo)
+ self.actionCorrect.triggered.connect(self.correct)
+ self.actioncorrect_2.triggered.connect(self.correct2)
+ self.actionChangeColor.triggered.connect(self.openChangeColor)
+ self.pushButton.clicked.connect(self.onClicked)
+ self.pushButton_2.clicked.connect(self.openBaseAdjustDialog)
+ self.pushButton_3.clicked.connect(self.toGray)
+ self.pushButton_4.clicked.connect(self.toBinary)
+ self.pushButton_5.clicked.connect(self.invert)
+ self.pushButton_6.clicked.connect(self.emboss)
+ self.pushButton_7.clicked.connect(self.canny)
+ self.pushButton_8.clicked.connect(self.blur)
+ self.pushButton_9.clicked.connect(self.sharpen)
+ self.pushButton_10.clicked.connect(self.rotate)
+ self.pushButton_11.clicked.connect(self.refresh)
+
+ # 工具函数
+ def saveAndShow(self, img):
+ if len(img.shape) == 2:
+ img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
+ cv2.imwrite("result.jpg", img)
+ self.Dest_Image = img
+ tmp = cvimg_to_qtimg(img)
+ tmp = QtGui.QPixmap(tmp).scaled(self.src_image.width(), self.src_image.height(), Qt.KeepAspectRatio,
+ Qt.SmoothTransformation)
+ self.dest_image.setPixmap(tmp)
+
+ # 定义槽函数
+ # 打开图片
+ def openImage(self):
+ self.src_image.setStyleSheet("")
+ img_name, img_type = QFileDialog.getOpenFileName(self,
+ "打开图片",
+ "",
+ " *.jpg *.png;;*.jpeg;;*.bmp;;All Files (*)")
+ if img_type:
+ # 利用qlabel(src_image)显示图片
+ pix = QtGui.QPixmap(img_name).scaled(self.src_image.width(), self.src_image.height(), Qt.KeepAspectRatio,
+ Qt.SmoothTransformation)
+ pix_tmp = QtGui.QPixmap(img_name)
+ self.Image = qtpixmap_to_cvimg(pix_tmp)
+ self.Dest_Image = self.Image
+ self.src_image.setPixmap(pix)
+ self.dest_image.setPixmap(pix)
+ return
+
+ # 保存图片
+ def saveImage(self):
+ if self.Dest_Image is not None:
+ img_name, img_type = QFileDialog.getSaveFileName(self, "保存图片", "", "Images (*.png *.xpm *.jpg)")
+ if img_name:
+ cv2.imwrite(img_name, self.Dest_Image)
+ return
+
+ # 风格迁移
+ def transferImage(self):
+ if self.Dest_Image is None:
+ return
+ # 打开风格图片
+ img_name, img_type = QFileDialog.getOpenFileName(self,
+ "选择风格图片",
+ "",
+ " *.jpg;;*.png;;*.jpeg;;*.bmp;;All Files (*)")
+ if img_type:
+ img = cv2.imread(img_name)
+ # 保存图片,然后调用程序
+ cv2.imwrite("image/tmp_style.jpg", img)
+ if self.Dest_Image is not None:
+ cv2.imwrite("image/tmp_content.jpg", self.Dest_Image)
+ tr.run()
+ print("风格迁移完成!")
+ self.Dest_Image = cv2.imread("image/result.jpg")
+ tmp = QtGui.QPixmap("image/result.jpg").scaled(self.src_image.width(), self.src_image.height(),
+ Qt.KeepAspectRatio,
+ Qt.SmoothTransformation)
+ self.dest_image.setPixmap(tmp)
+ return
+
+ # 打开视频风格迁移窗口
+ def openTransferVideo(self):
+ self.selectStyleDialog.signal.connect(self.transferVideo)
+ self.selectStyleDialog.label.setPixmap(QtGui.QPixmap("image/1.jpg").scaled(256, 256,
+ Qt.KeepAspectRatio,
+ Qt.SmoothTransformation))
+ self.selectStyleDialog.label_2.setPixmap(QtGui.QPixmap("image/2.jpg").scaled(256, 256,
+ Qt.KeepAspectRatio,
+ Qt.SmoothTransformation))
+ self.selectStyleDialog.show()
+
+ # 视频风格迁移
+ def transferVideo(self, parameter):
+ video_name, video_type = QFileDialog.getOpenFileName(self,
+ "选择视频",
+ "",
+ " *.mp4;;*.avi;;All Files (*)")
+ if video_type:
+ print("视频正在生成。。。")
+ video.run(video_name, parameter)
+ print("视频生成完成,请在当前目录下查看!")
+ return
+
+ # 打开图像缩放窗口
+ def onClicked(self):
+ self.ChildDialog.show()
+ self.ChildDialog.signal.connect(self.getDataSetSize)
+
+ # 获得子窗口数据并调整图片大小
+ def getDataSetSize(self, parameter):
+ if self.Dest_Image is not None:
+ self.Dest_Image = cv2.resize(self.Dest_Image, (int(parameter[0]), int(parameter[1])),
+ interpolation=cv2.INTER_LINEAR)
+ img = cvimg_to_qtimg(self.Dest_Image)
+ self.dest_image.setPixmap(img)
+
+ # 打开颜色变化窗口
+ def openChangeColor(self):
+ self.changeColorDialog.dialogRejected.connect(self.openChangeColorRejected)
+ self.changeColorDialog.dialogAccepted.connect(self.openChangeColorAccepted)
+ self.changeColorDialog.signal.connect(self.changeColor)
+ self.changeColorDialog.show()
+
+ def openChangeColorAccepted(self):
+ if self.Dest_Image is not None:
+ self.saveAndShow(self.Tmp_Image)
+ self.update()
+
+ def openChangeColorRejected(self):
+ self.update()
+
+ # 颜色变化
+ def changeColor(self, parameter):
+ if self.Dest_Image is not None:
+ self.Tmp_Image = change_color.run(self.Dest_Image, parameter[0], parameter[1])
+ self.update()
+
+ # 打开图像调节窗口
+ def openBaseAdjustDialog(self):
+ self.baseAdjustDialog.dialogRejected.connect(self.baseAdjustDialogRejected)
+ self.baseAdjustDialog.dialogAccepted.connect(self.baseAdjustDialogAccepted)
+ self.baseAdjustDialog.brightSliderReleased.connect(self.adjustBright)
+ self.baseAdjustDialog.warmSliderReleased.connect(self.adjustWarm)
+ self.baseAdjustDialog.saturabilitySliderReleased.connect(self.adjustSaturation)
+ self.baseAdjustDialog.contrastSliderReleased.connect(self.adjustContrast)
+ self.baseAdjustDialog.show()
+
+ def baseAdjustDialogAccepted(self):
+ self.saveAndShow(self.Tmp_Image)
+ self.update()
+
+ def baseAdjustDialogRejected(self):
+ self.update()
+
+ # 对比度
+ # 参考:https://blog.csdn.net/zhaitianbao/article/details/120107171
+ def adjustContrast(self, percent):
+ if self.Dest_Image is None:
+ return
+ src = self.Dest_Image
+ # 计算对比度因子
+ alpha = percent / 100.0
+ alpha = max(-1.0, min(1.0, alpha))
+ # 创建一个新的图片
+ temp = src.copy()
+ row = src.shape[0]
+ col = src.shape[1]
+ thresh = 127
+ for i in range(row):
+ for j in range(col):
+ b = src[i, j, 0]
+ g = src[i, j, 1]
+ r = src[i, j, 2]
+ if alpha == 1:
+ if r > thresh:
+ temp[i, j, 2] = 255
+ else:
+ temp[i, j, 2] = 0
+ if g > thresh:
+ temp[i, j, 1] = 255
+ else:
+ temp[i, j, 1] = 0
+ if b > thresh:
+ temp[i, j, 0] = 255
+ else:
+ temp[i, j, 0] = 0
+ continue
+ elif alpha >= 0:
+ newr = int(thresh + (r - thresh) / (1 - alpha))
+ newg = int(thresh + (g - thresh) / (1 - alpha))
+ newb = int(thresh + (b - thresh) / (1 - alpha))
+ else:
+ newr = int(thresh + (r - thresh) * (1 + alpha))
+ newg = int(thresh + (g - thresh) * (1 + alpha))
+ newb = int(thresh + (b - thresh) * (1 + alpha))
+ newr = max(0, min(255, newr))
+ newg = max(0, min(255, newg))
+ newb = max(0, min(255, newb))
+ temp[i, j, 2] = newr
+ temp[i, j, 1] = newg
+ temp[i, j, 0] = newb
+ self.Tmp_Image = temp
+ self.update()
+
+ def adjustBright(self, value):
+ if self.Dest_Image is None:
+ return
+ # 亮度调整公式为:new_image = old_image + brightness_factor
+ # brightness_factor = value * 2.55
+ src = self.Dest_Image
+ src = src.astype(np.float32)
+ brightness_factor = value * 2.55
+ new_image = src + brightness_factor
+ new_image = np.clip(new_image, 0, 255).astype(np.uint8)
+ self.Tmp_Image = new_image
+ self.update()
+
+ def adjustWarm(self, value):
+ if self.Dest_Image is None:
+ return
+ # 饱和度调整公式为:new_image = (old_image - gray_image) * saturation_factor + gray_image
+ # saturation_factor = (value + 100) / 100
+ # gray_image = 0.299 * R + 0.587 * G + 0.114 * B
+ src = self.Dest_Image
+ src = src.astype(np.float32)
+ saturation_factor = (value + 100) / 100
+ gray_image = 0.299 * src[:, :, 2] + 0.587 * src[:, :, 1] + 0.114 * src[:, :, 0]
+ new_image = (src - gray_image[:, :, np.newaxis]) * saturation_factor + gray_image[:, :, np.newaxis]
+ new_image = np.clip(new_image, 0, 255).astype(np.uint8)
+ self.Tmp_Image = new_image
+ self.update()
+
+ def adjustSaturation(self, value):
+ if self.Dest_Image is None:
+ return
+ src = self.Dest_Image
+ # 饱和度调整公式为:new_image = (old_image - gray_image) * saturation_factor + gray_image
+ # saturation_factor = (value + 100) / 100
+ # gray_image = 0.299 * R + 0.587 * G + 0.114 * B
+ src = src.astype(np.float32)
+ saturation_factor = (value + 100) / 100
+ gray_image = 0.299 * src[:, :, 2] + 0.587 * src[:, :, 1] + 0.114 * src[:, :, 0]
+ new_image = (src - gray_image[:, :, np.newaxis]) * saturation_factor + gray_image[:, :, np.newaxis]
+ new_image = np.clip(new_image, 0, 255).astype(np.uint8)
+ self.Tmp_Image = new_image
+ self.update()
+
+ # 灰度化
+ def toGray(self):
+ if self.Dest_Image is None:
+ return
+ gray = cv2.cvtColor(self.Dest_Image, cv2.COLOR_BGR2GRAY)
+ self.saveAndShow(gray)
+
+ # 二值化
+ def toBinary(self):
+ if self.Dest_Image is None:
+ return
+ gray = cv2.cvtColor(self.Dest_Image, cv2.COLOR_BGR2GRAY)
+ ret, thresh1 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
+ self.saveAndShow(thresh1)
+
+ # 反相
+ def invert(self):
+ if self.Dest_Image is None:
+ return
+ image = 255 - self.Dest_Image
+ self.saveAndShow(image)
+
+ # 浮雕
+ def emboss(self):
+ if self.Dest_Image is None:
+ return
+ src = self.Dest_Image
+ kernel = np.array([[-2, -1, 0],
+ [-1, 1, 1],
+ [0, 1, 2]])
+ dst = cv2.filter2D(src, -1, kernel)
+ self.saveAndShow(dst)
+
+ # 模糊
+ def blur(self):
+ if self.Dest_Image is None:
+ return
+ src = self.Dest_Image
+ dst = cv2.GaussianBlur(src, (0, 0), sigmaX=15)
+ self.saveAndShow(dst)
+
+ # 锐化
+ def sharpen(self):
+ if self.Dest_Image is None:
+ return
+ src = self.Dest_Image
+
+ kernel = np.array([[0, -1, 0],
+ [-1, 5, -1],
+ [0, -1, 0]])
+
+ dst = cv2.filter2D(src, -1, kernel)
+
+ # blurImg = cv.GaussianBlur(src, (0, 0), 5)
+ # usm = cv.addWeighted(src, 1.5, blurImg, -0.5, 0)
+ self.saveAndShow(dst)
+
+ # 边缘检测
+ def canny(self):
+ if self.Dest_Image is None:
+ return
+ blurred = cv2.GaussianBlur(self.Dest_Image, (3, 3), 0, 0)
+ gray = cv2.cvtColor(blurred, cv2.COLOR_BGR2GRAY)
+ edges = cv2.Canny(gray, 50, 150)
+ self.saveAndShow(edges)
+
+ # 旋转
+ def rotate(self):
+ if self.Dest_Image is None:
+ return
+ image = self.Dest_Image
+ height, width = image.shape[:2]
+ center = (width / 2, height / 2)
+ rotate_matrix = cv2.getRotationMatrix2D(center=center, angle=90, scale=1)
+ rotated_image = cv2.warpAffine(src=image, M=rotate_matrix, dsize=(width, height))
+ self.saveAndShow(rotated_image)
+
+ # 刷新
+ def refresh(self):
+ if self.Dest_Image is None:
+ return
+ self.saveAndShow(self.Image)
+
+ # 证件矫正
+ def correct(self):
+ if self.Dest_Image is None:
+ return
+ img = correct.runCard(self.Dest_Image)
+ self.saveAndShow(img)
+
+ # 书页矫正
+ def correct2(self):
+ if self.Dest_Image is None:
+ return
+ img = correct.runPaper(self.Dest_Image)
+ self.saveAndShow(img)
+
+
+# 设置大小窗口
+class ChildWin(QtWidgets.QMainWindow, setsize.Ui_Dialog):
+ # 定义信号
+ _signal = QtCore.pyqtSignal(list)
+
+ def __init__(self):
+ super(ChildWin, self).__init__()
+ self.setupUi(self)
+ self.retranslateUi(self)
+ self.pushButton.clicked.connect(self.slot1)
+
+ def slot1(self):
+ width = self.lineEdit.text()
+ height = self.lineEdit_2.text()
+ # 发送信号
+ self._signal.emit([width, height])
+ self.close()
+
+ @property
+ def signal(self):
+ return self._signal
+
+
+# 选择风格窗口
+class SelectStyleDialog(QtWidgets.QMainWindow, SelectStyle.Ui_dialog):
+ # 定义信号
+ signal = QtCore.pyqtSignal(int)
+
+ def __init__(self):
+ super(SelectStyleDialog, self).__init__()
+ self.setupUi(self)
+ self.retranslateUi(self)
+ self.pushButton.clicked.connect(self.slot1)
+ self.pushButton_2.clicked.connect(self.slot2)
+
+ def slot1(self):
+ self.signal.emit(1)
+ self.close()
+
+ def slot2(self):
+ self.signal.emit(2)
+ self.close()
+
+
+# 选择颜色窗口
+class ChangeColorDialog(QtWidgets.QDialog, ChangeColor.Ui_Dialog):
+ # 定义信号
+ signal_src = 'r'
+ signal_dst = 'w'
+ signal = QtCore.pyqtSignal(list)
+ dialogRejected = QtCore.pyqtSignal()
+ dialogAccepted = QtCore.pyqtSignal()
+
+ def __init__(self):
+ super(ChangeColorDialog, self).__init__()
+ self.setupUi(self)
+ self.retranslateUi(self)
+ self.buttonBox.accepted.connect(self._dialogAccepted)
+ self.buttonBox.rejected.connect(self._dialogRejected)
+
+ def getValue(self):
+ if self.checkBox.isChecked():
+ self.signal_src = 'r'
+ elif self.checkBox_2.isChecked():
+ self.signal_src = 'b'
+ elif self.checkBox_3.isChecked():
+ self.signal_src = 'w'
+
+ if self.checkBox_4.isChecked():
+ self.signal_dst = 'r'
+ elif self.checkBox_5.isChecked():
+ self.signal_dst = 'b'
+ elif self.checkBox_6.isChecked():
+ self.signal_dst = 'w'
+ self.signal.emit([self.signal_src, self.signal_dst])
+ self.close()
+
+ def _dialogAccepted(self):
+ self.getValue()
+ self.dialogAccepted.emit()
+
+ def _dialogRejected(self):
+ self.dialogRejected.emit()
+
+
+# 图像调节窗口
+class BaseAdjustDialog(QtWidgets.QDialog, Ui_baseAdjustDialog):
+ brightSliderReleased = QtCore.pyqtSignal(object)
+ warmSliderReleased = QtCore.pyqtSignal(object)
+ saturabilitySliderReleased = QtCore.pyqtSignal(object)
+ contrastSliderReleased = QtCore.pyqtSignal(object)
+
+ dialogRejected = QtCore.pyqtSignal()
+ dialogAccepted = QtCore.pyqtSignal()
+
+ def __init__(self, *args, **kwargs):
+ super(BaseAdjustDialog, self).__init__(*args, **kwargs)
+ self.setupUi(self)
+ self.sliders = [self.brightSlider, self.saturabilitySlider, self.contrastSlider, self.warmSlider]
+ self.sliderLabels = [self.brightLabel, self.saturabilityLabel, self.contrastLabel, self.warmLabel]
+ self._establishConnections()
+
+ def _establishConnections(self):
+ self.dialogBtnBox.accepted.connect(self._dialogAccepted)
+ self.dialogBtnBox.rejected.connect(self._dialogRejected)
+ [self._buildSliderConnected(slider) for slider in self.sliders]
+ self.brightSlider.sliderReleased.connect(self._brightSliderReleased)
+ self.warmSlider.sliderReleased.connect(self._warmSliderReleased)
+ self.saturabilitySlider.sliderReleased.connect(self._saturabilitySliderReleased)
+ self.contrastSlider.sliderReleased.connect(self._contrastSliderReleased)
+
+ def _buildSliderConnected(self, slider):
+ slider.valueChanged.connect(partial(self._sliderValueChanged, slider))
+
+ def _sliderValueChanged(self, slider):
+ self.sliderLabels[self.sliders.index(slider)].setNum(slider.value())
+
+ def _brightSliderReleased(self):
+ brightValue = self.brightSlider.value()
+ self.brightLabel.setNum(brightValue)
+ self.brightSliderReleased.emit(brightValue)
+
+ def _contrastSliderReleased(self):
+ contrastValue = self.contrastSlider.value()
+ self.contrastLabel.setNum(contrastValue)
+ self.contrastSliderReleased.emit(contrastValue)
+
+ def _warmSliderReleased(self):
+ warmValue = self.warmSlider.value()
+ self.warmLabel.setNum(warmValue)
+ self.warmSliderReleased.emit(warmValue)
+
+ def _saturabilitySliderReleased(self):
+ saturationValue = self.saturabilitySlider.value()
+ self.saturabilityLabel.setNum(saturationValue)
+ self.saturabilitySliderReleased.emit(saturationValue)
+
+ def _dialogAccepted(self):
+ self.dialogAccepted.emit()
+
+ def _dialogRejected(self):
+ self.dialogRejected.emit()
+
+
+app = QtWidgets.QApplication(sys.argv)
+window = MyWindow()
+window.show()
+sys.exit(app.exec_())
diff --git a/src/main.spec b/src/main.spec
new file mode 100644
index 0000000..3901455
--- /dev/null
+++ b/src/main.spec
@@ -0,0 +1,50 @@
+# -*- mode: python ; coding: utf-8 -*-
+
+
+block_cipher = None
+
+
+a = Analysis(
+ ['main.py'],
+ pathex=[],
+ binaries=[],
+ datas=[],
+ hiddenimports=[],
+ hookspath=[],
+ hooksconfig={},
+ runtime_hooks=[],
+ excludes=[],
+ win_no_prefer_redirects=False,
+ win_private_assemblies=False,
+ cipher=block_cipher,
+ noarchive=False,
+)
+pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
+
+exe = EXE(
+ pyz,
+ a.scripts,
+ [],
+ exclude_binaries=True,
+ name='main',
+ debug=False,
+ bootloader_ignore_signals=False,
+ strip=False,
+ upx=True,
+ console=True,
+ disable_windowed_traceback=False,
+ argv_emulation=False,
+ target_arch=None,
+ codesign_identity=None,
+ entitlements_file=None,
+)
+coll = COLLECT(
+ exe,
+ a.binaries,
+ a.zipfiles,
+ a.datas,
+ strip=False,
+ upx=True,
+ upx_exclude=[],
+ name='main',
+)
diff --git a/src/original/card1.jpg b/src/original/card1.jpg
new file mode 100644
index 0000000..19d801e
Binary files /dev/null and b/src/original/card1.jpg differ
diff --git a/src/original/city.jpg b/src/original/city.jpg
new file mode 100644
index 0000000..b447ac2
Binary files /dev/null and b/src/original/city.jpg differ
diff --git a/src/original/content1.jpg b/src/original/content1.jpg
new file mode 100644
index 0000000..d4aabef
Binary files /dev/null and b/src/original/content1.jpg differ
diff --git a/src/original/content2.jpg b/src/original/content2.jpg
new file mode 100644
index 0000000..dedc8a8
Binary files /dev/null and b/src/original/content2.jpg differ
diff --git a/src/original/hangzhou.mp4 b/src/original/hangzhou.mp4
new file mode 100644
index 0000000..f2a6686
Binary files /dev/null and b/src/original/hangzhou.mp4 differ
diff --git a/src/original/lwx.jpg b/src/original/lwx.jpg
new file mode 100644
index 0000000..d832529
Binary files /dev/null and b/src/original/lwx.jpg differ
diff --git a/src/original/paper.jpg b/src/original/paper.jpg
new file mode 100644
index 0000000..76f19e4
Binary files /dev/null and b/src/original/paper.jpg differ
diff --git a/src/original/屏幕截图 2023-07-01 220051.png b/src/original/屏幕截图 2023-07-01 220051.png
new file mode 100644
index 0000000..c814166
Binary files /dev/null and b/src/original/屏幕截图 2023-07-01 220051.png differ
diff --git a/src/requirements.txt b/src/requirements.txt
new file mode 100644
index 0000000..4ec07f7
--- /dev/null
+++ b/src/requirements.txt
@@ -0,0 +1,28 @@
+certifi==2023.5.7
+charset-normalizer==3.1.0
+contourpy==1.0.7
+cycler==0.11.0
+filelock==3.12.0
+fonttools==4.40.0
+idna==3.4
+Jinja2==3.1.2
+kiwisolver==1.4.4
+MarkupSafe==2.1.2
+matplotlib==3.7.1
+mpmath==1.3.0
+networkx==3.1
+numpy==1.24.3
+opencv-python==4.7.0.72
+packaging==23.1
+Pillow==9.5.0
+pyparsing==3.0.9
+python-dateutil==2.8.2
+requests==2.30.0
+six==1.16.0
+sympy==1.12
+torch==2.0.1+cu118
+torchaudio==2.0.2+cu118
+torchvision==0.15.2
+typing_extensions==4.5.0
+urllib3==2.0.2
+pyqt5
diff --git a/src/result.avi b/src/result.avi
new file mode 100644
index 0000000..8e162ce
Binary files /dev/null and b/src/result.avi differ
diff --git a/src/result.jpg b/src/result.jpg
new file mode 100644
index 0000000..e1e34f3
Binary files /dev/null and b/src/result.jpg differ
diff --git a/src/result/54.jpg b/src/result/54.jpg
new file mode 100644
index 0000000..7a5cc50
Binary files /dev/null and b/src/result/54.jpg differ
diff --git a/src/sample/sample1.avi b/src/sample/sample1.avi
new file mode 100644
index 0000000..f2549fd
Binary files /dev/null and b/src/sample/sample1.avi differ
diff --git a/src/sample/sample2.avi b/src/sample/sample2.avi
new file mode 100644
index 0000000..8e162ce
Binary files /dev/null and b/src/sample/sample2.avi differ
diff --git a/src/style.pth b/src/style.pth
new file mode 100644
index 0000000..39db1dd
Binary files /dev/null and b/src/style.pth differ
diff --git a/src/style/style.jpg b/src/style/style.jpg
new file mode 100644
index 0000000..f0f96b7
Binary files /dev/null and b/src/style/style.jpg differ
diff --git a/src/style/style2.jpg b/src/style/style2.jpg
new file mode 100644
index 0000000..5da3824
Binary files /dev/null and b/src/style/style2.jpg differ
diff --git a/src/style/style3.jpg b/src/style/style3.jpg
new file mode 100644
index 0000000..2fb108e
Binary files /dev/null and b/src/style/style3.jpg differ
diff --git a/src/style/style4.jpg b/src/style/style4.jpg
new file mode 100644
index 0000000..181c5b6
Binary files /dev/null and b/src/style/style4.jpg differ
diff --git a/src/style2.pth b/src/style2.pth
new file mode 100644
index 0000000..4254e1e
Binary files /dev/null and b/src/style2.pth differ
diff --git a/src/train.py b/src/train.py
new file mode 100644
index 0000000..efc816c
--- /dev/null
+++ b/src/train.py
@@ -0,0 +1,116 @@
+import gc
+import os
+import datetime
+import time
+
+import numpy as np
+import torch
+from torch.optim import Adam
+from torch.utils.data import DataLoader
+from torchvision import datasets
+from torchvision.transforms import transforms
+from Vgg16 import Vgg16
+from transfer import load_image
+from transfer_net import TransformerNet
+
+IMAGENET_MEAN = [0.485, 0.456, 0.406]
+IMAGENET_STD = [0.229, 0.224, 0.225]
+
+
+# 格拉姆矩阵
+def gram_matrix(y):
+ (b, ch, h, w) = y.size()
+ features = y.view(b, ch, w * h)
+ features_t = features.transpose(1, 2)
+ gram = features.bmm(features_t) / (ch * h * w)
+ return gram
+
+
+# 规范样本
+def normal_batch(batch):
+ mean = batch.new_tensor(IMAGENET_MEAN).view(-1, 1, 1)
+ std = batch.new_tensor(IMAGENET_STD).view(-1, 1, 1)
+ batch = batch.div_(255.0)
+ return (batch - mean) / std
+
+
+def train():
+ device = torch.device('cuda:0')
+ np.random.seed(42)
+ torch.manual_seed(42)
+ # 模型配置
+ transform = transforms.Compose([
+ transforms.Resize(256),
+ transforms.CenterCrop(256),
+ transforms.ToTensor(),
+ transforms.Lambda(lambda x: x.mul(255))
+ ])
+ train_dataset = datasets.ImageFolder(r"D:\images", transform)
+ train_loader = DataLoader(train_dataset, batch_size=8)
+ transformer = TransformerNet().to(device)
+ optimizer = Adam(transformer.parameters(), 1e-3)
+ mse_loss = torch.nn.MSELoss()
+ vgg = Vgg16(requires_grad=False).to(device)
+ # 风格配置
+ style_transform = transforms.Compose([
+ transforms.ToTensor(),
+ transforms.Lambda(lambda x: x.mul(255))
+ ])
+ style = load_image("./style/style3.jpg", size=256)
+ style = style_transform(style)
+ style = style.repeat(8, 1, 1, 1).to(device)
+
+ feature_style = vgg(normal_batch(style))
+ gram_style = [gram_matrix(y) for y in feature_style]
+ # 训练
+ for e in range(2):
+ agg_content_loss = 0
+ agg_style_loss = 0
+ count = 0
+ transformer.train()
+ for batch_id, (x, _) in enumerate(train_loader):
+ n_batch = len(x)
+ count += n_batch
+ optimizer.zero_grad()
+
+ x = x.to(device)
+ y = transformer(x)
+
+ y = normal_batch(y)
+ x = normal_batch(x)
+
+ features_y = vgg(y)
+ features_x = vgg(x)
+ # 计算内容损失
+ content_loss = 1e5 * mse_loss(features_y.relu2_2, features_x.relu2_2)
+ # 计算风格损失
+ style_loss = 0
+ for ft_y, gm_s in zip(features_y, gram_style):
+ gm_y = gram_matrix(ft_y)
+ style_loss += mse_loss(gm_y, gm_s[:n_batch, :, :])
+ style_loss *= 1e10
+
+ total_loss = content_loss + style_loss
+ total_loss.backward()
+ optimizer.step()
+
+ agg_content_loss += content_loss.item()
+ agg_style_loss += style_loss.item()
+ # 显示进度
+ if (batch_id + 1) % 5 == 0:
+ mesg = "{}\tEpoch {}:\t[{}/{}]\tcontent: {:.6f}\tstyle: {:.6f}\ttotal: {:.6f}".format(
+ time.ctime(), e + 1, count, len(train_dataset),
+ agg_content_loss / (batch_id + 1),
+ agg_style_loss / (batch_id + 1),
+ (agg_content_loss + agg_style_loss) / (batch_id + 1)
+ )
+ print(mesg)
+
+ # 保存模型
+ transformer.eval().cuda()
+ save_model_path = "style2.pth"
+ torch.save(transformer.state_dict(), save_model_path)
+ print("\nDone, trained model saved at", save_model_path)
+
+
+train()
diff --git a/src/transfer.py b/src/transfer.py
new file mode 100644
index 0000000..dfaf02c
--- /dev/null
+++ b/src/transfer.py
@@ -0,0 +1,47 @@
+import re
+
+import torch
+from PIL import Image
+from torchvision.transforms import transforms
+
+from transfer_net import TransformerNet
+
+
+# 加载图片
+def load_image(filename, size=None, scale=None):
+ img = Image.open(filename).convert('RGB')
+ if size is not None:
+ img = img.resize((size, size), Image.ANTIALIAS)
+ elif scale is not None:
+ img = img.resize((int(img.size[0] / scale), int(img.size[1] / scale)), Image.ANTIALIAS)
+ return img
+
+
+# 保存图片
+def save_image(filename, data):
+ img = data.cpu().clone().clamp(0, 255).numpy()
+ img = img.transpose(1, 2, 0).astype('uint8')
+ img = Image.fromarray(img)
+ img.save(filename)
+
+
+# 图片处理
+def stylize(input_addr, output_addr, style_path):
+ content_image = load_image(input_addr)
+ content_transform = transforms.Compose([
+ transforms.ToTensor(),
+ transforms.Lambda(lambda x: x.mul(255))
+ ])
+
+ content_image = content_transform(content_image)
+ content_image = content_image.unsqueeze(0)
+
+ with torch.no_grad():
+ style_model = TransformerNet()
+ state_dict = torch.load(style_path)
+ for k in list(state_dict.keys()):
+ if re.search(r'in\d+\.running_(mean|var)$', k):
+ del state_dict[k]
+ style_model.load_state_dict(state_dict)
+ output = style_model(content_image.cuda()).cuda()
+ save_image(output_addr, output[0])
diff --git a/src/transfer_net.py b/src/transfer_net.py
new file mode 100644
index 0000000..58c3960
--- /dev/null
+++ b/src/transfer_net.py
@@ -0,0 +1,90 @@
+import torch
+
+
+class TransformerNet(torch.nn.Module):
+ def __init__(self):
+ super(TransformerNet, self).__init__()
+ # 初始化 convolution layers
+ self.conv1 = ConvLayer(3, 32, kernel_size=9, stride=1)
+ self.in1 = torch.nn.InstanceNorm2d(32, affine=True)
+ self.conv2 = ConvLayer(32, 64, kernel_size=3, stride=2)
+ self.in2 = torch.nn.InstanceNorm2d(64, affine=True)
+ self.conv3 = ConvLayer(64, 128, kernel_size=3, stride=2)
+ self.in3 = torch.nn.InstanceNorm2d(128, affine=True)
+ # 初始化 Residual layers
+ self.res1 = ResidualBlock(128)
+ self.res2 = ResidualBlock(128)
+ self.res3 = ResidualBlock(128)
+ self.res4 = ResidualBlock(128)
+ self.res5 = ResidualBlock(128)
+ # 初始化 Upsampling Layers
+ self.deconv1 = UpsampleConvLayer(128, 64, kernel_size=3, stride=1, upsample=2)
+ self.in4 = torch.nn.InstanceNorm2d(64, affine=True)
+ self.deconv2 = UpsampleConvLayer(64, 32, kernel_size=3, stride=1, upsample=2)
+ self.in5 = torch.nn.InstanceNorm2d(32, affine=True)
+ self.deconv3 = ConvLayer(32, 3, kernel_size=9, stride=1)
+ # Non-linearities
+ self.relu = torch.nn.ReLU()
+
+ def forward(self, X):
+ y = self.relu(self.in1(self.conv1(X)))
+ y = self.relu(self.in2(self.conv2(y)))
+ y = self.relu(self.in3(self.conv3(y)))
+ y = self.res1(y)
+ y = self.res2(y)
+ y = self.res3(y)
+ y = self.res4(y)
+ y = self.res5(y)
+ y = self.relu(self.in4(self.deconv1(y)))
+ y = self.relu(self.in5(self.deconv2(y)))
+ y = self.deconv3(y)
+ return y
+
+
+class ConvLayer(torch.nn.Module):
+ def __init__(self, in_channels, out_channels, kernel_size, stride):
+ super(ConvLayer, self).__init__()
+ reflection_padding = kernel_size // 2
+ self.reflection_pad = torch.nn.ReflectionPad2d(reflection_padding)
+ self.conv2d = torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride)
+
+ def forward(self, x):
+ out = self.reflection_pad(x)
+ out = self.conv2d(out)
+ return out
+
+
+class ResidualBlock(torch.nn.Module):
+
+ def __init__(self, channels):
+ super(ResidualBlock, self).__init__()
+ self.conv1 = ConvLayer(channels, channels, kernel_size=3, stride=1)
+ self.in1 = torch.nn.InstanceNorm2d(channels, affine=True)
+ self.conv2 = ConvLayer(channels, channels, kernel_size=3, stride=1)
+ self.in2 = torch.nn.InstanceNorm2d(channels, affine=True)
+ self.relu = torch.nn.ReLU()
+
+ def forward(self, x):
+ residual = x
+ out = self.relu(self.in1(self.conv1(x)))
+ out = self.in2(self.conv2(out))
+ out = out + residual
+ return out
+
+
+class UpsampleConvLayer(torch.nn.Module):
+
+ def __init__(self, in_channels, out_channels, kernel_size, stride, upsample=None):
+ super(UpsampleConvLayer, self).__init__()
+ self.upsample = upsample
+ reflection_padding = kernel_size // 2
+ self.reflection_pad = torch.nn.ReflectionPad2d(reflection_padding)
+ self.conv2d = torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride)
+
+ def forward(self, x):
+ x_in = x
+ if self.upsample:
+ x_in = torch.nn.functional.interpolate(x_in, mode='nearest', scale_factor=self.upsample)
+ out = self.reflection_pad(x_in)
+ out = self.conv2d(out)
+ return out
\ No newline at end of file
diff --git a/src/transfered/1.jpg b/src/transfered/1.jpg
new file mode 100644
index 0000000..1f229c6
Binary files /dev/null and b/src/transfered/1.jpg differ
diff --git a/src/transfered/10.jpg b/src/transfered/10.jpg
new file mode 100644
index 0000000..86654c7
Binary files /dev/null and b/src/transfered/10.jpg differ
diff --git a/src/transfered/100.jpg b/src/transfered/100.jpg
new file mode 100644
index 0000000..215b96b
Binary files /dev/null and b/src/transfered/100.jpg differ
diff --git a/src/transfered/101.jpg b/src/transfered/101.jpg
new file mode 100644
index 0000000..68c5527
Binary files /dev/null and b/src/transfered/101.jpg differ
diff --git a/src/transfered/102.jpg b/src/transfered/102.jpg
new file mode 100644
index 0000000..87d71c3
Binary files /dev/null and b/src/transfered/102.jpg differ
diff --git a/src/transfered/103.jpg b/src/transfered/103.jpg
new file mode 100644
index 0000000..3d0d61a
Binary files /dev/null and b/src/transfered/103.jpg differ
diff --git a/src/transfered/104.jpg b/src/transfered/104.jpg
new file mode 100644
index 0000000..aa58560
Binary files /dev/null and b/src/transfered/104.jpg differ
diff --git a/src/transfered/105.jpg b/src/transfered/105.jpg
new file mode 100644
index 0000000..28b2a99
Binary files /dev/null and b/src/transfered/105.jpg differ
diff --git a/src/transfered/106.jpg b/src/transfered/106.jpg
new file mode 100644
index 0000000..1eeaf43
Binary files /dev/null and b/src/transfered/106.jpg differ
diff --git a/src/transfered/107.jpg b/src/transfered/107.jpg
new file mode 100644
index 0000000..7b3abd7
Binary files /dev/null and b/src/transfered/107.jpg differ
diff --git a/src/transfered/108.jpg b/src/transfered/108.jpg
new file mode 100644
index 0000000..6e7fbad
Binary files /dev/null and b/src/transfered/108.jpg differ
diff --git a/src/transfered/109.jpg b/src/transfered/109.jpg
new file mode 100644
index 0000000..c412076
Binary files /dev/null and b/src/transfered/109.jpg differ
diff --git a/src/transfered/11.jpg b/src/transfered/11.jpg
new file mode 100644
index 0000000..65469cb
Binary files /dev/null and b/src/transfered/11.jpg differ
diff --git a/src/transfered/110.jpg b/src/transfered/110.jpg
new file mode 100644
index 0000000..d645989
Binary files /dev/null and b/src/transfered/110.jpg differ
diff --git a/src/transfered/111.jpg b/src/transfered/111.jpg
new file mode 100644
index 0000000..5589d91
Binary files /dev/null and b/src/transfered/111.jpg differ
diff --git a/src/transfered/112.jpg b/src/transfered/112.jpg
new file mode 100644
index 0000000..766d3af
Binary files /dev/null and b/src/transfered/112.jpg differ
diff --git a/src/transfered/113.jpg b/src/transfered/113.jpg
new file mode 100644
index 0000000..d02f78a
Binary files /dev/null and b/src/transfered/113.jpg differ
diff --git a/src/transfered/114.jpg b/src/transfered/114.jpg
new file mode 100644
index 0000000..e74bc9d
Binary files /dev/null and b/src/transfered/114.jpg differ
diff --git a/src/transfered/115.jpg b/src/transfered/115.jpg
new file mode 100644
index 0000000..4ea6c1b
Binary files /dev/null and b/src/transfered/115.jpg differ
diff --git a/src/transfered/116.jpg b/src/transfered/116.jpg
new file mode 100644
index 0000000..eb7a65c
Binary files /dev/null and b/src/transfered/116.jpg differ
diff --git a/src/transfered/117.jpg b/src/transfered/117.jpg
new file mode 100644
index 0000000..b86e793
Binary files /dev/null and b/src/transfered/117.jpg differ
diff --git a/src/transfered/118.jpg b/src/transfered/118.jpg
new file mode 100644
index 0000000..395e37f
Binary files /dev/null and b/src/transfered/118.jpg differ
diff --git a/src/transfered/119.jpg b/src/transfered/119.jpg
new file mode 100644
index 0000000..b69cce2
Binary files /dev/null and b/src/transfered/119.jpg differ
diff --git a/src/transfered/12.jpg b/src/transfered/12.jpg
new file mode 100644
index 0000000..ea1e711
Binary files /dev/null and b/src/transfered/12.jpg differ
diff --git a/src/transfered/120.jpg b/src/transfered/120.jpg
new file mode 100644
index 0000000..f664dc7
Binary files /dev/null and b/src/transfered/120.jpg differ
diff --git a/src/transfered/121.jpg b/src/transfered/121.jpg
new file mode 100644
index 0000000..a397131
Binary files /dev/null and b/src/transfered/121.jpg differ
diff --git a/src/transfered/122.jpg b/src/transfered/122.jpg
new file mode 100644
index 0000000..3762ac3
Binary files /dev/null and b/src/transfered/122.jpg differ
diff --git a/src/transfered/123.jpg b/src/transfered/123.jpg
new file mode 100644
index 0000000..4593c7e
Binary files /dev/null and b/src/transfered/123.jpg differ
diff --git a/src/transfered/124.jpg b/src/transfered/124.jpg
new file mode 100644
index 0000000..9d51eab
Binary files /dev/null and b/src/transfered/124.jpg differ
diff --git a/src/transfered/125.jpg b/src/transfered/125.jpg
new file mode 100644
index 0000000..e3cf7e5
Binary files /dev/null and b/src/transfered/125.jpg differ
diff --git a/src/transfered/126.jpg b/src/transfered/126.jpg
new file mode 100644
index 0000000..e8f30ba
Binary files /dev/null and b/src/transfered/126.jpg differ
diff --git a/src/transfered/127.jpg b/src/transfered/127.jpg
new file mode 100644
index 0000000..db96781
Binary files /dev/null and b/src/transfered/127.jpg differ
diff --git a/src/transfered/128.jpg b/src/transfered/128.jpg
new file mode 100644
index 0000000..6848d19
Binary files /dev/null and b/src/transfered/128.jpg differ
diff --git a/src/transfered/129.jpg b/src/transfered/129.jpg
new file mode 100644
index 0000000..12cebfe
Binary files /dev/null and b/src/transfered/129.jpg differ
diff --git a/src/transfered/13.jpg b/src/transfered/13.jpg
new file mode 100644
index 0000000..3a7774b
Binary files /dev/null and b/src/transfered/13.jpg differ
diff --git a/src/transfered/130.jpg b/src/transfered/130.jpg
new file mode 100644
index 0000000..9a7d23f
Binary files /dev/null and b/src/transfered/130.jpg differ
diff --git a/src/transfered/131.jpg b/src/transfered/131.jpg
new file mode 100644
index 0000000..dffa8e1
Binary files /dev/null and b/src/transfered/131.jpg differ
diff --git a/src/transfered/132.jpg b/src/transfered/132.jpg
new file mode 100644
index 0000000..01e04d4
Binary files /dev/null and b/src/transfered/132.jpg differ
diff --git a/src/transfered/133.jpg b/src/transfered/133.jpg
new file mode 100644
index 0000000..df473e9
Binary files /dev/null and b/src/transfered/133.jpg differ
diff --git a/src/transfered/134.jpg b/src/transfered/134.jpg
new file mode 100644
index 0000000..0bae680
Binary files /dev/null and b/src/transfered/134.jpg differ
diff --git a/src/transfered/135.jpg b/src/transfered/135.jpg
new file mode 100644
index 0000000..d1aef92
Binary files /dev/null and b/src/transfered/135.jpg differ
diff --git a/src/transfered/136.jpg b/src/transfered/136.jpg
new file mode 100644
index 0000000..a4f4f10
Binary files /dev/null and b/src/transfered/136.jpg differ
diff --git a/src/transfered/137.jpg b/src/transfered/137.jpg
new file mode 100644
index 0000000..223f991
Binary files /dev/null and b/src/transfered/137.jpg differ
diff --git a/src/transfered/138.jpg b/src/transfered/138.jpg
new file mode 100644
index 0000000..118e85b
Binary files /dev/null and b/src/transfered/138.jpg differ
diff --git a/src/transfered/139.jpg b/src/transfered/139.jpg
new file mode 100644
index 0000000..14d34f9
Binary files /dev/null and b/src/transfered/139.jpg differ
diff --git a/src/transfered/14.jpg b/src/transfered/14.jpg
new file mode 100644
index 0000000..76e4c22
Binary files /dev/null and b/src/transfered/14.jpg differ
diff --git a/src/transfered/140.jpg b/src/transfered/140.jpg
new file mode 100644
index 0000000..85f53af
Binary files /dev/null and b/src/transfered/140.jpg differ
diff --git a/src/transfered/141.jpg b/src/transfered/141.jpg
new file mode 100644
index 0000000..2dff7c6
Binary files /dev/null and b/src/transfered/141.jpg differ
diff --git a/src/transfered/142.jpg b/src/transfered/142.jpg
new file mode 100644
index 0000000..6068eb3
Binary files /dev/null and b/src/transfered/142.jpg differ
diff --git a/src/transfered/143.jpg b/src/transfered/143.jpg
new file mode 100644
index 0000000..f238b4a
Binary files /dev/null and b/src/transfered/143.jpg differ
diff --git a/src/transfered/144.jpg b/src/transfered/144.jpg
new file mode 100644
index 0000000..a9f5b23
Binary files /dev/null and b/src/transfered/144.jpg differ
diff --git a/src/transfered/145.jpg b/src/transfered/145.jpg
new file mode 100644
index 0000000..3b58d6f
Binary files /dev/null and b/src/transfered/145.jpg differ
diff --git a/src/transfered/146.jpg b/src/transfered/146.jpg
new file mode 100644
index 0000000..d721280
Binary files /dev/null and b/src/transfered/146.jpg differ
diff --git a/src/transfered/147.jpg b/src/transfered/147.jpg
new file mode 100644
index 0000000..aabc6d9
Binary files /dev/null and b/src/transfered/147.jpg differ
diff --git a/src/transfered/148.jpg b/src/transfered/148.jpg
new file mode 100644
index 0000000..92f9135
Binary files /dev/null and b/src/transfered/148.jpg differ
diff --git a/src/transfered/149.jpg b/src/transfered/149.jpg
new file mode 100644
index 0000000..6f3a6da
Binary files /dev/null and b/src/transfered/149.jpg differ
diff --git a/src/transfered/15.jpg b/src/transfered/15.jpg
new file mode 100644
index 0000000..c18922d
Binary files /dev/null and b/src/transfered/15.jpg differ
diff --git a/src/transfered/150.jpg b/src/transfered/150.jpg
new file mode 100644
index 0000000..cd4bcb7
Binary files /dev/null and b/src/transfered/150.jpg differ
diff --git a/src/transfered/151.jpg b/src/transfered/151.jpg
new file mode 100644
index 0000000..9b77d15
Binary files /dev/null and b/src/transfered/151.jpg differ
diff --git a/src/transfered/152.jpg b/src/transfered/152.jpg
new file mode 100644
index 0000000..804a925
Binary files /dev/null and b/src/transfered/152.jpg differ
diff --git a/src/transfered/153.jpg b/src/transfered/153.jpg
new file mode 100644
index 0000000..8074716
Binary files /dev/null and b/src/transfered/153.jpg differ
diff --git a/src/transfered/154.jpg b/src/transfered/154.jpg
new file mode 100644
index 0000000..eafb3e9
Binary files /dev/null and b/src/transfered/154.jpg differ
diff --git a/src/transfered/155.jpg b/src/transfered/155.jpg
new file mode 100644
index 0000000..9e57aa6
Binary files /dev/null and b/src/transfered/155.jpg differ
diff --git a/src/transfered/156.jpg b/src/transfered/156.jpg
new file mode 100644
index 0000000..75f9846
Binary files /dev/null and b/src/transfered/156.jpg differ
diff --git a/src/transfered/157.jpg b/src/transfered/157.jpg
new file mode 100644
index 0000000..eb16ff4
Binary files /dev/null and b/src/transfered/157.jpg differ
diff --git a/src/transfered/158.jpg b/src/transfered/158.jpg
new file mode 100644
index 0000000..ac27c99
Binary files /dev/null and b/src/transfered/158.jpg differ
diff --git a/src/transfered/159.jpg b/src/transfered/159.jpg
new file mode 100644
index 0000000..584cd1a
Binary files /dev/null and b/src/transfered/159.jpg differ
diff --git a/src/transfered/16.jpg b/src/transfered/16.jpg
new file mode 100644
index 0000000..4d61e2a
Binary files /dev/null and b/src/transfered/16.jpg differ
diff --git a/src/transfered/160.jpg b/src/transfered/160.jpg
new file mode 100644
index 0000000..459b271
Binary files /dev/null and b/src/transfered/160.jpg differ
diff --git a/src/transfered/161.jpg b/src/transfered/161.jpg
new file mode 100644
index 0000000..2047fe5
Binary files /dev/null and b/src/transfered/161.jpg differ
diff --git a/src/transfered/162.jpg b/src/transfered/162.jpg
new file mode 100644
index 0000000..43a9a1b
Binary files /dev/null and b/src/transfered/162.jpg differ
diff --git a/src/transfered/163.jpg b/src/transfered/163.jpg
new file mode 100644
index 0000000..d098578
Binary files /dev/null and b/src/transfered/163.jpg differ
diff --git a/src/transfered/164.jpg b/src/transfered/164.jpg
new file mode 100644
index 0000000..ae6d94c
Binary files /dev/null and b/src/transfered/164.jpg differ
diff --git a/src/transfered/165.jpg b/src/transfered/165.jpg
new file mode 100644
index 0000000..7edcfec
Binary files /dev/null and b/src/transfered/165.jpg differ
diff --git a/src/transfered/166.jpg b/src/transfered/166.jpg
new file mode 100644
index 0000000..52fca65
Binary files /dev/null and b/src/transfered/166.jpg differ
diff --git a/src/transfered/167.jpg b/src/transfered/167.jpg
new file mode 100644
index 0000000..ffd5843
Binary files /dev/null and b/src/transfered/167.jpg differ
diff --git a/src/transfered/168.jpg b/src/transfered/168.jpg
new file mode 100644
index 0000000..16af2db
Binary files /dev/null and b/src/transfered/168.jpg differ
diff --git a/src/transfered/169.jpg b/src/transfered/169.jpg
new file mode 100644
index 0000000..a23d6d4
Binary files /dev/null and b/src/transfered/169.jpg differ
diff --git a/src/transfered/17.jpg b/src/transfered/17.jpg
new file mode 100644
index 0000000..204d47e
Binary files /dev/null and b/src/transfered/17.jpg differ
diff --git a/src/transfered/170.jpg b/src/transfered/170.jpg
new file mode 100644
index 0000000..a3d72cf
Binary files /dev/null and b/src/transfered/170.jpg differ
diff --git a/src/transfered/171.jpg b/src/transfered/171.jpg
new file mode 100644
index 0000000..3543e5b
Binary files /dev/null and b/src/transfered/171.jpg differ
diff --git a/src/transfered/172.jpg b/src/transfered/172.jpg
new file mode 100644
index 0000000..1eff9fb
Binary files /dev/null and b/src/transfered/172.jpg differ
diff --git a/src/transfered/173.jpg b/src/transfered/173.jpg
new file mode 100644
index 0000000..f35a0ce
Binary files /dev/null and b/src/transfered/173.jpg differ
diff --git a/src/transfered/174.jpg b/src/transfered/174.jpg
new file mode 100644
index 0000000..f0f6992
Binary files /dev/null and b/src/transfered/174.jpg differ
diff --git a/src/transfered/175.jpg b/src/transfered/175.jpg
new file mode 100644
index 0000000..ccfb93d
Binary files /dev/null and b/src/transfered/175.jpg differ
diff --git a/src/transfered/176.jpg b/src/transfered/176.jpg
new file mode 100644
index 0000000..d65e883
Binary files /dev/null and b/src/transfered/176.jpg differ
diff --git a/src/transfered/177.jpg b/src/transfered/177.jpg
new file mode 100644
index 0000000..6f69b0b
Binary files /dev/null and b/src/transfered/177.jpg differ
diff --git a/src/transfered/178.jpg b/src/transfered/178.jpg
new file mode 100644
index 0000000..1ea8308
Binary files /dev/null and b/src/transfered/178.jpg differ
diff --git a/src/transfered/179.jpg b/src/transfered/179.jpg
new file mode 100644
index 0000000..ddc8263
Binary files /dev/null and b/src/transfered/179.jpg differ
diff --git a/src/transfered/18.jpg b/src/transfered/18.jpg
new file mode 100644
index 0000000..5a77a3a
Binary files /dev/null and b/src/transfered/18.jpg differ
diff --git a/src/transfered/180.jpg b/src/transfered/180.jpg
new file mode 100644
index 0000000..5697454
Binary files /dev/null and b/src/transfered/180.jpg differ
diff --git a/src/transfered/181.jpg b/src/transfered/181.jpg
new file mode 100644
index 0000000..0a52439
Binary files /dev/null and b/src/transfered/181.jpg differ
diff --git a/src/transfered/182.jpg b/src/transfered/182.jpg
new file mode 100644
index 0000000..8284391
Binary files /dev/null and b/src/transfered/182.jpg differ
diff --git a/src/transfered/183.jpg b/src/transfered/183.jpg
new file mode 100644
index 0000000..ea7fa41
Binary files /dev/null and b/src/transfered/183.jpg differ
diff --git a/src/transfered/184.jpg b/src/transfered/184.jpg
new file mode 100644
index 0000000..5eed71d
Binary files /dev/null and b/src/transfered/184.jpg differ
diff --git a/src/transfered/185.jpg b/src/transfered/185.jpg
new file mode 100644
index 0000000..b01145f
Binary files /dev/null and b/src/transfered/185.jpg differ
diff --git a/src/transfered/186.jpg b/src/transfered/186.jpg
new file mode 100644
index 0000000..a5a0d87
Binary files /dev/null and b/src/transfered/186.jpg differ
diff --git a/src/transfered/187.jpg b/src/transfered/187.jpg
new file mode 100644
index 0000000..39c4f4b
Binary files /dev/null and b/src/transfered/187.jpg differ
diff --git a/src/transfered/188.jpg b/src/transfered/188.jpg
new file mode 100644
index 0000000..095da36
Binary files /dev/null and b/src/transfered/188.jpg differ
diff --git a/src/transfered/189.jpg b/src/transfered/189.jpg
new file mode 100644
index 0000000..ef2c697
Binary files /dev/null and b/src/transfered/189.jpg differ
diff --git a/src/transfered/19.jpg b/src/transfered/19.jpg
new file mode 100644
index 0000000..cdb4e51
Binary files /dev/null and b/src/transfered/19.jpg differ
diff --git a/src/transfered/190.jpg b/src/transfered/190.jpg
new file mode 100644
index 0000000..9fa4665
Binary files /dev/null and b/src/transfered/190.jpg differ
diff --git a/src/transfered/191.jpg b/src/transfered/191.jpg
new file mode 100644
index 0000000..da1f32f
Binary files /dev/null and b/src/transfered/191.jpg differ
diff --git a/src/transfered/192.jpg b/src/transfered/192.jpg
new file mode 100644
index 0000000..35a02e1
Binary files /dev/null and b/src/transfered/192.jpg differ
diff --git a/src/transfered/193.jpg b/src/transfered/193.jpg
new file mode 100644
index 0000000..1a074ab
Binary files /dev/null and b/src/transfered/193.jpg differ
diff --git a/src/transfered/194.jpg b/src/transfered/194.jpg
new file mode 100644
index 0000000..7c66730
Binary files /dev/null and b/src/transfered/194.jpg differ
diff --git a/src/transfered/195.jpg b/src/transfered/195.jpg
new file mode 100644
index 0000000..1b83453
Binary files /dev/null and b/src/transfered/195.jpg differ
diff --git a/src/transfered/196.jpg b/src/transfered/196.jpg
new file mode 100644
index 0000000..3f0fe62
Binary files /dev/null and b/src/transfered/196.jpg differ
diff --git a/src/transfered/197.jpg b/src/transfered/197.jpg
new file mode 100644
index 0000000..26c2d3f
Binary files /dev/null and b/src/transfered/197.jpg differ
diff --git a/src/transfered/198.jpg b/src/transfered/198.jpg
new file mode 100644
index 0000000..6d15081
Binary files /dev/null and b/src/transfered/198.jpg differ
diff --git a/src/transfered/199.jpg b/src/transfered/199.jpg
new file mode 100644
index 0000000..5bb20fd
Binary files /dev/null and b/src/transfered/199.jpg differ
diff --git a/src/transfered/2.jpg b/src/transfered/2.jpg
new file mode 100644
index 0000000..52b312a
Binary files /dev/null and b/src/transfered/2.jpg differ
diff --git a/src/transfered/20.jpg b/src/transfered/20.jpg
new file mode 100644
index 0000000..a65bd79
Binary files /dev/null and b/src/transfered/20.jpg differ
diff --git a/src/transfered/200.jpg b/src/transfered/200.jpg
new file mode 100644
index 0000000..7a0ae94
Binary files /dev/null and b/src/transfered/200.jpg differ
diff --git a/src/transfered/201.jpg b/src/transfered/201.jpg
new file mode 100644
index 0000000..c26435f
Binary files /dev/null and b/src/transfered/201.jpg differ
diff --git a/src/transfered/202.jpg b/src/transfered/202.jpg
new file mode 100644
index 0000000..f3e6d88
Binary files /dev/null and b/src/transfered/202.jpg differ
diff --git a/src/transfered/203.jpg b/src/transfered/203.jpg
new file mode 100644
index 0000000..98447d6
Binary files /dev/null and b/src/transfered/203.jpg differ
diff --git a/src/transfered/204.jpg b/src/transfered/204.jpg
new file mode 100644
index 0000000..cf7ed3f
Binary files /dev/null and b/src/transfered/204.jpg differ
diff --git a/src/transfered/205.jpg b/src/transfered/205.jpg
new file mode 100644
index 0000000..732ed7e
Binary files /dev/null and b/src/transfered/205.jpg differ
diff --git a/src/transfered/206.jpg b/src/transfered/206.jpg
new file mode 100644
index 0000000..6149bf0
Binary files /dev/null and b/src/transfered/206.jpg differ
diff --git a/src/transfered/207.jpg b/src/transfered/207.jpg
new file mode 100644
index 0000000..4230bd0
Binary files /dev/null and b/src/transfered/207.jpg differ
diff --git a/src/transfered/208.jpg b/src/transfered/208.jpg
new file mode 100644
index 0000000..cc9f0cd
Binary files /dev/null and b/src/transfered/208.jpg differ
diff --git a/src/transfered/209.jpg b/src/transfered/209.jpg
new file mode 100644
index 0000000..513de84
Binary files /dev/null and b/src/transfered/209.jpg differ
diff --git a/src/transfered/21.jpg b/src/transfered/21.jpg
new file mode 100644
index 0000000..5605b01
Binary files /dev/null and b/src/transfered/21.jpg differ
diff --git a/src/transfered/210.jpg b/src/transfered/210.jpg
new file mode 100644
index 0000000..9523168
Binary files /dev/null and b/src/transfered/210.jpg differ
diff --git a/src/transfered/211.jpg b/src/transfered/211.jpg
new file mode 100644
index 0000000..21e74a9
Binary files /dev/null and b/src/transfered/211.jpg differ
diff --git a/src/transfered/212.jpg b/src/transfered/212.jpg
new file mode 100644
index 0000000..116f306
Binary files /dev/null and b/src/transfered/212.jpg differ
diff --git a/src/transfered/213.jpg b/src/transfered/213.jpg
new file mode 100644
index 0000000..e63d10d
Binary files /dev/null and b/src/transfered/213.jpg differ
diff --git a/src/transfered/214.jpg b/src/transfered/214.jpg
new file mode 100644
index 0000000..ecdfe99
Binary files /dev/null and b/src/transfered/214.jpg differ
diff --git a/src/transfered/215.jpg b/src/transfered/215.jpg
new file mode 100644
index 0000000..136568d
Binary files /dev/null and b/src/transfered/215.jpg differ
diff --git a/src/transfered/216.jpg b/src/transfered/216.jpg
new file mode 100644
index 0000000..0392174
Binary files /dev/null and b/src/transfered/216.jpg differ
diff --git a/src/transfered/217.jpg b/src/transfered/217.jpg
new file mode 100644
index 0000000..e8844ab
Binary files /dev/null and b/src/transfered/217.jpg differ
diff --git a/src/transfered/218.jpg b/src/transfered/218.jpg
new file mode 100644
index 0000000..0df204f
Binary files /dev/null and b/src/transfered/218.jpg differ
diff --git a/src/transfered/219.jpg b/src/transfered/219.jpg
new file mode 100644
index 0000000..883186d
Binary files /dev/null and b/src/transfered/219.jpg differ
diff --git a/src/transfered/22.jpg b/src/transfered/22.jpg
new file mode 100644
index 0000000..2e98413
Binary files /dev/null and b/src/transfered/22.jpg differ
diff --git a/src/transfered/220.jpg b/src/transfered/220.jpg
new file mode 100644
index 0000000..5b9fd95
Binary files /dev/null and b/src/transfered/220.jpg differ
diff --git a/src/transfered/221.jpg b/src/transfered/221.jpg
new file mode 100644
index 0000000..339e231
Binary files /dev/null and b/src/transfered/221.jpg differ
diff --git a/src/transfered/222.jpg b/src/transfered/222.jpg
new file mode 100644
index 0000000..96abf19
Binary files /dev/null and b/src/transfered/222.jpg differ
diff --git a/src/transfered/223.jpg b/src/transfered/223.jpg
new file mode 100644
index 0000000..cea09b4
Binary files /dev/null and b/src/transfered/223.jpg differ
diff --git a/src/transfered/224.jpg b/src/transfered/224.jpg
new file mode 100644
index 0000000..d4462b4
Binary files /dev/null and b/src/transfered/224.jpg differ
diff --git a/src/transfered/225.jpg b/src/transfered/225.jpg
new file mode 100644
index 0000000..152d01f
Binary files /dev/null and b/src/transfered/225.jpg differ
diff --git a/src/transfered/226.jpg b/src/transfered/226.jpg
new file mode 100644
index 0000000..1e69b80
Binary files /dev/null and b/src/transfered/226.jpg differ
diff --git a/src/transfered/227.jpg b/src/transfered/227.jpg
new file mode 100644
index 0000000..a193098
Binary files /dev/null and b/src/transfered/227.jpg differ
diff --git a/src/transfered/228.jpg b/src/transfered/228.jpg
new file mode 100644
index 0000000..74ccbac
Binary files /dev/null and b/src/transfered/228.jpg differ
diff --git a/src/transfered/229.jpg b/src/transfered/229.jpg
new file mode 100644
index 0000000..344f3c1
Binary files /dev/null and b/src/transfered/229.jpg differ
diff --git a/src/transfered/23.jpg b/src/transfered/23.jpg
new file mode 100644
index 0000000..97a47f7
Binary files /dev/null and b/src/transfered/23.jpg differ
diff --git a/src/transfered/230.jpg b/src/transfered/230.jpg
new file mode 100644
index 0000000..d1e0c5c
Binary files /dev/null and b/src/transfered/230.jpg differ
diff --git a/src/transfered/231.jpg b/src/transfered/231.jpg
new file mode 100644
index 0000000..6da04d2
Binary files /dev/null and b/src/transfered/231.jpg differ
diff --git a/src/transfered/232.jpg b/src/transfered/232.jpg
new file mode 100644
index 0000000..1d9a2a1
Binary files /dev/null and b/src/transfered/232.jpg differ
diff --git a/src/transfered/233.jpg b/src/transfered/233.jpg
new file mode 100644
index 0000000..7c6c3b1
Binary files /dev/null and b/src/transfered/233.jpg differ
diff --git a/src/transfered/234.jpg b/src/transfered/234.jpg
new file mode 100644
index 0000000..87f56fd
Binary files /dev/null and b/src/transfered/234.jpg differ
diff --git a/src/transfered/235.jpg b/src/transfered/235.jpg
new file mode 100644
index 0000000..e927f86
Binary files /dev/null and b/src/transfered/235.jpg differ
diff --git a/src/transfered/236.jpg b/src/transfered/236.jpg
new file mode 100644
index 0000000..449beac
Binary files /dev/null and b/src/transfered/236.jpg differ
diff --git a/src/transfered/237.jpg b/src/transfered/237.jpg
new file mode 100644
index 0000000..eefb021
Binary files /dev/null and b/src/transfered/237.jpg differ
diff --git a/src/transfered/238.jpg b/src/transfered/238.jpg
new file mode 100644
index 0000000..2e4bc40
Binary files /dev/null and b/src/transfered/238.jpg differ
diff --git a/src/transfered/239.jpg b/src/transfered/239.jpg
new file mode 100644
index 0000000..2d500ae
Binary files /dev/null and b/src/transfered/239.jpg differ
diff --git a/src/transfered/24.jpg b/src/transfered/24.jpg
new file mode 100644
index 0000000..0e06b42
Binary files /dev/null and b/src/transfered/24.jpg differ
diff --git a/src/transfered/240.jpg b/src/transfered/240.jpg
new file mode 100644
index 0000000..6f21b5a
Binary files /dev/null and b/src/transfered/240.jpg differ
diff --git a/src/transfered/241.jpg b/src/transfered/241.jpg
new file mode 100644
index 0000000..61ccf2d
Binary files /dev/null and b/src/transfered/241.jpg differ
diff --git a/src/transfered/242.jpg b/src/transfered/242.jpg
new file mode 100644
index 0000000..f5acb29
Binary files /dev/null and b/src/transfered/242.jpg differ
diff --git a/src/transfered/243.jpg b/src/transfered/243.jpg
new file mode 100644
index 0000000..4b46225
Binary files /dev/null and b/src/transfered/243.jpg differ
diff --git a/src/transfered/244.jpg b/src/transfered/244.jpg
new file mode 100644
index 0000000..256e8aa
Binary files /dev/null and b/src/transfered/244.jpg differ
diff --git a/src/transfered/245.jpg b/src/transfered/245.jpg
new file mode 100644
index 0000000..3d78b1e
Binary files /dev/null and b/src/transfered/245.jpg differ
diff --git a/src/transfered/246.jpg b/src/transfered/246.jpg
new file mode 100644
index 0000000..9a69dfc
Binary files /dev/null and b/src/transfered/246.jpg differ
diff --git a/src/transfered/247.jpg b/src/transfered/247.jpg
new file mode 100644
index 0000000..979ae27
Binary files /dev/null and b/src/transfered/247.jpg differ
diff --git a/src/transfered/248.jpg b/src/transfered/248.jpg
new file mode 100644
index 0000000..ce9f1d7
Binary files /dev/null and b/src/transfered/248.jpg differ
diff --git a/src/transfered/249.jpg b/src/transfered/249.jpg
new file mode 100644
index 0000000..114e608
Binary files /dev/null and b/src/transfered/249.jpg differ
diff --git a/src/transfered/25.jpg b/src/transfered/25.jpg
new file mode 100644
index 0000000..181f9f5
Binary files /dev/null and b/src/transfered/25.jpg differ
diff --git a/src/transfered/250.jpg b/src/transfered/250.jpg
new file mode 100644
index 0000000..f7d0ef7
Binary files /dev/null and b/src/transfered/250.jpg differ
diff --git a/src/transfered/251.jpg b/src/transfered/251.jpg
new file mode 100644
index 0000000..ebb7bbc
Binary files /dev/null and b/src/transfered/251.jpg differ
diff --git a/src/transfered/252.jpg b/src/transfered/252.jpg
new file mode 100644
index 0000000..b442df8
Binary files /dev/null and b/src/transfered/252.jpg differ
diff --git a/src/transfered/253.jpg b/src/transfered/253.jpg
new file mode 100644
index 0000000..b3df05b
Binary files /dev/null and b/src/transfered/253.jpg differ
diff --git a/src/transfered/254.jpg b/src/transfered/254.jpg
new file mode 100644
index 0000000..0035778
Binary files /dev/null and b/src/transfered/254.jpg differ
diff --git a/src/transfered/255.jpg b/src/transfered/255.jpg
new file mode 100644
index 0000000..e9197d4
Binary files /dev/null and b/src/transfered/255.jpg differ
diff --git a/src/transfered/256.jpg b/src/transfered/256.jpg
new file mode 100644
index 0000000..e7d528e
Binary files /dev/null and b/src/transfered/256.jpg differ
diff --git a/src/transfered/257.jpg b/src/transfered/257.jpg
new file mode 100644
index 0000000..6826330
Binary files /dev/null and b/src/transfered/257.jpg differ
diff --git a/src/transfered/258.jpg b/src/transfered/258.jpg
new file mode 100644
index 0000000..4281fd3
Binary files /dev/null and b/src/transfered/258.jpg differ
diff --git a/src/transfered/259.jpg b/src/transfered/259.jpg
new file mode 100644
index 0000000..10cbde1
Binary files /dev/null and b/src/transfered/259.jpg differ
diff --git a/src/transfered/26.jpg b/src/transfered/26.jpg
new file mode 100644
index 0000000..257ebe3
Binary files /dev/null and b/src/transfered/26.jpg differ
diff --git a/src/transfered/260.jpg b/src/transfered/260.jpg
new file mode 100644
index 0000000..493231b
Binary files /dev/null and b/src/transfered/260.jpg differ
diff --git a/src/transfered/261.jpg b/src/transfered/261.jpg
new file mode 100644
index 0000000..8e4fc5c
Binary files /dev/null and b/src/transfered/261.jpg differ
diff --git a/src/transfered/262.jpg b/src/transfered/262.jpg
new file mode 100644
index 0000000..05c7e83
Binary files /dev/null and b/src/transfered/262.jpg differ
diff --git a/src/transfered/263.jpg b/src/transfered/263.jpg
new file mode 100644
index 0000000..4c9cf0b
Binary files /dev/null and b/src/transfered/263.jpg differ
diff --git a/src/transfered/264.jpg b/src/transfered/264.jpg
new file mode 100644
index 0000000..6b38b71
Binary files /dev/null and b/src/transfered/264.jpg differ
diff --git a/src/transfered/265.jpg b/src/transfered/265.jpg
new file mode 100644
index 0000000..b6c2e99
Binary files /dev/null and b/src/transfered/265.jpg differ
diff --git a/src/transfered/266.jpg b/src/transfered/266.jpg
new file mode 100644
index 0000000..d7b660f
Binary files /dev/null and b/src/transfered/266.jpg differ
diff --git a/src/transfered/267.jpg b/src/transfered/267.jpg
new file mode 100644
index 0000000..8013a9d
Binary files /dev/null and b/src/transfered/267.jpg differ
diff --git a/src/transfered/268.jpg b/src/transfered/268.jpg
new file mode 100644
index 0000000..f188802
Binary files /dev/null and b/src/transfered/268.jpg differ
diff --git a/src/transfered/269.jpg b/src/transfered/269.jpg
new file mode 100644
index 0000000..f45b412
Binary files /dev/null and b/src/transfered/269.jpg differ
diff --git a/src/transfered/27.jpg b/src/transfered/27.jpg
new file mode 100644
index 0000000..80d4107
Binary files /dev/null and b/src/transfered/27.jpg differ
diff --git a/src/transfered/270.jpg b/src/transfered/270.jpg
new file mode 100644
index 0000000..6e9f786
Binary files /dev/null and b/src/transfered/270.jpg differ
diff --git a/src/transfered/271.jpg b/src/transfered/271.jpg
new file mode 100644
index 0000000..a25a8f1
Binary files /dev/null and b/src/transfered/271.jpg differ
diff --git a/src/transfered/272.jpg b/src/transfered/272.jpg
new file mode 100644
index 0000000..65c4f5c
Binary files /dev/null and b/src/transfered/272.jpg differ
diff --git a/src/transfered/273.jpg b/src/transfered/273.jpg
new file mode 100644
index 0000000..9bf989e
Binary files /dev/null and b/src/transfered/273.jpg differ
diff --git a/src/transfered/274.jpg b/src/transfered/274.jpg
new file mode 100644
index 0000000..d3460ed
Binary files /dev/null and b/src/transfered/274.jpg differ
diff --git a/src/transfered/275.jpg b/src/transfered/275.jpg
new file mode 100644
index 0000000..fbe6083
Binary files /dev/null and b/src/transfered/275.jpg differ
diff --git a/src/transfered/276.jpg b/src/transfered/276.jpg
new file mode 100644
index 0000000..6f79127
Binary files /dev/null and b/src/transfered/276.jpg differ
diff --git a/src/transfered/277.jpg b/src/transfered/277.jpg
new file mode 100644
index 0000000..ca9b5bf
Binary files /dev/null and b/src/transfered/277.jpg differ
diff --git a/src/transfered/278.jpg b/src/transfered/278.jpg
new file mode 100644
index 0000000..224c703
Binary files /dev/null and b/src/transfered/278.jpg differ
diff --git a/src/transfered/279.jpg b/src/transfered/279.jpg
new file mode 100644
index 0000000..eec02e0
Binary files /dev/null and b/src/transfered/279.jpg differ
diff --git a/src/transfered/28.jpg b/src/transfered/28.jpg
new file mode 100644
index 0000000..f17aa69
Binary files /dev/null and b/src/transfered/28.jpg differ
diff --git a/src/transfered/280.jpg b/src/transfered/280.jpg
new file mode 100644
index 0000000..1930610
Binary files /dev/null and b/src/transfered/280.jpg differ
diff --git a/src/transfered/29.jpg b/src/transfered/29.jpg
new file mode 100644
index 0000000..d37dd88
Binary files /dev/null and b/src/transfered/29.jpg differ
diff --git a/src/transfered/3.jpg b/src/transfered/3.jpg
new file mode 100644
index 0000000..0b4caa0
Binary files /dev/null and b/src/transfered/3.jpg differ
diff --git a/src/transfered/30.jpg b/src/transfered/30.jpg
new file mode 100644
index 0000000..331c324
Binary files /dev/null and b/src/transfered/30.jpg differ
diff --git a/src/transfered/31.jpg b/src/transfered/31.jpg
new file mode 100644
index 0000000..e8c2b20
Binary files /dev/null and b/src/transfered/31.jpg differ
diff --git a/src/transfered/32.jpg b/src/transfered/32.jpg
new file mode 100644
index 0000000..d122ca2
Binary files /dev/null and b/src/transfered/32.jpg differ
diff --git a/src/transfered/33.jpg b/src/transfered/33.jpg
new file mode 100644
index 0000000..6a0ccf2
Binary files /dev/null and b/src/transfered/33.jpg differ
diff --git a/src/transfered/34.jpg b/src/transfered/34.jpg
new file mode 100644
index 0000000..2d7e217
Binary files /dev/null and b/src/transfered/34.jpg differ
diff --git a/src/transfered/35.jpg b/src/transfered/35.jpg
new file mode 100644
index 0000000..f1bf810
Binary files /dev/null and b/src/transfered/35.jpg differ
diff --git a/src/transfered/36.jpg b/src/transfered/36.jpg
new file mode 100644
index 0000000..937c499
Binary files /dev/null and b/src/transfered/36.jpg differ
diff --git a/src/transfered/37.jpg b/src/transfered/37.jpg
new file mode 100644
index 0000000..991e66d
Binary files /dev/null and b/src/transfered/37.jpg differ
diff --git a/src/transfered/38.jpg b/src/transfered/38.jpg
new file mode 100644
index 0000000..cda9758
Binary files /dev/null and b/src/transfered/38.jpg differ
diff --git a/src/transfered/39.jpg b/src/transfered/39.jpg
new file mode 100644
index 0000000..191105a
Binary files /dev/null and b/src/transfered/39.jpg differ
diff --git a/src/transfered/4.jpg b/src/transfered/4.jpg
new file mode 100644
index 0000000..f993823
Binary files /dev/null and b/src/transfered/4.jpg differ
diff --git a/src/transfered/40.jpg b/src/transfered/40.jpg
new file mode 100644
index 0000000..c7b4ee2
Binary files /dev/null and b/src/transfered/40.jpg differ
diff --git a/src/transfered/41.jpg b/src/transfered/41.jpg
new file mode 100644
index 0000000..6ca0c15
Binary files /dev/null and b/src/transfered/41.jpg differ
diff --git a/src/transfered/42.jpg b/src/transfered/42.jpg
new file mode 100644
index 0000000..dcaa34e
Binary files /dev/null and b/src/transfered/42.jpg differ
diff --git a/src/transfered/43.jpg b/src/transfered/43.jpg
new file mode 100644
index 0000000..f0dc3f0
Binary files /dev/null and b/src/transfered/43.jpg differ
diff --git a/src/transfered/44.jpg b/src/transfered/44.jpg
new file mode 100644
index 0000000..49177e7
Binary files /dev/null and b/src/transfered/44.jpg differ
diff --git a/src/transfered/45.jpg b/src/transfered/45.jpg
new file mode 100644
index 0000000..7280ece
Binary files /dev/null and b/src/transfered/45.jpg differ
diff --git a/src/transfered/46.jpg b/src/transfered/46.jpg
new file mode 100644
index 0000000..ed95dbc
Binary files /dev/null and b/src/transfered/46.jpg differ
diff --git a/src/transfered/47.jpg b/src/transfered/47.jpg
new file mode 100644
index 0000000..e517f86
Binary files /dev/null and b/src/transfered/47.jpg differ
diff --git a/src/transfered/48.jpg b/src/transfered/48.jpg
new file mode 100644
index 0000000..68174ca
Binary files /dev/null and b/src/transfered/48.jpg differ
diff --git a/src/transfered/49.jpg b/src/transfered/49.jpg
new file mode 100644
index 0000000..97e5884
Binary files /dev/null and b/src/transfered/49.jpg differ
diff --git a/src/transfered/5.jpg b/src/transfered/5.jpg
new file mode 100644
index 0000000..7c8928e
Binary files /dev/null and b/src/transfered/5.jpg differ
diff --git a/src/transfered/50.jpg b/src/transfered/50.jpg
new file mode 100644
index 0000000..303ea5c
Binary files /dev/null and b/src/transfered/50.jpg differ
diff --git a/src/transfered/51.jpg b/src/transfered/51.jpg
new file mode 100644
index 0000000..d697ef2
Binary files /dev/null and b/src/transfered/51.jpg differ
diff --git a/src/transfered/52.jpg b/src/transfered/52.jpg
new file mode 100644
index 0000000..ccab411
Binary files /dev/null and b/src/transfered/52.jpg differ
diff --git a/src/transfered/53.jpg b/src/transfered/53.jpg
new file mode 100644
index 0000000..cc9b3f7
Binary files /dev/null and b/src/transfered/53.jpg differ
diff --git a/src/transfered/54.jpg b/src/transfered/54.jpg
new file mode 100644
index 0000000..11c700e
Binary files /dev/null and b/src/transfered/54.jpg differ
diff --git a/src/transfered/55.jpg b/src/transfered/55.jpg
new file mode 100644
index 0000000..6f1131d
Binary files /dev/null and b/src/transfered/55.jpg differ
diff --git a/src/transfered/56.jpg b/src/transfered/56.jpg
new file mode 100644
index 0000000..594b62c
Binary files /dev/null and b/src/transfered/56.jpg differ
diff --git a/src/transfered/57.jpg b/src/transfered/57.jpg
new file mode 100644
index 0000000..b30d0d4
Binary files /dev/null and b/src/transfered/57.jpg differ
diff --git a/src/transfered/58.jpg b/src/transfered/58.jpg
new file mode 100644
index 0000000..ccafbf6
Binary files /dev/null and b/src/transfered/58.jpg differ
diff --git a/src/transfered/59.jpg b/src/transfered/59.jpg
new file mode 100644
index 0000000..e3b5d0c
Binary files /dev/null and b/src/transfered/59.jpg differ
diff --git a/src/transfered/6.jpg b/src/transfered/6.jpg
new file mode 100644
index 0000000..5189bac
Binary files /dev/null and b/src/transfered/6.jpg differ
diff --git a/src/transfered/60.jpg b/src/transfered/60.jpg
new file mode 100644
index 0000000..7c5a5ca
Binary files /dev/null and b/src/transfered/60.jpg differ
diff --git a/src/transfered/61.jpg b/src/transfered/61.jpg
new file mode 100644
index 0000000..120b15a
Binary files /dev/null and b/src/transfered/61.jpg differ
diff --git a/src/transfered/62.jpg b/src/transfered/62.jpg
new file mode 100644
index 0000000..d8bacd5
Binary files /dev/null and b/src/transfered/62.jpg differ
diff --git a/src/transfered/63.jpg b/src/transfered/63.jpg
new file mode 100644
index 0000000..1fd4849
Binary files /dev/null and b/src/transfered/63.jpg differ
diff --git a/src/transfered/64.jpg b/src/transfered/64.jpg
new file mode 100644
index 0000000..99e7a85
Binary files /dev/null and b/src/transfered/64.jpg differ
diff --git a/src/transfered/65.jpg b/src/transfered/65.jpg
new file mode 100644
index 0000000..fa004e1
Binary files /dev/null and b/src/transfered/65.jpg differ
diff --git a/src/transfered/66.jpg b/src/transfered/66.jpg
new file mode 100644
index 0000000..5a7ab75
Binary files /dev/null and b/src/transfered/66.jpg differ
diff --git a/src/transfered/67.jpg b/src/transfered/67.jpg
new file mode 100644
index 0000000..8a9815f
Binary files /dev/null and b/src/transfered/67.jpg differ
diff --git a/src/transfered/68.jpg b/src/transfered/68.jpg
new file mode 100644
index 0000000..a130a05
Binary files /dev/null and b/src/transfered/68.jpg differ
diff --git a/src/transfered/69.jpg b/src/transfered/69.jpg
new file mode 100644
index 0000000..dfd9f57
Binary files /dev/null and b/src/transfered/69.jpg differ
diff --git a/src/transfered/7.jpg b/src/transfered/7.jpg
new file mode 100644
index 0000000..6d2a1cd
Binary files /dev/null and b/src/transfered/7.jpg differ
diff --git a/src/transfered/70.jpg b/src/transfered/70.jpg
new file mode 100644
index 0000000..11ce7a0
Binary files /dev/null and b/src/transfered/70.jpg differ
diff --git a/src/transfered/71.jpg b/src/transfered/71.jpg
new file mode 100644
index 0000000..d60e7b5
Binary files /dev/null and b/src/transfered/71.jpg differ
diff --git a/src/transfered/72.jpg b/src/transfered/72.jpg
new file mode 100644
index 0000000..653e69d
Binary files /dev/null and b/src/transfered/72.jpg differ
diff --git a/src/transfered/73.jpg b/src/transfered/73.jpg
new file mode 100644
index 0000000..35382f0
Binary files /dev/null and b/src/transfered/73.jpg differ
diff --git a/src/transfered/74.jpg b/src/transfered/74.jpg
new file mode 100644
index 0000000..a0d90ef
Binary files /dev/null and b/src/transfered/74.jpg differ
diff --git a/src/transfered/75.jpg b/src/transfered/75.jpg
new file mode 100644
index 0000000..cc51965
Binary files /dev/null and b/src/transfered/75.jpg differ
diff --git a/src/transfered/76.jpg b/src/transfered/76.jpg
new file mode 100644
index 0000000..aff6e0d
Binary files /dev/null and b/src/transfered/76.jpg differ
diff --git a/src/transfered/77.jpg b/src/transfered/77.jpg
new file mode 100644
index 0000000..6da63cb
Binary files /dev/null and b/src/transfered/77.jpg differ
diff --git a/src/transfered/78.jpg b/src/transfered/78.jpg
new file mode 100644
index 0000000..ebdeba0
Binary files /dev/null and b/src/transfered/78.jpg differ
diff --git a/src/transfered/79.jpg b/src/transfered/79.jpg
new file mode 100644
index 0000000..4007397
Binary files /dev/null and b/src/transfered/79.jpg differ
diff --git a/src/transfered/8.jpg b/src/transfered/8.jpg
new file mode 100644
index 0000000..6fc83c2
Binary files /dev/null and b/src/transfered/8.jpg differ
diff --git a/src/transfered/80.jpg b/src/transfered/80.jpg
new file mode 100644
index 0000000..8e0b093
Binary files /dev/null and b/src/transfered/80.jpg differ
diff --git a/src/transfered/81.jpg b/src/transfered/81.jpg
new file mode 100644
index 0000000..64dbfb3
Binary files /dev/null and b/src/transfered/81.jpg differ
diff --git a/src/transfered/82.jpg b/src/transfered/82.jpg
new file mode 100644
index 0000000..cf3f503
Binary files /dev/null and b/src/transfered/82.jpg differ
diff --git a/src/transfered/83.jpg b/src/transfered/83.jpg
new file mode 100644
index 0000000..8b37ef8
Binary files /dev/null and b/src/transfered/83.jpg differ
diff --git a/src/transfered/84.jpg b/src/transfered/84.jpg
new file mode 100644
index 0000000..1849074
Binary files /dev/null and b/src/transfered/84.jpg differ
diff --git a/src/transfered/85.jpg b/src/transfered/85.jpg
new file mode 100644
index 0000000..f362a32
Binary files /dev/null and b/src/transfered/85.jpg differ
diff --git a/src/transfered/86.jpg b/src/transfered/86.jpg
new file mode 100644
index 0000000..4888f75
Binary files /dev/null and b/src/transfered/86.jpg differ
diff --git a/src/transfered/87.jpg b/src/transfered/87.jpg
new file mode 100644
index 0000000..d7a166d
Binary files /dev/null and b/src/transfered/87.jpg differ
diff --git a/src/transfered/88.jpg b/src/transfered/88.jpg
new file mode 100644
index 0000000..619f7aa
Binary files /dev/null and b/src/transfered/88.jpg differ
diff --git a/src/transfered/89.jpg b/src/transfered/89.jpg
new file mode 100644
index 0000000..7cbca5e
Binary files /dev/null and b/src/transfered/89.jpg differ
diff --git a/src/transfered/9.jpg b/src/transfered/9.jpg
new file mode 100644
index 0000000..c6be83e
Binary files /dev/null and b/src/transfered/9.jpg differ
diff --git a/src/transfered/90.jpg b/src/transfered/90.jpg
new file mode 100644
index 0000000..c417d60
Binary files /dev/null and b/src/transfered/90.jpg differ
diff --git a/src/transfered/91.jpg b/src/transfered/91.jpg
new file mode 100644
index 0000000..11a6868
Binary files /dev/null and b/src/transfered/91.jpg differ
diff --git a/src/transfered/92.jpg b/src/transfered/92.jpg
new file mode 100644
index 0000000..dc44bf0
Binary files /dev/null and b/src/transfered/92.jpg differ
diff --git a/src/transfered/93.jpg b/src/transfered/93.jpg
new file mode 100644
index 0000000..385954e
Binary files /dev/null and b/src/transfered/93.jpg differ
diff --git a/src/transfered/94.jpg b/src/transfered/94.jpg
new file mode 100644
index 0000000..6f7b1e1
Binary files /dev/null and b/src/transfered/94.jpg differ
diff --git a/src/transfered/95.jpg b/src/transfered/95.jpg
new file mode 100644
index 0000000..4e280ee
Binary files /dev/null and b/src/transfered/95.jpg differ
diff --git a/src/transfered/96.jpg b/src/transfered/96.jpg
new file mode 100644
index 0000000..0700a37
Binary files /dev/null and b/src/transfered/96.jpg differ
diff --git a/src/transfered/97.jpg b/src/transfered/97.jpg
new file mode 100644
index 0000000..952c0ed
Binary files /dev/null and b/src/transfered/97.jpg differ
diff --git a/src/transfered/98.jpg b/src/transfered/98.jpg
new file mode 100644
index 0000000..71cae60
Binary files /dev/null and b/src/transfered/98.jpg differ
diff --git a/src/transfered/99.jpg b/src/transfered/99.jpg
new file mode 100644
index 0000000..c12288f
Binary files /dev/null and b/src/transfered/99.jpg differ
diff --git a/src/video.py b/src/video.py
new file mode 100644
index 0000000..55f9a8e
--- /dev/null
+++ b/src/video.py
@@ -0,0 +1,53 @@
+import os
+
+import cv2
+
+from transfer import stylize
+
+# 保存图片
+def save_image(image, addr, num):
+ address = addr + str(num) + '.jpg'
+ image = cv2.resize(image, (512, 512))
+ cv2.imwrite(address, image)
+
+
+def run(original_path, style_type):
+ # 获取初始和目标地址
+ # original_path = "./original/hangzhou.mp4"
+ post_path = "result.avi"
+
+ videoCapture = cv2.VideoCapture(original_path)
+ # 把视频转换为图片
+ success, frame = videoCapture.read()
+ i = 0
+ while success:
+ i = i + 1
+ save_image(frame, './frames/\\', i)
+ success, frame = videoCapture.read()
+
+ path = './frames/'
+ trans = './transfered/'
+ img_list = os.listdir(path)
+ get_key = lambda i: int(i.split('.')[0])
+ img_sort = sorted(img_list, key=get_key)
+ fps = 24
+ size = (512, 512)
+
+ video = cv2.VideoWriter(post_path, cv2.VideoWriter_fourcc(*'DIVX'), fps, size)
+ # 选取风格
+ if style_type == 1:
+ style_path = "style.pth"
+ elif style_type == 2:
+ style_path = "style2.pth"
+ # 进行风格转换并写入新视频
+ for item in img_sort:
+ if item.endswith('.jpg'):
+ item2 = trans + item
+ item = path + item
+ stylize(item, item2, style_path)
+ img = cv2.imread(item2)
+ video.write(img)
+ video.release()
+ cv2.destroyAllWindows()
+
+
diff --git a/项目报告.docx b/项目报告.docx
new file mode 100644
index 0000000..d9e58c2
Binary files /dev/null and b/项目报告.docx differ