commit 4cd447c9936a5b72cea06bf874fc2fe22bcdb57c Author: momo Date: Sun Sep 26 15:51:17 2021 +0800 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/DIP182002108.APS b/DIP182002108.APS new file mode 100644 index 0000000..f68fab1 Binary files /dev/null and b/DIP182002108.APS differ diff --git a/DIP182002108.cpp b/DIP182002108.cpp new file mode 100644 index 0000000..80ade27 --- /dev/null +++ b/DIP182002108.cpp @@ -0,0 +1,108 @@ + +// DIP182002108.cpp: 定义应用程序的类行为。 +// + +#include "pch.h" +#include "framework.h" +#include "DIP182002108.h" +#include "DIP182002108Dlg.h" +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CDIP182002108App + +BEGIN_MESSAGE_MAP(CDIP182002108App, CWinApp) + ON_COMMAND(ID_HELP, &CWinApp::OnHelp) +END_MESSAGE_MAP() + + +// CDIP182002108App 构造 + +CDIP182002108App::CDIP182002108App() +{ + // 支持重新启动管理器 + m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; + + // TODO: 在此处添加构造代码, + // 将所有重要的初始化放置在 InitInstance 中 +} + + +// 唯一的 CDIP182002108App 对象 + +CDIP182002108App theApp; + + +// CDIP182002108App 初始化 + +BOOL CDIP182002108App::InitInstance() +{ + // 如果一个运行在 Windows XP 上的应用程序清单指定要 + // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, + //则需要 InitCommonControlsEx()。 否则,将无法创建窗口。 + INITCOMMONCONTROLSEX InitCtrls; + InitCtrls.dwSize = sizeof(InitCtrls); + // 将它设置为包括所有要在应用程序中使用的 + // 公共控件类。 + InitCtrls.dwICC = ICC_WIN95_CLASSES; + InitCommonControlsEx(&InitCtrls); + + CWinApp::InitInstance(); + + + AfxEnableControlContainer(); + + // 创建 shell 管理器,以防对话框包含 + // 任何 shell 树视图控件或 shell 列表视图控件。 + CShellManager *pShellManager = new CShellManager; + + // 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题 + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); + + // 标准初始化 + // 如果未使用这些功能并希望减小 + // 最终可执行文件的大小,则应移除下列 + // 不需要的特定初始化例程 + // 更改用于存储设置的注册表项 + // TODO: 应适当修改该字符串, + // 例如修改为公司或组织名 + SetRegistryKey(_T("应用程序向导生成的本地应用程序")); + + CDIP182002108Dlg dlg; + m_pMainWnd = &dlg; + INT_PTR nResponse = dlg.DoModal(); + if (nResponse == IDOK) + { + // TODO: 在此放置处理何时用 + // “确定”来关闭对话框的代码 + } + else if (nResponse == IDCANCEL) + { + // TODO: 在此放置处理何时用 + // “取消”来关闭对话框的代码 + } + else if (nResponse == -1) + { + TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n"); + TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n"); + } + + // 删除上面创建的 shell 管理器。 + if (pShellManager != nullptr) + { + delete pShellManager; + } + +#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS) + ControlBarCleanUp(); +#endif + + // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, + // 而不是启动应用程序的消息泵。 + return FALSE; +} + diff --git a/DIP182002108.h b/DIP182002108.h new file mode 100644 index 0000000..5602bfc --- /dev/null +++ b/DIP182002108.h @@ -0,0 +1,32 @@ + +// DIP182002108.h: PROJECT_NAME 应用程序的主头文件 +// + +#pragma once + +#ifndef __AFXWIN_H__ + #error "在包含此文件之前包含 'pch.h' 以生成 PCH" +#endif + +#include "resource.h" // 主符号 + + +// CDIP182002108App: +// 有关此类的实现,请参阅 DIP182002108.cpp +// + +class CDIP182002108App : public CWinApp +{ +public: + CDIP182002108App(); + +// 重写 +public: + virtual BOOL InitInstance(); + +// 实现 + + DECLARE_MESSAGE_MAP() +}; + +extern CDIP182002108App theApp; diff --git a/DIP182002108.rc b/DIP182002108.rc new file mode 100644 index 0000000..99695e0 Binary files /dev/null and b/DIP182002108.rc differ diff --git a/DIP182002108.vcxproj b/DIP182002108.vcxproj new file mode 100644 index 0000000..e6e517f --- /dev/null +++ b/DIP182002108.vcxproj @@ -0,0 +1,218 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + {E084212D-1AA9-4DA5-A701-611037AEFA26} + MFCProj + DIP182002108 + 10.0 + + + + Application + true + v142 + Unicode + Dynamic + + + Application + false + v142 + true + Unicode + Dynamic + + + Application + true + v142 + Unicode + Dynamic + + + Application + false + v142 + true + Unicode + Dynamic + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + true + WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + true + _WINDOWS;_DEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + true + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + true + true + true + _WINDOWS;NDEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DIP182002108.vcxproj.filters b/DIP182002108.vcxproj.filters new file mode 100644 index 0000000..e4554c2 --- /dev/null +++ b/DIP182002108.vcxproj.filters @@ -0,0 +1,63 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + + + 源文件 + + + 源文件 + + + 源文件 + + + + + 资源文件 + + + + + 资源文件 + + + + + 资源文件 + + + \ No newline at end of file diff --git a/DIP182002108.vcxproj.user b/DIP182002108.vcxproj.user new file mode 100644 index 0000000..6b71066 --- /dev/null +++ b/DIP182002108.vcxproj.user @@ -0,0 +1,6 @@ + + + + DIP182002108.rc + + \ No newline at end of file diff --git a/DIP182002108Dlg.cpp b/DIP182002108Dlg.cpp new file mode 100644 index 0000000..5652e44 --- /dev/null +++ b/DIP182002108Dlg.cpp @@ -0,0 +1,1124 @@ + +// DIP182002108Dlg.cpp: 实现文件 +// + +#include "pch.h" +#include "framework.h" +#include "DIP182002108.h" +#include "DIP182002108Dlg.h" +#include "afxdialogex.h" +#include +#include +using namespace cv; + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// 用于应用程序“关于”菜单项的 CAboutDlg 对话框 + +class CAboutDlg : public CDialogEx +{ +public: + CAboutDlg(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_ABOUTBOX }; +#endif + + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + +// 实现 +protected: + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) +{ +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) +END_MESSAGE_MAP() + + +// CDIP182002108Dlg 对话框 + + + +CDIP182002108Dlg::CDIP182002108Dlg(CWnd* pParent /*=nullptr*/) + : CDialogEx(IDD_DIP182002108_DIALOG, pParent) + , m_width(0) + , m_height(0) + , m_angle(0) + , m_shearRatio(0) + , m_a(0) + , m_b(0) + , m_ga(0) + , m_gb(0) + , m_pseudoMode(0) + , m_kemalSize(0) + , m_filterType(0) + , m_sharpType(0) + , m_th(0) + , m_kernalSize(0) + , m_bias(0) + , m_seedX(0) + , m_seedY(0) + , m_regionTh(0) + , m_fSeedX(0) + , m_fSeedY(0) + , m_fTh(0) + , m_morphType(0) + , m_morphSize(0) + , m_colorType(0) +{ + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); +} + +void CDIP182002108Dlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_WIDTH, m_width); + DDX_Text(pDX, IDC_HEIGHT, m_height); + DDX_Text(pDX, IDC_ANGLE, m_angle); + DDX_Text(pDX, IDC_EDIT1, m_shearRatio); + DDX_Text(pDX, IDC_EDIT2, m_a); + DDX_Text(pDX, IDC_EDIT3, m_b); + DDX_Text(pDX, IDC_EDIT4, m_ga); + DDX_Text(pDX, IDC_EDIT5, m_gb); + DDX_Radio(pDX, IDC_RADIO1, m_pseudoMode); + DDX_Text(pDX, IDC_EDIT6, m_kemalSize); + DDX_Radio(pDX, IDC_RADIO3, m_filterType); + DDX_Radio(pDX, IDC_RADIO6, m_sharpType); + DDX_Text(pDX, IDC_EDIT7, m_th); + DDX_Text(pDX, IDC_EDIT8, m_kernalSize); + DDX_Text(pDX, IDC_EDIT9, m_bias); + DDX_Text(pDX, IDC_EDIT10, m_seedX); + DDX_Text(pDX, IDC_EDIT11, m_seedY); + DDX_Text(pDX, IDC_EDIT12, m_regionTh); + DDX_Text(pDX, IDC_EDIT13, m_fSeedX); + DDX_Text(pDX, IDC_EDIT14, m_fSeedY); + DDX_Text(pDX, IDC_EDIT15, m_fTh); + DDX_Radio(pDX, IDC_RADIO9, m_morphType); + DDX_Text(pDX, IDC_EDIT18, m_morphSize); + DDX_Radio(pDX, IDC_RADIO12, m_colorType); +} + +BEGIN_MESSAGE_MAP(CDIP182002108Dlg, CDialogEx) + ON_WM_SYSCOMMAND() + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDC_BUTTON1, &CDIP182002108Dlg::OnBnClickedButton1) + ON_BN_CLICKED(IDC_OPENVIDEO, &CDIP182002108Dlg::OnBnClickedOpenvideo) + ON_BN_CLICKED(IDC_BUTTON2, &CDIP182002108Dlg::OnBnClickedButton2) + ON_BN_CLICKED(IDC_ROTATE, &CDIP182002108Dlg::OnBnClickedRotate) + ON_BN_CLICKED(IDC_HSHEAR, &CDIP182002108Dlg::OnBnClickedHshear) + ON_BN_CLICKED(IDC_VSHEAR, &CDIP182002108Dlg::OnBnClickedVshear) + ON_BN_CLICKED(IDC_LINEAR, &CDIP182002108Dlg::OnBnClickedLinear) + ON_BN_CLICKED(IDC_NONLINEAR, &CDIP182002108Dlg::OnBnClickedNonlinear) + ON_BN_CLICKED(IDC_HISTEQ, &CDIP182002108Dlg::OnBnClickedHisteq) + ON_BN_CLICKED(IDC_PSEUDO, &CDIP182002108Dlg::OnBnClickedPseudo) + ON_BN_CLICKED(IDC_SMOOTH, &CDIP182002108Dlg::OnBnClickedSmooth) + ON_BN_CLICKED(IDC_SHARP, &CDIP182002108Dlg::OnBnClickedSharp) + ON_BN_CLICKED(IDC_THRE, &CDIP182002108Dlg::OnBnClickedThre) +// ON_BN_CLICKED(IDC_BUTTON4, &CDIP182002108Dlg::OnBnClickedButton4) +ON_BN_CLICKED(IDC_ADTHRE, &CDIP182002108Dlg::OnBnClickedAdthre) +ON_BN_CLICKED(IDC_REGOINGROW, &CDIP182002108Dlg::OnBnClickedRegoingrow) +ON_BN_CLICKED(IDC_BUTTON3, &CDIP182002108Dlg::OnBnClickedButton3) +ON_BN_CLICKED(IDC_ERODE, &CDIP182002108Dlg::OnBnClickedErode) +ON_BN_CLICKED(IDC_DILATE, &CDIP182002108Dlg::OnBnClickedDilate) +ON_BN_CLICKED(IDC_MORPHOPEN, &CDIP182002108Dlg::OnBnClickedMorphopen) +ON_BN_CLICKED(IDC_MORPHCLOSE, &CDIP182002108Dlg::OnBnClickedMorphclose) +//ON_BN_CLICKED(IDC_BUTTON4, &CDIP182002108Dlg::OnBnClickedButton4) +//ON_BN_CLICKED(IDC_TOHSV, &CDIP182002108Dlg::OnBnClickedTohsv) +ON_BN_CLICKED(IDC_COLOR, &CDIP182002108Dlg::OnBnClickedColor) +ON_BN_CLICKED(IDC_BUTTON9, &CDIP182002108Dlg::OnBnClickedButton9) +END_MESSAGE_MAP() + + +// CDIP182002108Dlg 消息处理程序 + +BOOL CDIP182002108Dlg::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // 将“关于...”菜单项添加到系统菜单中。 + + // IDM_ABOUTBOX 必须在系统命令范围内。 + ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); + ASSERT(IDM_ABOUTBOX < 0xF000); + + CMenu* pSysMenu = GetSystemMenu(FALSE); + if (pSysMenu != nullptr) + { + BOOL bNameValid; + CString strAboutMenu; + bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); + ASSERT(bNameValid); + if (!strAboutMenu.IsEmpty()) + { + pSysMenu->AppendMenu(MF_SEPARATOR); + pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); + } + } + + // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 + // 执行此操作 + SetIcon(m_hIcon, TRUE); // 设置大图标 + SetIcon(m_hIcon, FALSE); // 设置小图标 + + // TODO: 在此添加额外的初始化代码 + + cv::namedWindow("view"); + HWND hWnd = (HWND)cvGetWindowHandle("view"); + HWND hParent = ::GetParent(hWnd); + + ::SetParent(hWnd, GetDlgItem(IDC_PIC)->m_hWnd); + ::ShowWindow(hParent, SW_HIDE); + + return TRUE; // 除非将焦点设置到控件,否则返回 TRUE +} + +void CDIP182002108Dlg::OnSysCommand(UINT nID, LPARAM lParam) +{ + if ((nID & 0xFFF0) == IDM_ABOUTBOX) + { + CAboutDlg dlgAbout; + dlgAbout.DoModal(); + } + else + { + CDialogEx::OnSysCommand(nID, lParam); + } +} + +// 如果向对话框添加最小化按钮,则需要下面的代码 +// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, +// 这将由框架自动完成。 + +void CDIP182002108Dlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // 用于绘制的设备上下文 + + SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); + + // 使图标在工作区矩形中居中 + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // 绘制图标 + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialogEx::OnPaint(); + } +} + +//当用户拖动最小化窗口时系统调用此函数取得光标 +//显示。 +HCURSOR CDIP182002108Dlg::OnQueryDragIcon() +{ + return static_cast(m_hIcon); +} + + + +void CDIP182002108Dlg::OnBnClickedButton1() +{ + // TODO: 在此添加控件通知处理程序代码 + + + + CFileDialog dlg(TRUE, _T("*.jpg"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, _T("Image files(*.bmp,*.jpg)|*.bmp;*.jpg|All files(*.*)|*.*|"), NULL); + dlg.m_ofn.lpstrTitle = _T("打开图片"); + if (dlg.DoModal() != IDOK) { + return; + } + CString filePath = dlg.GetPathName(); + std::string sFileName = (CStringA)filePath; + + + src = imread(sFileName); + + if (src.empty()) { + AfxMessageBox(_T("图像读取错误!")); + return; + } + else { + CRect rect; + GetDlgItem(IDC_PIC)->GetWindowRect(&rect); + Mat img; + resize(src, img, Size(rect.Width(), rect.Height())); + imshow("view", img); + } +} + + +void CDIP182002108Dlg::OnBnClickedOpenvideo() +{ + // TODO: 在此添加控件通知处理程序代码 + + CFileDialog dlg(TRUE, _T("*.avi"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, _T("Videos files(*.avi)|*.avi|All files(*.*)|*.*|"), NULL); + dlg.m_ofn.lpstrTitle = _T("打开视频"); + if (dlg.DoModal() != IDOK) { + return; + } + CString filePath = dlg.GetPathName(); + std::string sFileName = (CStringA)filePath; + + VideoCapture capture; + int re = capture.open(sFileName); + + /* + int re = capture.open(0); //打开摄像头 + int re = capture.open(“网站”); //打开网络视频 + */ + + if (!re) { + AfxMessageBox(_T("视频读取错误!")); + return; + } + + CRect rect; + GetDlgItem(IDC_PIC)->GetWindowRect(&rect); + Mat img; + Mat frame; + + while (true) + { + capture >> frame; + if (frame.empty()) { + return; + } + else { + resize(frame, img, Size(rect.Width(), rect.Height())); + imshow("view", frame); + waitKey(30); + } + } +} + +void CDIP182002108Dlg::OnBnClickedButton2() +{ + // TODO: 在此添加控件通知处理程序代码 + + UpdateData(TRUE); + + Mat dst; + if (src.data == NULL) { + AfxMessageBox(_T("没有图片资源!")); + } + else if ((m_width == 0) | (m_height == 0)) { + AfxMessageBox(_T("缩放尺寸不能为0!")); + } + else { + resize(src, dst, Size(m_width, m_height)); + imshow("resize", dst); + } + +} + + +void CDIP182002108Dlg::OnBnClickedRotate() +{ + // TODO: 在此添加控件通知处理程序代码 + UpdateData(TRUE); + + + if (src.data == NULL) { + AfxMessageBox(_T("没有图片资源!")); + } + else + { + Mat dst; + Mat rot_mat(2, 3, CV_32FC1); //旋转矩阵 + + //计算旋转后的画布大小 + double sin_value = sin(m_angle * CV_PI / 180); + double cos_value = cos(m_angle * CV_PI / 180); + int width = src.cols; + int height = src.rows; + int rotate_width = (int)(height * fabs(sin_value) + width * fabs(cos_value)); + int rotate_height = (int)(width * fabs(sin_value) + height * fabs(cos_value)); + + + //计算旋转矩阵 + Point center = Point(src.cols / 2, src.rows / 2); + double angel = m_angle; + double scale = 1; //缩放比例 + rot_mat = getRotationMatrix2D(center, angel, scale); + + //计算平移量 + rot_mat.at(0, 2) += (rotate_width - width) / 2; + rot_mat.at(1, 2) += (rotate_height - height) / 2; + + //仿射变换 旋转 + warpAffine(src, dst, rot_mat, Size(rotate_width, rotate_height)); + + + imshow("rotate", dst); + } +} + + +void CDIP182002108Dlg::OnBnClickedHshear() +{ + // TODO: 在此添加控件通知处理程序代码 + + UpdateData(TRUE); + + if (src.data == NULL) { + AfxMessageBox(_T("没有图片资源!")); + } + else + { + Mat dst; + Mat hShear_mat(2, 3, CV_32FC1); //水平错切矩阵 + Point2f srcPoints[3]; //原图像中的三个点 + Point2f dstPoints[3]; //目标图像中的三个点 + + srcPoints[0] = Point2f(0, 0); //左上角的点 + srcPoints[1] = Point2f(0, src.rows); //左下角 + srcPoints[2] = Point2f(src.cols, 0); //右上角 + + if (m_shearRatio >= 0) { + dstPoints[0] = Point2f(src.rows * m_shearRatio, 0); //左上角 + dstPoints[1] = Point2f(0, src.rows); //左下角 + dstPoints[2] = Point2f(src.cols + src.rows * m_shearRatio, 0);//右上角 + } + else { + dstPoints[0] = Point2f(0, 0); // + dstPoints[1] = Point2f(src.cols*(-m_shearRatio), src.rows); + dstPoints[2] = Point2f(src.cols, 0); + } + + hShear_mat = getAffineTransform(srcPoints, dstPoints); //三个点计算变换矩阵 + + //变换后的画布大小 + int dst_width = src.cols + src.rows * fabs(m_shearRatio); + int dst_height = src.rows; + + warpAffine(src, dst, hShear_mat, Size(dst_width, dst_height)); + + imshow("hshear", dst); + } +} + + +void CDIP182002108Dlg::OnBnClickedVshear() +{ + // TODO: 在此添加控件通知处理程序代码 + UpdateData(TRUE); + + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + else + { + Mat dst; + Mat hShear_mat(2, 3, CV_32FC1); //水平错切矩阵 + Point2f srcPoints[3]; //原图像中的三个点 + Point2f dstPoints[3]; //目标图像中的三个点 + + srcPoints[0] = Point2f(0, 0); //左上角的点 + srcPoints[1] = Point2f(0, src.rows); //左下角 + srcPoints[2] = Point2f(src.cols, 0); //右上角 + + if (m_shearRatio >= 0) { + dstPoints[0] = Point2f(0, 0); //左上角 + dstPoints[1] = Point2f(0, src.rows); //左下角 + dstPoints[2] = Point2f(src.cols, src.cols * m_shearRatio);//右上角 + } + else { + dstPoints[0] = Point2f(0, src.cols * (-m_shearRatio)); + dstPoints[1] = Point2f(0, src.rows + src.cols * (-m_shearRatio)); + dstPoints[2] = Point2f(src.cols, 0); + } + hShear_mat = getAffineTransform(srcPoints, dstPoints); //三个点计算变换矩阵 + + //变换后的画布大小 + int dst_width = src.cols; + int dst_height = src.rows + src.cols * fabs(m_shearRatio); + + warpAffine(src, dst, hShear_mat, Size(dst_width, dst_height)); + imshow("vshear", dst); + } +} + + +void CDIP182002108Dlg::OnBnClickedLinear() +{ + // TODO: 在此添加控件通知处理程序代码 + + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + if (m_a < 0 || m_b>255 || m_ga < 0 || m_gb>255) + { + AfxMessageBox(_T("灰度参数范围有误!")); + return; + } + + Mat g_src, dst; + cvtColor(src, g_src, CV_BGR2GRAY); + dst.create(src.size(), g_src.type()); + + int tmp; + for (int i = 0; i < g_src.rows; i++) + { + for (int j = 0; j < g_src.cols; j++) + { + tmp = g_src.at(i, j); + if (tmp < m_a) + { + dst.at(i, j) = tmp * m_ga / m_a; + } + else if (tmp < m_b) + { + dst.at(i, j) = (tmp - m_a) * (m_gb - m_ga) / (m_b - m_a) + m_ga; + } + else { + dst.at(i, j) = (tmp - m_gb) * (255 - m_gb) / (255 - m_b) + m_gb; + } + } + } + + imshow("线性对比度展宽", dst); +} + + +void CDIP182002108Dlg::OnBnClickedNonlinear() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + + Mat g_src, dst; + cvtColor(src, g_src, CV_BGR2GRAY); + dst.create(src.size(), g_src.type()); + + int tmp; + for (int i = 0; i < g_src.rows; i++) + { + for (int j = 0; j < g_src.cols; j++) + { + tmp = g_src.at(i, j); + dst.at(i, j) = tmp * log10((float)(1 + tmp)); + } + } + + imshow("非线性动态范围调整", dst); +} + + +void CDIP182002108Dlg::OnBnClickedHisteq() +{ + // TODO: 在此添加控件通知处理程序代码 + + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + + Mat g_src, dst; + cvtColor(src, g_src, CV_BGR2GRAY); + dst.create(src.size(), g_src.type()); + + equalizeHist(g_src, dst); + + imshow("直方图均衡",dst); +} + + +void CDIP182002108Dlg::OnBnClickedPseudo() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + + Mat g_src, dst; + cvtColor(src, g_src, CV_BGR2GRAY); + dst.create(src.size(), CV_8UC3); + + int tmp; + switch (m_pseudoMode) + { + case 0 : + for (int i = 0; i < g_src.rows; i++) + { + for (int j = 0; j < g_src.cols; j++) + { + tmp = g_src.at(i, j); + if (tmp < 64) + { + dst.at(i, j)[0] = 255; + dst.at(i, j)[1] = 0; + dst.at(i, j)[2] = 0; //蓝色 + } + else if (tmp < 128) + { + dst.at(i, j)[0] = 0; + dst.at(i, j)[1] = 255; + dst.at(i, j)[2] = 0; //绿色 + } + else if (tmp < 192) + { + dst.at(i, j)[0] = 0; + dst.at(i, j)[1] = 255; + dst.at(i, j)[2] = 255; //黄色 + } + else + { + dst.at(i, j)[0] = 0; + dst.at(i, j)[1] = 0; + dst.at(i, j)[2] = 255; //红色 + } + } + } + break; + case 1 : + for (int i = 0; i < g_src.rows; i++) + { + for (int j = 0; j < g_src.cols; j++) + { + tmp = g_src.at(i, j); + if (tmp < 64) + { + dst.at(i, j)[0] = 255; //蓝 + dst.at(i, j)[1] = tmp * 256 / 64; //绿 + dst.at(i, j)[2] = 0; //红 + } + else if (tmp < 128) + { + dst.at(i, j)[0] = (127 - tmp) * 4; + dst.at(i, j)[1] = 255; + dst.at(i, j)[2] = 0; + } + else if (tmp < 192) + { + dst.at(i, j)[0] = 0; + dst.at(i, j)[1] = 255; + dst.at(i, j)[2] = (tmp - 127) * 4; + } + else + { + dst.at(i, j)[0] = 0; + dst.at(i, j)[1] = (255 - tmp) * 4; + dst.at(i, j)[2] = 255; + } + } + } + break; + default: + break; + } + + imshow("伪彩色增强", dst); +} + + +void CDIP182002108Dlg::OnBnClickedSmooth() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + + if (m_kemalSize <= 0 || m_kemalSize%2==0) + { + AfxMessageBox(_T("窗口大小错误!")); + return; + } + + Mat g_src, dst; + cvtColor(src, g_src, CV_BGR2GRAY); + dst.create(src.size(), CV_8UC3); + + switch (m_filterType) + { + case 0: //均值滤波 + blur(g_src, dst, Size(m_kemalSize, m_kemalSize)); + imshow("均值滤波", dst); + break; + case 1: //中值滤波 + medianBlur(g_src, dst, m_kemalSize); + imshow("中值滤波", dst); + break; + case 2: //高斯滤波 + GaussianBlur(g_src, dst, Size(m_kemalSize, m_kemalSize), 0, 0); + imshow("高斯滤波", dst); + break; + default: + break; + } +} + + +void CDIP182002108Dlg::OnBnClickedSharp() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + + + Mat g_src, dst; + cvtColor(src, g_src, CV_BGR2GRAY); + dst.create(src.size(), CV_8UC3); + + Mat grad_x, grad_y, abs_grad_x, abs_grad_y, grad; + Mat kernal; + + switch (m_sharpType) + { + case 0: + //x方向梯度 + Sobel(g_src, grad_x, CV_16S, 1, 0, 3, 1, 0, BORDER_DEFAULT); + convertScaleAbs(grad_x, abs_grad_x); + //y方向梯度 + Sobel(g_src, grad_y, CV_16S, 1, 0, 3, 1, 0, BORDER_DEFAULT); + convertScaleAbs(grad_y, abs_grad_y); + //合并梯度 + addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst); + + imshow("Sobel", dst); + break; + case 1: + Laplacian(g_src, grad, CV_16S, 3, 1, 0, BORDER_DEFAULT); + convertScaleAbs(grad, dst); + + imshow("Laplacian", dst); + break; + case 2: + kernal = (Mat_(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); + filter2D(g_src, dst, CV_8UC1, kernal); + imshow("自定义Laplacian", dst); + break; + default: + break; + } +} + + +void CDIP182002108Dlg::OnBnClickedThre() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + + if (m_th<0||m_th>255) + { + AfxMessageBox(_T("阈值设定错误!")); + return; + } + + Mat g_src, dst; + cvtColor(src, g_src, CV_BGR2GRAY); + dst.create(src.size(), CV_8UC3); + + threshold(g_src, dst, m_th, 255, CV_THRESH_BINARY); + imshow("固定阈值", dst); +} + + + + + +void CDIP182002108Dlg::OnBnClickedAdthre() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + + if (m_kernalSize % 2 == 0) + { + m_kernalSize++; + } + + Mat g_src, dst; + cvtColor(src, g_src, CV_BGR2GRAY); + dst.create(src.size(), CV_8UC3); + + adaptiveThreshold(g_src, dst, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY, m_kernalSize, m_bias); + + imshow("动态阈值", dst); +} + + +void CDIP182002108Dlg::OnBnClickedRegoingrow() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + + if (m_seedX<0 || m_seedX>(src.rows - 1) || m_seedY<0 || m_seedY>(src.cols - 1)) + { + AfxMessageBox(_T("!")); + return; + } + + Mat g_src, dst; + cvtColor(src, g_src, CV_BGR2GRAY); + dst = Mat::zeros(g_src.size(), CV_8UC1); + + Point2i pt(m_seedY, m_seedX); //种子点 + int th = m_regionTh; + + Point2i ptGrowing; //待生长点坐标 + int nGrowlabel = 0; //标记是否过生长 + int nSrcValue = 0; //生长起点灰度 + int nCurValue = 0; //当前生长点的灰度值 + + int DIR[8][2] = { {-1,-1},{0,-1},{1,-1},{-1,0},{1,0},{-1,1},{0,1},{1,1} }; //8邻域 + + std::vector vcGrowPt; //生长点栈 + vcGrowPt.push_back(pt); //种子点入栈 + dst.at(pt.y, pt.x) = 255; + nSrcValue = g_src.at(pt.y, pt.x); //记录种子点的灰度值 + + while (!vcGrowPt.empty()) + { + pt = vcGrowPt.back(); //取生长点 + vcGrowPt.pop_back(); + + //判断8邻域点是否生长 + for (int i = 0; i < 8; i++) + { + ptGrowing.x = pt.x + DIR[i][0]; + ptGrowing.y = pt.y + DIR[i][1]; + + if (ptGrowing.x<0 || ptGrowing.x>(src.rows - 1) || ptGrowing.y<0 || ptGrowing.y>(src.cols - 1)) + { + continue; + } + nGrowlabel = dst.at(ptGrowing.y, ptGrowing.x); + if (nGrowlabel == 0) + { + nCurValue = g_src.at(ptGrowing.y, ptGrowing.x); + if (abs(nCurValue - nSrcValue) < th) + { + dst.at(ptGrowing.y, ptGrowing.x) = 255; //满足条件,设置为白色 + vcGrowPt.push_back(ptGrowing); //生长点入栈 + } + } + } + } + imshow("区域生长法", dst); + +} + + +void CDIP182002108Dlg::OnBnClickedButton3() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + + if (m_seedX<0 || m_seedX>(src.rows - 1) || m_seedY<0 || m_seedY>(src.cols - 1)) + { + AfxMessageBox(_T("!")); + return; + } + + Mat dst; + dst = src.clone(); + Point2i pt(m_fSeedY, m_fSeedX); //种子点 + int th = m_fTh; + Rect coomp; + floodFill(dst, pt, Scalar(255, 0, 255), &coomp, Scalar(th, th, th), Scalar(th, th, th)); + + imshow("漫水分割", dst); +} + + +void CDIP182002108Dlg::OnBnClickedErode() +{ + // TODO: 在此添加控件通知处理程序代码 + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + if (m_morphSize % 2 == 0) { + m_morphSize += 1; + } + else if (m_morphSize <= 0) + { + AfxMessageBox(_T("结构元尺寸不能小于零!")); + return; + } + Mat dst, g_src; + threshold(src, g_src, 125, 252, THRESH_BINARY); + int shape, kSize = m_morphSize; + //kSize = 2 * m_morphSize + 1; + switch (m_morphType) + { + case 0: + shape = MORPH_RECT; + break; + case 1: + shape = MORPH_ELLIPSE; + break; + case 2: + shape = MORPH_CROSS; + break; + default: + return; + break; + } + Mat kernel = getStructuringElement(shape, Size(kSize, kSize), Point(-1, -1)); + erode(g_src, dst, kernel); + imshow("腐蚀", dst); +} + + +void CDIP182002108Dlg::OnBnClickedDilate() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + if (m_morphSize % 2 == 0) { + m_morphSize += 1; + } + else if (m_morphSize <= 0) + { + AfxMessageBox(_T("结构元尺寸不能小于零!")); + return; + } + Mat dst, g_src; + threshold(src, g_src, 125, 252, THRESH_BINARY); + int shape, kSize = m_morphSize; + //kSize = 2 * m_morphSize + 1; + switch (m_morphType) + { + case 0: + shape = MORPH_RECT; + break; + case 1: + shape = MORPH_ELLIPSE; + break; + case 2: + shape = MORPH_CROSS; + break; + default: + return; + break; + } + Mat kernel = getStructuringElement(shape, Size(kSize, kSize), Point(-1, -1)); + dilate(g_src, dst, kernel); + imshow("膨胀", dst); +} + + +void CDIP182002108Dlg::OnBnClickedMorphopen() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + if (m_morphSize % 2 == 0) { + m_morphSize += 1; + } + else if (m_morphSize <= 0) + { + AfxMessageBox(_T("结构元尺寸不能小于零!")); + return; + } + Mat dst, g_src; + threshold(src, g_src, 125, 252, THRESH_BINARY); + int shape, kSize = m_morphSize; + //kSize = 2 * m_morphSize + 1; + switch (m_morphType) + { + case 0: + shape = MORPH_RECT; + break; + case 1: + shape = MORPH_ELLIPSE; + break; + case 2: + shape = MORPH_CROSS; + break; + default: + return; + break; + } + Mat kernel = getStructuringElement(shape, Size(kSize, kSize), Point(-1, -1)); + morphologyEx(g_src, dst, MORPH_OPEN, kernel); + imshow("开运算", dst); +} + + +void CDIP182002108Dlg::OnBnClickedMorphclose() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + if (m_morphSize % 2 == 0) { + m_morphSize += 1; + } + else if (m_morphSize <= 0) + { + AfxMessageBox(_T("结构元尺寸不能小于零!")); + return; + } + Mat dst,g_src; + threshold(src, g_src, 125, 252, THRESH_BINARY); + int shape, kSize = m_morphSize; + //kSize = 2 * m_morphSize + 1; + switch (m_morphType) + { + case 0: + shape = MORPH_RECT; + break; + case 1: + shape = MORPH_ELLIPSE; + break; + case 2: + shape = MORPH_CROSS; + break; + default: + return; + break; + } + Mat kernel = getStructuringElement(shape, Size(kSize, kSize), Point(-1, -1)); + morphologyEx(g_src, dst, MORPH_CLOSE, kernel); + imshow("闭运算", dst); +} + + + + +void CDIP182002108Dlg::OnBnClickedColor() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + UpdateData(TRUE); + Mat dst; + int code; + String caption = ""; + switch (m_colorType) + { + case 0: + code = COLOR_BGR2HSV; + caption = "BGR->HSV"; + break; + case 1: + code = COLOR_BGR2XYZ; + caption = "BGR->XYZ"; + break; + case 2: + code = COLOR_BGR2YCrCb; + caption = "BGR->YCrCb"; + default: + break; + } + cvtColor(src, dst, code); + imshow(caption, dst); +} + + +void CDIP182002108Dlg::OnBnClickedButton9() +{ + // TODO: 在此添加控件通知处理程序代码 + if (src.empty()) + { + AfxMessageBox(_T("没有图片资源!")); + return; + } + Mat dst = src.clone(); + + //灰度世界法 + std::vector imageRGB; + + //RGB三通道分离 + split(dst, imageRGB); + + //求原始图像的RGB分量的均值 + double R, G, B; + B = mean(imageRGB[0])[0]; + G = mean(imageRGB[1])[0]; + R = mean(imageRGB[2])[0]; + + //需要调整的RGB分量的增益 + double KR, KG, KB; + KB = (R + G + B) / (3 * B); + KG = (R + G + B) / (3 * G); + KR = (R + G + B) / (3 * R); + + //调整RGB三个通道各自的值 + imageRGB[0] = imageRGB[0] * KB; + imageRGB[1] = imageRGB[1] * KG; + imageRGB[2] = imageRGB[2] * KR; + + //RGB三通道图像合并 + merge(imageRGB, dst); + imshow("白平衡调整", dst); +} diff --git a/DIP182002108Dlg.h b/DIP182002108Dlg.h new file mode 100644 index 0000000..9c0e226 --- /dev/null +++ b/DIP182002108Dlg.h @@ -0,0 +1,84 @@ + +// DIP182002108Dlg.h: 头文件 +// + +#pragma once +#include + + +// CDIP182002108Dlg 对话框 +class CDIP182002108Dlg : public CDialogEx +{ +// 构造 +public: + CDIP182002108Dlg(CWnd* pParent = nullptr); // 标准构造函数 + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_DIP182002108_DIALOG }; +#endif + + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + +// 实现 +protected: + HICON m_hIcon; + + // 生成的消息映射函数 + virtual BOOL OnInitDialog(); + afx_msg void OnSysCommand(UINT nID, LPARAM lParam); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedButton1(); + + cv::Mat src; + afx_msg void OnBnClickedOpenvideo(); + int m_width; + int m_height; + afx_msg void OnBnClickedButton2(); + double m_angle; + afx_msg void OnBnClickedRotate(); + double m_shearRatio; + afx_msg void OnBnClickedHshear(); + afx_msg void OnBnClickedVshear(); + int m_a; + int m_b; + int m_ga; + int m_gb; + afx_msg void OnBnClickedLinear(); + afx_msg void OnBnClickedNonlinear(); + afx_msg void OnBnClickedHisteq(); + int m_pseudoMode; + afx_msg void OnBnClickedPseudo(); + int m_kemalSize; + int m_filterType; + afx_msg void OnBnClickedSmooth(); + int m_sharpType; + afx_msg void OnBnClickedSharp(); + int m_th; + afx_msg void OnBnClickedThre(); + int m_kernalSize; + int m_bias; + afx_msg void OnBnClickedAdthre(); + int m_seedX; + int m_seedY; + int m_regionTh; + afx_msg void OnBnClickedRegoingrow(); + int m_fSeedX; + int m_fSeedY; + int m_fTh; + afx_msg void OnBnClickedButton3(); + afx_msg void OnBnClickedErode(); + int m_morphType; + int m_morphSize; + afx_msg void OnBnClickedDilate(); + afx_msg void OnBnClickedMorphopen(); + afx_msg void OnBnClickedMorphclose(); + int m_colorType; + afx_msg void OnBnClickedColor(); + afx_msg void OnBnClickedButton9(); +}; diff --git a/framework.h b/framework.h new file mode 100644 index 0000000..5672fb5 --- /dev/null +++ b/framework.h @@ -0,0 +1,49 @@ +#pragma once + +#ifndef VC_EXTRALEAN +#define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 +#endif + +#include "targetver.h" + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 + +// 关闭 MFC 的一些常见且经常可放心忽略的隐藏警告消息 +#define _AFX_ALL_WARNINGS + +#include // MFC 核心组件和标准组件 +#include // MFC 扩展 + + +#include // MFC 自动化类 + + + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC 对 Internet Explorer 4 公共控件的支持 +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC 对 Windows 公共控件的支持 +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include // MFC 支持功能区和控制条 + + + + + + + + + +#ifdef _UNICODE +#if defined _M_IX86 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") +#elif defined _M_X64 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") +#else +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") +#endif +#endif + + diff --git a/pch.cpp b/pch.cpp new file mode 100644 index 0000000..b6fb8f4 --- /dev/null +++ b/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: 与预编译标头对应的源文件 + +#include "pch.h" + +// 当使用预编译的头时,需要使用此源文件,编译才能成功。 diff --git a/pch.h b/pch.h new file mode 100644 index 0000000..9660927 --- /dev/null +++ b/pch.h @@ -0,0 +1,13 @@ +// pch.h: 这是预编译标头文件。 +// 下方列出的文件仅编译一次,提高了将来生成的生成性能。 +// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 +// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 +// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 + +#ifndef PCH_H +#define PCH_H + +// 添加要在此处预编译的标头 +#include "framework.h" + +#endif //PCH_H diff --git a/res/DIP182002108.ico b/res/DIP182002108.ico new file mode 100644 index 0000000..d56fbcd Binary files /dev/null and b/res/DIP182002108.ico differ diff --git a/res/DIP182002108.rc2 b/res/DIP182002108.rc2 new file mode 100644 index 0000000..a7226a9 Binary files /dev/null and b/res/DIP182002108.rc2 differ diff --git a/resource.h b/resource.h new file mode 100644 index 0000000..43863f3 --- /dev/null +++ b/resource.h @@ -0,0 +1,79 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ 生成的包含文件。 +// 供 DIP182002108.rc 使用 +// +#define IDM_ABOUTBOX 0x0010 +#define IDD_ABOUTBOX 100 +#define IDS_ABOUTBOX 101 +#define IDD_DIP182002108_DIALOG 102 +#define IDR_MAINFRAME 128 +#define IDC_BUTTON1 1000 +#define IDC_OPENIMG 1000 +#define IDC_PIC 1001 +#define IDC_OPENVIDEO 1002 +#define IDC_WIDTH 1004 +#define IDC_HEIGHT 1005 +#define IDC_BUTTON2 1006 +#define IDC_ANGLE 1007 +#define IDC_ROTATE 1008 +#define IDC_EDIT1 1009 +#define IDC_HSHEAR 1010 +#define IDC_VSHEAR 1011 +#define IDC_EDIT2 1012 +#define IDC_EDIT3 1013 +#define IDC_EDIT4 1014 +#define IDC_EDIT5 1015 +#define IDC_LINEAR 1016 +#define IDC_NONLINEAR 1017 +#define IDC_HISTEQ 1018 +#define IDC_RADIO1 1019 +#define IDC_RADIO2 1020 +#define IDC_PSEUDO 1021 +#define IDC_EDIT6 1022 +#define IDC_RADIO3 1023 +#define IDC_RADIO4 1024 +#define IDC_RADIO5 1025 +#define IDC_SMOOTH 1026 +#define IDC_RADIO6 1027 +#define IDC_RADIO7 1028 +#define IDC_RADIO8 1029 +#define IDC_SHARP 1030 +#define IDC_THRE 1031 +#define IDC_EDIT7 1032 +#define IDC_EDIT8 1033 +#define IDC_EDIT9 1034 +#define IDC_ADTHRE 1035 +#define IDC_EDIT10 1036 +#define IDC_EDIT11 1037 +#define IDC_EDIT12 1038 +#define IDC_REGOINGROW 1039 +#define IDC_BUTTON3 1040 +#define IDC_EDIT13 1041 +#define IDC_EDIT14 1042 +#define IDC_EDIT15 1043 +#define IDC_ERODE 1045 +#define IDC_DILATE 1046 +#define IDC_BUTTON6 1047 +#define IDC_MORPHOPEN 1047 +#define IDC_BUTTON7 1048 +#define IDC_MORPHCLOSE 1048 +#define IDC_RADIO9 1050 +#define IDC_RADIO10 1051 +#define IDC_RADIO11 1052 +#define IDC_EDIT18 1054 +#define IDC_COLOR 1055 +#define IDC_RADIO12 1058 +#define IDC_RADIO13 1059 +#define IDC_RADIO14 1060 +#define IDC_BUTTON9 1061 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 130 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1062 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/targetver.h b/targetver.h new file mode 100644 index 0000000..91042b9 --- /dev/null +++ b/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。 + +// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h,并将 +// 将 _WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。 + +#include diff --git a/x64/Debug/DIP182002108.exe.recipe b/x64/Debug/DIP182002108.exe.recipe new file mode 100644 index 0000000..b40e081 --- /dev/null +++ b/x64/Debug/DIP182002108.exe.recipe @@ -0,0 +1,7 @@ + + + D:\学业资源\VS2019\C or C++\DIP182002108\x64\Debug\DIP182002108.exe + + + + \ No newline at end of file diff --git a/x64/Debug/DIP182002108.log b/x64/Debug/DIP182002108.log new file mode 100644 index 0000000..6b21988 --- /dev/null +++ b/x64/Debug/DIP182002108.log @@ -0,0 +1,89 @@ + DIP182002108Dlg.cpp +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(396,32): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(397,29): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(400,36): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(401,33): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(402,36): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(406,56): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(406,35): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(407,30): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(413,17): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据 +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(441,32): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(442,29): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(446,33): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(447,46): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(447,30): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(450,39): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(451,39): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(452,30): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(458,18): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据 +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(529,30): warning C4244: “=”: 从“float”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=uchar + ] + DIP182002108.vcxproj -> D:\学业资源\VS2019\C or C++\DIP182002108\x64\Debug\DIP182002108.exe diff --git a/x64/Debug/DIP182002108.obj b/x64/Debug/DIP182002108.obj new file mode 100644 index 0000000..5d8b832 Binary files /dev/null and b/x64/Debug/DIP182002108.obj differ diff --git a/x64/Debug/DIP182002108.pch b/x64/Debug/DIP182002108.pch new file mode 100644 index 0000000..63b0fea Binary files /dev/null and b/x64/Debug/DIP182002108.pch differ diff --git a/x64/Debug/DIP182002108.res b/x64/Debug/DIP182002108.res new file mode 100644 index 0000000..d8081fb Binary files /dev/null and b/x64/Debug/DIP182002108.res differ diff --git a/x64/Debug/DIP182002108.tlog/CL.command.1.tlog b/x64/Debug/DIP182002108.tlog/CL.command.1.tlog new file mode 100644 index 0000000..21f3495 Binary files /dev/null and b/x64/Debug/DIP182002108.tlog/CL.command.1.tlog differ diff --git a/x64/Debug/DIP182002108.tlog/CL.read.1.tlog b/x64/Debug/DIP182002108.tlog/CL.read.1.tlog new file mode 100644 index 0000000..16711f9 Binary files /dev/null and b/x64/Debug/DIP182002108.tlog/CL.read.1.tlog differ diff --git a/x64/Debug/DIP182002108.tlog/CL.write.1.tlog b/x64/Debug/DIP182002108.tlog/CL.write.1.tlog new file mode 100644 index 0000000..7bbded0 Binary files /dev/null and b/x64/Debug/DIP182002108.tlog/CL.write.1.tlog differ diff --git a/x64/Debug/DIP182002108.tlog/DIP182002108.lastbuildstate b/x64/Debug/DIP182002108.tlog/DIP182002108.lastbuildstate new file mode 100644 index 0000000..f3ec3d9 --- /dev/null +++ b/x64/Debug/DIP182002108.tlog/DIP182002108.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.27.29110:TargetPlatformVersion=10.0.18362.0: +Debug|x64|D:\学业资源\VS2019\C or C++\DIP182002108\| diff --git a/x64/Debug/DIP182002108.tlog/link.command.1.tlog b/x64/Debug/DIP182002108.tlog/link.command.1.tlog new file mode 100644 index 0000000..56f9d28 Binary files /dev/null and b/x64/Debug/DIP182002108.tlog/link.command.1.tlog differ diff --git a/x64/Debug/DIP182002108.tlog/link.read.1.tlog b/x64/Debug/DIP182002108.tlog/link.read.1.tlog new file mode 100644 index 0000000..eb5b208 Binary files /dev/null and b/x64/Debug/DIP182002108.tlog/link.read.1.tlog differ diff --git a/x64/Debug/DIP182002108.tlog/link.write.1.tlog b/x64/Debug/DIP182002108.tlog/link.write.1.tlog new file mode 100644 index 0000000..155ae25 Binary files /dev/null and b/x64/Debug/DIP182002108.tlog/link.write.1.tlog differ diff --git a/x64/Debug/DIP182002108.tlog/rc.command.1.tlog b/x64/Debug/DIP182002108.tlog/rc.command.1.tlog new file mode 100644 index 0000000..77707fb Binary files /dev/null and b/x64/Debug/DIP182002108.tlog/rc.command.1.tlog differ diff --git a/x64/Debug/DIP182002108.tlog/rc.read.1.tlog b/x64/Debug/DIP182002108.tlog/rc.read.1.tlog new file mode 100644 index 0000000..801e15f Binary files /dev/null and b/x64/Debug/DIP182002108.tlog/rc.read.1.tlog differ diff --git a/x64/Debug/DIP182002108.tlog/rc.write.1.tlog b/x64/Debug/DIP182002108.tlog/rc.write.1.tlog new file mode 100644 index 0000000..4cdc787 Binary files /dev/null and b/x64/Debug/DIP182002108.tlog/rc.write.1.tlog differ diff --git a/x64/Debug/DIP182002108Dlg.obj b/x64/Debug/DIP182002108Dlg.obj new file mode 100644 index 0000000..2eda5b2 Binary files /dev/null and b/x64/Debug/DIP182002108Dlg.obj differ diff --git a/x64/Debug/pch.obj b/x64/Debug/pch.obj new file mode 100644 index 0000000..03ea255 Binary files /dev/null and b/x64/Debug/pch.obj differ diff --git a/x64/Debug/vc142.idb b/x64/Debug/vc142.idb new file mode 100644 index 0000000..bf293a1 Binary files /dev/null and b/x64/Debug/vc142.idb differ diff --git a/x64/Debug/vc142.pdb b/x64/Debug/vc142.pdb new file mode 100644 index 0000000..9e9a23f Binary files /dev/null and b/x64/Debug/vc142.pdb differ diff --git a/x64/Release/DIP182002108.Build.CppClean.log b/x64/Release/DIP182002108.Build.CppClean.log new file mode 100644 index 0000000..4b96aff --- /dev/null +++ b/x64/Release/DIP182002108.Build.CppClean.log @@ -0,0 +1,20 @@ +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.pch +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\vc142.pdb +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\pch.obj +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108dlg.obj +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.obj +d:\学业资源\vs2019\c or c++\dip182002108\x64\release\dip182002108.ipdb +d:\学业资源\vs2019\c or c++\dip182002108\x64\release\dip182002108.iobj +d:\学业资源\vs2019\c or c++\dip182002108\x64\release\dip182002108.exe +d:\学业资源\vs2019\c or c++\dip182002108\x64\release\dip182002108.pdb +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.res +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\cl.command.1.tlog +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\cl.read.1.tlog +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\cl.write.1.tlog +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\dip182002108.write.1u.tlog +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\link.command.1.tlog +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\link.read.1.tlog +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\link.write.1.tlog +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\rc.command.1.tlog +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\rc.read.1.tlog +d:\学业资源\vs2019\c or c++\dip182002108\dip182002108\x64\release\dip182002108.tlog\rc.write.1.tlog diff --git a/x64/Release/DIP182002108.exe.recipe b/x64/Release/DIP182002108.exe.recipe new file mode 100644 index 0000000..5e90ba0 --- /dev/null +++ b/x64/Release/DIP182002108.exe.recipe @@ -0,0 +1,7 @@ + + + D:\学业资源\VS2019\C or C++\DIP182002108\x64\Release\DIP182002108.exe + + + + \ No newline at end of file diff --git a/x64/Release/DIP182002108.log b/x64/Release/DIP182002108.log new file mode 100644 index 0000000..5285b40 --- /dev/null +++ b/x64/Release/DIP182002108.log @@ -0,0 +1,95 @@ + pch.cpp + DIP182002108.cpp + DIP182002108Dlg.cpp +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(396,32): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(397,29): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(400,36): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(401,33): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(402,36): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(406,56): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(406,35): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(407,30): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(413,17): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据 +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(441,32): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(442,29): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(446,33): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(447,46): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(447,30): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(450,39): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(451,39): warning C4244: “参数”: 从“double”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(452,30): warning C4244: “参数”: 从“int”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=float + ] +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(458,18): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据 +D:\学业资源\VS2019\C or C++\DIP182002108\DIP182002108\DIP182002108Dlg.cpp(529,30): warning C4244: “=”: 从“float”转换到“_Tp”,可能丢失数据 + with + [ + _Tp=uchar + ] + 正在生成代码 + Previous IPDB not found, fall back to full compilation. + All 554 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. + 已完成代码的生成 + DIP182002108.vcxproj -> D:\学业资源\VS2019\C or C++\DIP182002108\x64\Release\DIP182002108.exe diff --git a/x64/Release/DIP182002108.obj b/x64/Release/DIP182002108.obj new file mode 100644 index 0000000..eac9368 Binary files /dev/null and b/x64/Release/DIP182002108.obj differ diff --git a/x64/Release/DIP182002108.pch b/x64/Release/DIP182002108.pch new file mode 100644 index 0000000..e46546a Binary files /dev/null and b/x64/Release/DIP182002108.pch differ diff --git a/x64/Release/DIP182002108.res b/x64/Release/DIP182002108.res new file mode 100644 index 0000000..829e0c8 Binary files /dev/null and b/x64/Release/DIP182002108.res differ diff --git a/x64/Release/DIP182002108.tlog/CL.command.1.tlog b/x64/Release/DIP182002108.tlog/CL.command.1.tlog new file mode 100644 index 0000000..9f7da0c Binary files /dev/null and b/x64/Release/DIP182002108.tlog/CL.command.1.tlog differ diff --git a/x64/Release/DIP182002108.tlog/CL.read.1.tlog b/x64/Release/DIP182002108.tlog/CL.read.1.tlog new file mode 100644 index 0000000..d9f74ac Binary files /dev/null and b/x64/Release/DIP182002108.tlog/CL.read.1.tlog differ diff --git a/x64/Release/DIP182002108.tlog/CL.write.1.tlog b/x64/Release/DIP182002108.tlog/CL.write.1.tlog new file mode 100644 index 0000000..909b2f4 Binary files /dev/null and b/x64/Release/DIP182002108.tlog/CL.write.1.tlog differ diff --git a/x64/Release/DIP182002108.tlog/DIP182002108.lastbuildstate b/x64/Release/DIP182002108.tlog/DIP182002108.lastbuildstate new file mode 100644 index 0000000..a07220c --- /dev/null +++ b/x64/Release/DIP182002108.tlog/DIP182002108.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.27.29110:TargetPlatformVersion=10.0.18362.0: +Release|x64|D:\学业资源\VS2019\C or C++\DIP182002108\| diff --git a/x64/Release/DIP182002108.tlog/DIP182002108.write.1u.tlog b/x64/Release/DIP182002108.tlog/DIP182002108.write.1u.tlog new file mode 100644 index 0000000..fca46ca Binary files /dev/null and b/x64/Release/DIP182002108.tlog/DIP182002108.write.1u.tlog differ diff --git a/x64/Release/DIP182002108.tlog/link.command.1.tlog b/x64/Release/DIP182002108.tlog/link.command.1.tlog new file mode 100644 index 0000000..322f006 Binary files /dev/null and b/x64/Release/DIP182002108.tlog/link.command.1.tlog differ diff --git a/x64/Release/DIP182002108.tlog/link.read.1.tlog b/x64/Release/DIP182002108.tlog/link.read.1.tlog new file mode 100644 index 0000000..f85ef09 Binary files /dev/null and b/x64/Release/DIP182002108.tlog/link.read.1.tlog differ diff --git a/x64/Release/DIP182002108.tlog/link.write.1.tlog b/x64/Release/DIP182002108.tlog/link.write.1.tlog new file mode 100644 index 0000000..ac19571 Binary files /dev/null and b/x64/Release/DIP182002108.tlog/link.write.1.tlog differ diff --git a/x64/Release/DIP182002108.tlog/rc.command.1.tlog b/x64/Release/DIP182002108.tlog/rc.command.1.tlog new file mode 100644 index 0000000..5b1b4c8 Binary files /dev/null and b/x64/Release/DIP182002108.tlog/rc.command.1.tlog differ diff --git a/x64/Release/DIP182002108.tlog/rc.read.1.tlog b/x64/Release/DIP182002108.tlog/rc.read.1.tlog new file mode 100644 index 0000000..801e15f Binary files /dev/null and b/x64/Release/DIP182002108.tlog/rc.read.1.tlog differ diff --git a/x64/Release/DIP182002108.tlog/rc.write.1.tlog b/x64/Release/DIP182002108.tlog/rc.write.1.tlog new file mode 100644 index 0000000..445d812 Binary files /dev/null and b/x64/Release/DIP182002108.tlog/rc.write.1.tlog differ diff --git a/x64/Release/DIP182002108.vcxproj.FileListAbsolute.txt b/x64/Release/DIP182002108.vcxproj.FileListAbsolute.txt new file mode 100644 index 0000000..e69de29 diff --git a/x64/Release/DIP182002108Dlg.obj b/x64/Release/DIP182002108Dlg.obj new file mode 100644 index 0000000..a72e9b6 Binary files /dev/null and b/x64/Release/DIP182002108Dlg.obj differ diff --git a/x64/Release/pch.obj b/x64/Release/pch.obj new file mode 100644 index 0000000..9a7e1b2 Binary files /dev/null and b/x64/Release/pch.obj differ diff --git a/x64/Release/vc142.pdb b/x64/Release/vc142.pdb new file mode 100644 index 0000000..e234d0f Binary files /dev/null and b/x64/Release/vc142.pdb differ