diff --git a/Capstone_Design.sln b/Capstone_Design.sln index cc8f0ad..619c014 100644 --- a/Capstone_Design.sln +++ b/Capstone_Design.sln @@ -9,19 +9,47 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ch02", "ch02", "{513A93F1-4 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ch03", "ch03", "{5A922B9F-8CAA-418C-9D2A-C2F26CCF7059}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Point_Class", "Point_Class\Point_Class.vcxproj", "{A18B353C-A08C-4EBE-92D6-2D280A16A6BB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloCV", "HelloCV\HelloCV.vcxproj", "{9466991C-83CD-4753-90EB-A20C12368EAC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloWorld", "HelloWorld\HelloWorld.vcxproj", "{682942EC-3BD1-4759-A9A4-3089C2EEC799}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MatOp", "MatOp\MatOp.vcxproj", "{284ABC4B-82D9-4808-8E18-E6F7A1D05563}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ch04", "ch04", "{6AD5DB3F-FAAC-4D79-9B5C-52AF61E2E052}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Video", "Video\Video.vcxproj", "{67BA8C21-12CB-440F-998D-E0DFF7B04DDF}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ch05", "ch05", "{8436DD5A-9627-44A0-BA75-7706F5190DD2}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Drawing", "Drawing\Drawing.vcxproj", "{27CCD2CA-F740-43F5-8740-B30E3A2840C1}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "brightness", "ch05\brightness\brightness.vcxproj", "{A9F00664-0673-4934-B51D-A141D9C211ED}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Drawing", "ch04\Drawing\Drawing.vcxproj", "{27CCD2CA-F740-43F5-8740-B30E3A2840C1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MatOp", "ch03\MatOp\MatOp.vcxproj", "{284ABC4B-82D9-4808-8E18-E6F7A1D05563}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Point_Class", "ch03\Point_Class\Point_Class.vcxproj", "{A18B353C-A08C-4EBE-92D6-2D280A16A6BB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloCV", "ch01\HelloCV\HelloCV.vcxproj", "{9466991C-83CD-4753-90EB-A20C12368EAC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloWorld", "ch01\HelloWorld\HelloWorld.vcxproj", "{682942EC-3BD1-4759-A9A4-3089C2EEC799}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "contrast", "ch05\contrast\contrast.vcxproj", "{926B8522-38E8-41E3-A358-D9D628DFF8A4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "histogram", "ch05\histogram\histogram.vcxproj", "{D0C81788-4531-4E50-A2DE-7ADD77039FCE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Video", "ch04\Video\Video.vcxproj", "{67BA8C21-12CB-440F-998D-E0DFF7B04DDF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ch06", "ch06", "{32163192-2AEE-4AF4-B246-66D99D6C131F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Arithmetic", "ch06\Arithmetic\Arithmetic.vcxproj", "{69A9CD92-339E-4CEC-8427-3A71197437D4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "logical", "ch06\logical\logical.vcxproj", "{8E7C00AE-B124-4C7E-848F-F85838AFC69A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filter", "cn06\filter\filter.vcxproj", "{8219467F-93DF-4080-8452-97E1EC422D8B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ch07", "ch07", "{E0A91F3E-0B54-4785-AB66-727A7EE1E15B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blurring", "ch07\blurring\blurring.vcxproj", "{61942C1C-14CA-49A7-B89A-4C6A8996CA6D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sharpen", "ch07\sharpen\sharpen.vcxproj", "{A871F9D8-2DD0-4B01-A304-E738968313F2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "noise", "ch07\noise\noise.vcxproj", "{380222EF-FFE1-445F-B409-1DD866DF1ED9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Homework", "Homework", "{E583E257-9FCE-4A4B-A554-8514F982D1BF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "noise_denoise", "Homework\noise_denoise\noise_denoise.vcxproj", "{C91F6DA7-8B51-4630-9340-D3643FE0531E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -31,6 +59,30 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A9F00664-0673-4934-B51D-A141D9C211ED}.Debug|x64.ActiveCfg = Debug|x64 + {A9F00664-0673-4934-B51D-A141D9C211ED}.Debug|x64.Build.0 = Debug|x64 + {A9F00664-0673-4934-B51D-A141D9C211ED}.Debug|x86.ActiveCfg = Debug|Win32 + {A9F00664-0673-4934-B51D-A141D9C211ED}.Debug|x86.Build.0 = Debug|Win32 + {A9F00664-0673-4934-B51D-A141D9C211ED}.Release|x64.ActiveCfg = Release|x64 + {A9F00664-0673-4934-B51D-A141D9C211ED}.Release|x64.Build.0 = Release|x64 + {A9F00664-0673-4934-B51D-A141D9C211ED}.Release|x86.ActiveCfg = Release|Win32 + {A9F00664-0673-4934-B51D-A141D9C211ED}.Release|x86.Build.0 = Release|Win32 + {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Debug|x64.ActiveCfg = Debug|x64 + {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Debug|x64.Build.0 = Debug|x64 + {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Debug|x86.ActiveCfg = Debug|Win32 + {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Debug|x86.Build.0 = Debug|Win32 + {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Release|x64.ActiveCfg = Release|x64 + {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Release|x64.Build.0 = Release|x64 + {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Release|x86.ActiveCfg = Release|Win32 + {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Release|x86.Build.0 = Release|Win32 + {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Debug|x64.ActiveCfg = Debug|x64 + {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Debug|x64.Build.0 = Debug|x64 + {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Debug|x86.ActiveCfg = Debug|Win32 + {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Debug|x86.Build.0 = Debug|Win32 + {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Release|x64.ActiveCfg = Release|x64 + {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Release|x64.Build.0 = Release|x64 + {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Release|x86.ActiveCfg = Release|Win32 + {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Release|x86.Build.0 = Release|Win32 {A18B353C-A08C-4EBE-92D6-2D280A16A6BB}.Debug|x64.ActiveCfg = Debug|x64 {A18B353C-A08C-4EBE-92D6-2D280A16A6BB}.Debug|x64.Build.0 = Debug|x64 {A18B353C-A08C-4EBE-92D6-2D280A16A6BB}.Debug|x86.ActiveCfg = Debug|Win32 @@ -55,14 +107,22 @@ Global {682942EC-3BD1-4759-A9A4-3089C2EEC799}.Release|x64.Build.0 = Release|x64 {682942EC-3BD1-4759-A9A4-3089C2EEC799}.Release|x86.ActiveCfg = Release|Win32 {682942EC-3BD1-4759-A9A4-3089C2EEC799}.Release|x86.Build.0 = Release|Win32 - {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Debug|x64.ActiveCfg = Debug|x64 - {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Debug|x64.Build.0 = Debug|x64 - {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Debug|x86.ActiveCfg = Debug|Win32 - {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Debug|x86.Build.0 = Debug|Win32 - {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Release|x64.ActiveCfg = Release|x64 - {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Release|x64.Build.0 = Release|x64 - {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Release|x86.ActiveCfg = Release|Win32 - {284ABC4B-82D9-4808-8E18-E6F7A1D05563}.Release|x86.Build.0 = Release|Win32 + {926B8522-38E8-41E3-A358-D9D628DFF8A4}.Debug|x64.ActiveCfg = Debug|x64 + {926B8522-38E8-41E3-A358-D9D628DFF8A4}.Debug|x64.Build.0 = Debug|x64 + {926B8522-38E8-41E3-A358-D9D628DFF8A4}.Debug|x86.ActiveCfg = Debug|Win32 + {926B8522-38E8-41E3-A358-D9D628DFF8A4}.Debug|x86.Build.0 = Debug|Win32 + {926B8522-38E8-41E3-A358-D9D628DFF8A4}.Release|x64.ActiveCfg = Release|x64 + {926B8522-38E8-41E3-A358-D9D628DFF8A4}.Release|x64.Build.0 = Release|x64 + {926B8522-38E8-41E3-A358-D9D628DFF8A4}.Release|x86.ActiveCfg = Release|Win32 + {926B8522-38E8-41E3-A358-D9D628DFF8A4}.Release|x86.Build.0 = Release|Win32 + {D0C81788-4531-4E50-A2DE-7ADD77039FCE}.Debug|x64.ActiveCfg = Debug|x64 + {D0C81788-4531-4E50-A2DE-7ADD77039FCE}.Debug|x64.Build.0 = Debug|x64 + {D0C81788-4531-4E50-A2DE-7ADD77039FCE}.Debug|x86.ActiveCfg = Debug|Win32 + {D0C81788-4531-4E50-A2DE-7ADD77039FCE}.Debug|x86.Build.0 = Debug|Win32 + {D0C81788-4531-4E50-A2DE-7ADD77039FCE}.Release|x64.ActiveCfg = Release|x64 + {D0C81788-4531-4E50-A2DE-7ADD77039FCE}.Release|x64.Build.0 = Release|x64 + {D0C81788-4531-4E50-A2DE-7ADD77039FCE}.Release|x86.ActiveCfg = Release|Win32 + {D0C81788-4531-4E50-A2DE-7ADD77039FCE}.Release|x86.Build.0 = Release|Win32 {67BA8C21-12CB-440F-998D-E0DFF7B04DDF}.Debug|x64.ActiveCfg = Debug|x64 {67BA8C21-12CB-440F-998D-E0DFF7B04DDF}.Debug|x64.Build.0 = Debug|x64 {67BA8C21-12CB-440F-998D-E0DFF7B04DDF}.Debug|x86.ActiveCfg = Debug|Win32 @@ -71,25 +131,83 @@ Global {67BA8C21-12CB-440F-998D-E0DFF7B04DDF}.Release|x64.Build.0 = Release|x64 {67BA8C21-12CB-440F-998D-E0DFF7B04DDF}.Release|x86.ActiveCfg = Release|Win32 {67BA8C21-12CB-440F-998D-E0DFF7B04DDF}.Release|x86.Build.0 = Release|Win32 - {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Debug|x64.ActiveCfg = Debug|x64 - {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Debug|x64.Build.0 = Debug|x64 - {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Debug|x86.ActiveCfg = Debug|Win32 - {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Debug|x86.Build.0 = Debug|Win32 - {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Release|x64.ActiveCfg = Release|x64 - {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Release|x64.Build.0 = Release|x64 - {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Release|x86.ActiveCfg = Release|Win32 - {27CCD2CA-F740-43F5-8740-B30E3A2840C1}.Release|x86.Build.0 = Release|Win32 + {69A9CD92-339E-4CEC-8427-3A71197437D4}.Debug|x64.ActiveCfg = Debug|x64 + {69A9CD92-339E-4CEC-8427-3A71197437D4}.Debug|x64.Build.0 = Debug|x64 + {69A9CD92-339E-4CEC-8427-3A71197437D4}.Debug|x86.ActiveCfg = Debug|Win32 + {69A9CD92-339E-4CEC-8427-3A71197437D4}.Debug|x86.Build.0 = Debug|Win32 + {69A9CD92-339E-4CEC-8427-3A71197437D4}.Release|x64.ActiveCfg = Release|x64 + {69A9CD92-339E-4CEC-8427-3A71197437D4}.Release|x64.Build.0 = Release|x64 + {69A9CD92-339E-4CEC-8427-3A71197437D4}.Release|x86.ActiveCfg = Release|Win32 + {69A9CD92-339E-4CEC-8427-3A71197437D4}.Release|x86.Build.0 = Release|Win32 + {8E7C00AE-B124-4C7E-848F-F85838AFC69A}.Debug|x64.ActiveCfg = Debug|x64 + {8E7C00AE-B124-4C7E-848F-F85838AFC69A}.Debug|x64.Build.0 = Debug|x64 + {8E7C00AE-B124-4C7E-848F-F85838AFC69A}.Debug|x86.ActiveCfg = Debug|Win32 + {8E7C00AE-B124-4C7E-848F-F85838AFC69A}.Debug|x86.Build.0 = Debug|Win32 + {8E7C00AE-B124-4C7E-848F-F85838AFC69A}.Release|x64.ActiveCfg = Release|x64 + {8E7C00AE-B124-4C7E-848F-F85838AFC69A}.Release|x64.Build.0 = Release|x64 + {8E7C00AE-B124-4C7E-848F-F85838AFC69A}.Release|x86.ActiveCfg = Release|Win32 + {8E7C00AE-B124-4C7E-848F-F85838AFC69A}.Release|x86.Build.0 = Release|Win32 + {8219467F-93DF-4080-8452-97E1EC422D8B}.Debug|x64.ActiveCfg = Debug|x64 + {8219467F-93DF-4080-8452-97E1EC422D8B}.Debug|x64.Build.0 = Debug|x64 + {8219467F-93DF-4080-8452-97E1EC422D8B}.Debug|x86.ActiveCfg = Debug|Win32 + {8219467F-93DF-4080-8452-97E1EC422D8B}.Debug|x86.Build.0 = Debug|Win32 + {8219467F-93DF-4080-8452-97E1EC422D8B}.Release|x64.ActiveCfg = Release|x64 + {8219467F-93DF-4080-8452-97E1EC422D8B}.Release|x64.Build.0 = Release|x64 + {8219467F-93DF-4080-8452-97E1EC422D8B}.Release|x86.ActiveCfg = Release|Win32 + {8219467F-93DF-4080-8452-97E1EC422D8B}.Release|x86.Build.0 = Release|Win32 + {61942C1C-14CA-49A7-B89A-4C6A8996CA6D}.Debug|x64.ActiveCfg = Debug|x64 + {61942C1C-14CA-49A7-B89A-4C6A8996CA6D}.Debug|x64.Build.0 = Debug|x64 + {61942C1C-14CA-49A7-B89A-4C6A8996CA6D}.Debug|x86.ActiveCfg = Debug|Win32 + {61942C1C-14CA-49A7-B89A-4C6A8996CA6D}.Debug|x86.Build.0 = Debug|Win32 + {61942C1C-14CA-49A7-B89A-4C6A8996CA6D}.Release|x64.ActiveCfg = Release|x64 + {61942C1C-14CA-49A7-B89A-4C6A8996CA6D}.Release|x64.Build.0 = Release|x64 + {61942C1C-14CA-49A7-B89A-4C6A8996CA6D}.Release|x86.ActiveCfg = Release|Win32 + {61942C1C-14CA-49A7-B89A-4C6A8996CA6D}.Release|x86.Build.0 = Release|Win32 + {A871F9D8-2DD0-4B01-A304-E738968313F2}.Debug|x64.ActiveCfg = Debug|x64 + {A871F9D8-2DD0-4B01-A304-E738968313F2}.Debug|x64.Build.0 = Debug|x64 + {A871F9D8-2DD0-4B01-A304-E738968313F2}.Debug|x86.ActiveCfg = Debug|Win32 + {A871F9D8-2DD0-4B01-A304-E738968313F2}.Debug|x86.Build.0 = Debug|Win32 + {A871F9D8-2DD0-4B01-A304-E738968313F2}.Release|x64.ActiveCfg = Release|x64 + {A871F9D8-2DD0-4B01-A304-E738968313F2}.Release|x64.Build.0 = Release|x64 + {A871F9D8-2DD0-4B01-A304-E738968313F2}.Release|x86.ActiveCfg = Release|Win32 + {A871F9D8-2DD0-4B01-A304-E738968313F2}.Release|x86.Build.0 = Release|Win32 + {380222EF-FFE1-445F-B409-1DD866DF1ED9}.Debug|x64.ActiveCfg = Debug|x64 + {380222EF-FFE1-445F-B409-1DD866DF1ED9}.Debug|x64.Build.0 = Debug|x64 + {380222EF-FFE1-445F-B409-1DD866DF1ED9}.Debug|x86.ActiveCfg = Debug|Win32 + {380222EF-FFE1-445F-B409-1DD866DF1ED9}.Debug|x86.Build.0 = Debug|Win32 + {380222EF-FFE1-445F-B409-1DD866DF1ED9}.Release|x64.ActiveCfg = Release|x64 + {380222EF-FFE1-445F-B409-1DD866DF1ED9}.Release|x64.Build.0 = Release|x64 + {380222EF-FFE1-445F-B409-1DD866DF1ED9}.Release|x86.ActiveCfg = Release|Win32 + {380222EF-FFE1-445F-B409-1DD866DF1ED9}.Release|x86.Build.0 = Release|Win32 + {C91F6DA7-8B51-4630-9340-D3643FE0531E}.Debug|x64.ActiveCfg = Debug|x64 + {C91F6DA7-8B51-4630-9340-D3643FE0531E}.Debug|x64.Build.0 = Debug|x64 + {C91F6DA7-8B51-4630-9340-D3643FE0531E}.Debug|x86.ActiveCfg = Debug|Win32 + {C91F6DA7-8B51-4630-9340-D3643FE0531E}.Debug|x86.Build.0 = Debug|Win32 + {C91F6DA7-8B51-4630-9340-D3643FE0531E}.Release|x64.ActiveCfg = Release|x64 + {C91F6DA7-8B51-4630-9340-D3643FE0531E}.Release|x64.Build.0 = Release|x64 + {C91F6DA7-8B51-4630-9340-D3643FE0531E}.Release|x86.ActiveCfg = Release|Win32 + {C91F6DA7-8B51-4630-9340-D3643FE0531E}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution + {A9F00664-0673-4934-B51D-A141D9C211ED} = {8436DD5A-9627-44A0-BA75-7706F5190DD2} + {27CCD2CA-F740-43F5-8740-B30E3A2840C1} = {6AD5DB3F-FAAC-4D79-9B5C-52AF61E2E052} + {284ABC4B-82D9-4808-8E18-E6F7A1D05563} = {5A922B9F-8CAA-418C-9D2A-C2F26CCF7059} {A18B353C-A08C-4EBE-92D6-2D280A16A6BB} = {5A922B9F-8CAA-418C-9D2A-C2F26CCF7059} {9466991C-83CD-4753-90EB-A20C12368EAC} = {C8D5274F-AC00-46C7-1F8D-E88E81087A52} {682942EC-3BD1-4759-A9A4-3089C2EEC799} = {C8D5274F-AC00-46C7-1F8D-E88E81087A52} - {284ABC4B-82D9-4808-8E18-E6F7A1D05563} = {5A922B9F-8CAA-418C-9D2A-C2F26CCF7059} + {926B8522-38E8-41E3-A358-D9D628DFF8A4} = {8436DD5A-9627-44A0-BA75-7706F5190DD2} + {D0C81788-4531-4E50-A2DE-7ADD77039FCE} = {8436DD5A-9627-44A0-BA75-7706F5190DD2} {67BA8C21-12CB-440F-998D-E0DFF7B04DDF} = {6AD5DB3F-FAAC-4D79-9B5C-52AF61E2E052} - {27CCD2CA-F740-43F5-8740-B30E3A2840C1} = {6AD5DB3F-FAAC-4D79-9B5C-52AF61E2E052} + {69A9CD92-339E-4CEC-8427-3A71197437D4} = {32163192-2AEE-4AF4-B246-66D99D6C131F} + {8E7C00AE-B124-4C7E-848F-F85838AFC69A} = {32163192-2AEE-4AF4-B246-66D99D6C131F} + {8219467F-93DF-4080-8452-97E1EC422D8B} = {32163192-2AEE-4AF4-B246-66D99D6C131F} + {61942C1C-14CA-49A7-B89A-4C6A8996CA6D} = {E0A91F3E-0B54-4785-AB66-727A7EE1E15B} + {A871F9D8-2DD0-4B01-A304-E738968313F2} = {E0A91F3E-0B54-4785-AB66-727A7EE1E15B} + {380222EF-FFE1-445F-B409-1DD866DF1ED9} = {E0A91F3E-0B54-4785-AB66-727A7EE1E15B} + {C91F6DA7-8B51-4630-9340-D3643FE0531E} = {E583E257-9FCE-4A4B-A554-8514F982D1BF} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E1A0C3F4-F16D-4626-86CE-D8484C0C776D} diff --git a/Drawing/Drawing.zip b/Drawing/Drawing.zip deleted file mode 100644 index 51c5768..0000000 Binary files a/Drawing/Drawing.zip and /dev/null differ diff --git a/Homework/noise_denoise/noise_denoise.vcxproj b/Homework/noise_denoise/noise_denoise.vcxproj new file mode 100644 index 0000000..35c27eb --- /dev/null +++ b/Homework/noise_denoise/noise_denoise.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {c91f6da7-8b51-4630-9340-d3643fe0531e} + noisedenoise + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + \ No newline at end of file diff --git a/Homework/noise_denoise/noise_denoise.vcxproj.filters b/Homework/noise_denoise/noise_denoise.vcxproj.filters new file mode 100644 index 0000000..493ccf6 --- /dev/null +++ b/Homework/noise_denoise/noise_denoise.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {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/HelloCV/HelloCV.vcxproj b/ch01/HelloCV/HelloCV.vcxproj similarity index 96% rename from HelloCV/HelloCV.vcxproj rename to ch01/HelloCV/HelloCV.vcxproj index 799d0a2..1196409 100644 --- a/HelloCV/HelloCV.vcxproj +++ b/ch01/HelloCV/HelloCV.vcxproj @@ -59,19 +59,19 @@ - + - + - + - + diff --git a/HelloCV/HelloCV.vcxproj.filters b/ch01/HelloCV/HelloCV.vcxproj.filters similarity index 100% rename from HelloCV/HelloCV.vcxproj.filters rename to ch01/HelloCV/HelloCV.vcxproj.filters diff --git a/HelloCV/main.cpp b/ch01/HelloCV/main.cpp similarity index 84% rename from HelloCV/main.cpp rename to ch01/HelloCV/main.cpp index a34d6cd..aa21596 100644 --- a/HelloCV/main.cpp +++ b/ch01/HelloCV/main.cpp @@ -5,7 +5,7 @@ int main(int argv, char* argc[]) { std::cout << "Hello, OpenCV " << CV_VERSION << std::endl; cv::Mat img; - img = cv::imread("..\\resources\\images\\lenna.bmp"); + img = cv::imread("..\\..\\resources\\images\\lenna.bmp"); if (img.empty()) { std::cerr << "Image load failed!" << std::endl; diff --git a/HelloCV/main2.cpp b/ch01/HelloCV/main2.cpp similarity index 100% rename from HelloCV/main2.cpp rename to ch01/HelloCV/main2.cpp diff --git a/HelloWorld/HelloWorld.vcxproj b/ch01/HelloWorld/HelloWorld.vcxproj similarity index 100% rename from HelloWorld/HelloWorld.vcxproj rename to ch01/HelloWorld/HelloWorld.vcxproj diff --git a/HelloWorld/HelloWorld.vcxproj.filters b/ch01/HelloWorld/HelloWorld.vcxproj.filters similarity index 100% rename from HelloWorld/HelloWorld.vcxproj.filters rename to ch01/HelloWorld/HelloWorld.vcxproj.filters diff --git a/HelloWorld/main.cpp b/ch01/HelloWorld/main.cpp similarity index 100% rename from HelloWorld/main.cpp rename to ch01/HelloWorld/main.cpp diff --git a/MatOp/MatOp.vcxproj b/ch03/MatOp/MatOp.vcxproj similarity index 97% rename from MatOp/MatOp.vcxproj rename to ch03/MatOp/MatOp.vcxproj index cd537bd..fae819f 100644 --- a/MatOp/MatOp.vcxproj +++ b/ch03/MatOp/MatOp.vcxproj @@ -59,19 +59,19 @@ - + - + - + - + diff --git a/MatOp/MatOp.vcxproj.filters b/ch03/MatOp/MatOp.vcxproj.filters similarity index 100% rename from MatOp/MatOp.vcxproj.filters rename to ch03/MatOp/MatOp.vcxproj.filters diff --git a/MatOp/main.cpp b/ch03/MatOp/main.cpp similarity index 87% rename from MatOp/main.cpp rename to ch03/MatOp/main.cpp index d6c0066..c690afb 100644 --- a/MatOp/main.cpp +++ b/ch03/MatOp/main.cpp @@ -12,7 +12,7 @@ int main() { } void MatOp2() { - Mat img1 = imread("..\\resources\\images\\dog.bmp"); + Mat img1 = imread("..\\..\\resources\\images\\dog.bmp"); Mat img2 = img1; Mat img3; img3 = img1; @@ -34,7 +34,7 @@ void MatOp2() { } void MatOp3() { - Mat img1 = imread("..\\resources\\images\\cat.bmp"); + Mat img1 = imread("..\\..\\resources\\images\\cat.bmp"); if (img1.empty()) { cerr << "Image load failed!" << endl; diff --git a/Point_Class/Point_Class.vcxproj b/ch03/Point_Class/Point_Class.vcxproj similarity index 96% rename from Point_Class/Point_Class.vcxproj rename to ch03/Point_Class/Point_Class.vcxproj index 249d574..4423d8d 100644 --- a/Point_Class/Point_Class.vcxproj +++ b/ch03/Point_Class/Point_Class.vcxproj @@ -59,19 +59,19 @@ - + - + - + - + diff --git a/Point_Class/Point_Class.vcxproj.filters b/ch03/Point_Class/Point_Class.vcxproj.filters similarity index 100% rename from Point_Class/Point_Class.vcxproj.filters rename to ch03/Point_Class/Point_Class.vcxproj.filters diff --git a/Point_Class/main.cpp b/ch03/Point_Class/main.cpp similarity index 100% rename from Point_Class/main.cpp rename to ch03/Point_Class/main.cpp diff --git a/Drawing/Drawing.vcxproj b/ch04/Drawing/Drawing.vcxproj similarity index 96% rename from Drawing/Drawing.vcxproj rename to ch04/Drawing/Drawing.vcxproj index 6ad2af6..dafd279 100644 --- a/Drawing/Drawing.vcxproj +++ b/ch04/Drawing/Drawing.vcxproj @@ -59,19 +59,19 @@ - + - + - + - + diff --git a/Drawing/Drawing.vcxproj.filters b/ch04/Drawing/Drawing.vcxproj.filters similarity index 100% rename from Drawing/Drawing.vcxproj.filters rename to ch04/Drawing/Drawing.vcxproj.filters diff --git a/Drawing/main.cpp b/ch04/Drawing/main.cpp similarity index 100% rename from Drawing/main.cpp rename to ch04/Drawing/main.cpp diff --git a/Video/Video.vcxproj b/ch04/Video/Video.vcxproj similarity index 96% rename from Video/Video.vcxproj rename to ch04/Video/Video.vcxproj index 68f6839..1e2af41 100644 --- a/Video/Video.vcxproj +++ b/ch04/Video/Video.vcxproj @@ -59,19 +59,19 @@ - + - + - + - + diff --git a/Video/Video.vcxproj.filters b/ch04/Video/Video.vcxproj.filters similarity index 100% rename from Video/Video.vcxproj.filters rename to ch04/Video/Video.vcxproj.filters diff --git a/Video/main.cpp b/ch04/Video/main.cpp similarity index 100% rename from Video/main.cpp rename to ch04/Video/main.cpp diff --git a/ch05/brightness/brightness.vcxproj b/ch05/brightness/brightness.vcxproj new file mode 100644 index 0000000..a685e4e --- /dev/null +++ b/ch05/brightness/brightness.vcxproj @@ -0,0 +1,142 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {a9f00664-0673-4934-b51d-a141d9c211ed} + brightness + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/ch05/brightness/brightness.vcxproj.filters b/ch05/brightness/brightness.vcxproj.filters new file mode 100644 index 0000000..77c1a27 --- /dev/null +++ b/ch05/brightness/brightness.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {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/ch05/brightness/main.cpp b/ch05/brightness/main.cpp new file mode 100644 index 0000000..c7654e6 --- /dev/null +++ b/ch05/brightness/main.cpp @@ -0,0 +1,111 @@ +#include +#include "opencv2/opencv.hpp" + +using namespace std; +using namespace cv; + +int brightness1(); +int brightness2(); +int brightness3(); +int brightness4(); +int mosaic(); + +int main() { + return brightness4(); +} + +int brightness1() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + if (src.empty()) { + cerr << "imread()" << endl; + return 1; + } + Mat dst = src + 100; + + imshow("src", src); + imshow("dst", dst); + waitKey(); + destroyAllWindows(); + return 0; +} + +int brightness2() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + if (src.empty()) { + cerr << "imread()" << endl; + return 1; + } + Mat dst(src.rows, src.cols, src.type()); + + for (int j = 0; j < src.rows; j++) { + for (int i = 0; i < src.cols; i++) { + dst.at(j, i) = src.at(j, i) + 100; + } + } + + imshow("src", src); + imshow("dst", dst); + waitKey(); + destroyAllWindows(); + return 0; +} + +int brightness3() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + if (src.empty()) { + cerr << "imread()" << endl; + return 1; + } + Mat dst(src.rows, src.cols, src.type()); + + for (int j = 0; j < src.rows; j++) { + for (int i = 0; i < src.cols; i++) { + dst.at(j, i) = saturate_cast(src.at(j, i) + 100); + } + } + + imshow("src", src); + imshow("dst", dst); + waitKey(); + destroyAllWindows(); + return 0; +} + +void on_brightness(int pos, void* userdata) { + Mat src = *(Mat*)userdata; + Mat dst = src + pos; + + imshow("dst", dst); +} + +int brightness4() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + if (src.empty()) { + cerr << "imread()" << endl; + return 1; + } + namedWindow("dst"); + createTrackbar("Brightness", "dst", 0, 100, on_brightness, (void*)&src); + + waitKey(); + destroyAllWindows(); + return 0; +} + +int mosaic() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_COLOR_RGB); + if (src.empty()) { + cerr << "imread()" << endl; + return 1; + } + + const + + Mat dst(src.rows, src.cols, src.type()); + + for (int j = 0; j < src.rows; j++) { + for (int i = 0; i < src.cols; i++) { + dst.at(j, i) = src.at(j, i) + 100; + } + } +} \ No newline at end of file diff --git a/ch05/contrast/contrast.vcxproj b/ch05/contrast/contrast.vcxproj new file mode 100644 index 0000000..35574d1 --- /dev/null +++ b/ch05/contrast/contrast.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {926b8522-38e8-41e3-a358-d9d628dff8a4} + contrast + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/ch05/contrast/contrast.vcxproj.filters b/ch05/contrast/contrast.vcxproj.filters new file mode 100644 index 0000000..2c1b3dc --- /dev/null +++ b/ch05/contrast/contrast.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {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/ch05/contrast/main.cpp b/ch05/contrast/main.cpp new file mode 100644 index 0000000..88f685a --- /dev/null +++ b/ch05/contrast/main.cpp @@ -0,0 +1,68 @@ +#include +#include "opencv2/opencv.hpp" + +using namespace std; +using namespace cv; + +int contrast0(); +int contrast1(); +int contrast2(); + +Mat sigmoid(const Mat& input) { + Mat output; + exp(-1 * input, output); // e^(-x) + output = 1.0 / (1.0 + output); // sigmoid(x) = 1 / (1 + e^(-x)) + return output; +} + +int main() { + return contrast0(); +} + +int contrast0() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + if (src.empty()) { + cerr << "imread()" << endl; + return 1; + } + float alpha = 1.f; + Mat dst = (sigmoid(src * alpha) * 128); + + imshow("src", src); + imshow("dst", dst); + + waitKey(); + destroyAllWindows(); +} + +int contrast1() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + if (src.empty()) { + cerr << "imread()" << endl; + return 1; + } + float s = 2.f; + Mat dst = s * src; + + imshow("src", src); + imshow("dst", dst); + + waitKey(); + destroyAllWindows(); +} + +int contrast2() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + if (src.empty()) { + cerr << "imread()" << endl; + return 1; + } + float alpha = 1.f; + Mat dst = src + (src - 128) * alpha; + + imshow("src", src); + imshow("dst", dst); + + waitKey(); + destroyAllWindows(); +} \ No newline at end of file diff --git a/ch05/histogram/histogram.vcxproj b/ch05/histogram/histogram.vcxproj new file mode 100644 index 0000000..c85e12d --- /dev/null +++ b/ch05/histogram/histogram.vcxproj @@ -0,0 +1,145 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {d0c81788-4531-4e50-a2de-7add77039fce} + histogram + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch05/histogram/histogram.vcxproj.filters b/ch05/histogram/histogram.vcxproj.filters new file mode 100644 index 0000000..bef2799 --- /dev/null +++ b/ch05/histogram/histogram.vcxproj.filters @@ -0,0 +1,32 @@ + + + + + {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/ch05/histogram/main.cpp b/ch05/histogram/main.cpp new file mode 100644 index 0000000..aeba77d --- /dev/null +++ b/ch05/histogram/main.cpp @@ -0,0 +1,81 @@ +#include +#include "opencv2/opencv.hpp" + +using namespace std; +using namespace cv; + +Mat calcGrayHist(const Mat& img); +Mat getGrayHistImage(const Mat& hist); +Mat histogram_stretching(const Mat& src); + +int main() { + VideoCapture video; + video.open("..\\..\\resources\\images\\vtest.avi"); + int fps = video.get(CAP_PROP_FPS); + + Mat src; + + while (true) { + video >> src; + if (src.empty()) + return 1; + imshow("sample", src); + if (waitKey(1000 / fps) == 27) + break; + } + cvtColor(src, src, COLOR_BGR2GRAY); + src = src + 20; + Mat src_hist_img = getGrayHistImage(calcGrayHist(src)); + Mat dst = histogram_stretching(src); + Mat dst_hist_img = getGrayHistImage(calcGrayHist(dst)); + + imshow("src", src); + imshow("srcHist", src_hist_img); + + imshow("dst", dst); + imshow("dstHist", dst_hist_img); + + waitKey(); + destroyAllWindows(); + + return 0; +} + +Mat calcGrayHist(const Mat& img) { + CV_Assert(img.type() == CV_8UC1); + + Mat hist; + int channels[] = { 0, }; + int dims = 1; + const int histSize[] = { 256, }; + float graylevel[] = { 0, 256 }; + const float* ranges[] = { graylevel }; + + calcHist(&img, 1, channels, noArray(), hist, dims, histSize, ranges); + + return hist; +} + +Mat getGrayHistImage(const Mat& hist) { + CV_Assert(hist.type() == CV_32FC1); + CV_Assert(hist.size() == Size(1, 256)); + + double histMax; + minMaxLoc(hist, 0, &histMax); + + Mat imgHist(100, 256, CV_8UC1, Scalar(255)); + for (int i = 0; i < 256; i++) { + line(imgHist, Point(i, 100), Point(i, 100 - cvRound(hist.at(i, 0) * 100 / histMax)), Scalar(0)); + } + + return imgHist; +} + +Mat histogram_stretching(const Mat &src) { + double gmin, gmax; + minMaxLoc(src, &gmin, &gmax); + + Mat dst = (src - gmin) * 255 / (gmax - gmin); + + return dst; +} \ No newline at end of file diff --git a/ch06/Arithmetic/Arithmetic.vcxproj b/ch06/Arithmetic/Arithmetic.vcxproj new file mode 100644 index 0000000..00ea8b5 --- /dev/null +++ b/ch06/Arithmetic/Arithmetic.vcxproj @@ -0,0 +1,148 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {69a9cd92-339e-4cec-8427-3a71197437d4} + Arithmetic + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch06/Arithmetic/Arithmetic.vcxproj.filters b/ch06/Arithmetic/Arithmetic.vcxproj.filters new file mode 100644 index 0000000..0503fa0 --- /dev/null +++ b/ch06/Arithmetic/Arithmetic.vcxproj.filters @@ -0,0 +1,41 @@ + + + + + {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/ch06/Arithmetic/main.cpp b/ch06/Arithmetic/main.cpp new file mode 100644 index 0000000..60b8cd9 --- /dev/null +++ b/ch06/Arithmetic/main.cpp @@ -0,0 +1,82 @@ +#include +#include "opencv2/opencv.hpp" + +using namespace std; +using namespace cv; + +void arithmetic() { + Mat src1 = imread("..\\..\\resources\\images\\lenna256.bmp", IMREAD_GRAYSCALE); + resize(src1, src1, Size(256, 256)); + Mat src2 = imread("..\\..\\resources\\images\\square.bmp", IMREAD_GRAYSCALE); + resize(src2, src2, Size(256, 256)); + + imshow("src1", src1); + imshow("src2", src2); + + Mat dst1, dst2, dst3, dst4; + add(src1, src2, dst1); + addWeighted(src1, 0.5, src2, 0.5, 0, dst2); + subtract(src1, src2, dst3); + absdiff(src1, src2, dst4); + + imshow("dst1", dst1); + imshow("dst2", dst2); + imshow("dst3", dst3); + imshow("dst4", dst4); + waitKey(); +} + +void add() { + Mat img1 = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + resize(img1, img1, Size(256, 256)); + Mat img2 = imread("..\\..\\resources\\images\\Cameraman256.bmp", IMREAD_GRAYSCALE); + + Mat addimg; + + add(img1, img2, addimg, noArray(), -1); + + imshow("img1", img1); + imshow("img2", img2); + imshow("addimg", addimg); + + waitKey(); + destroyAllWindows(); +} + +bool equls(Mat &left, Mat &right) { + for (int i=0; i < left.cols; i++) + for (int j=0; j < left.rows; j++) + if (left.at(j, i) - right.at(j, i)) + return false; + return true; +} + +void _absdiff() { + VideoCapture video; + video.open("..\\..\\resources\\images\\vtest.avi"); + if (!video.isOpened()) + return; + Mat frame, previous_frame; + + video >> frame; + previous_frame = frame; + + double fps = video.get(CAP_PROP_FPS); + + while (!frame.empty()) { + video >> frame; + imshow("frame", frame); + Mat diff; + if (equls(previous_frame, frame)) { + absdiff(frame, previous_frame, diff); + imshow("diff", diff); + } + previous_frame = frame; + waitKey(cvRound(1000/fps)); + } +} + +int main() { + _absdiff(); + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/ch06/logical/logical.vcxproj b/ch06/logical/logical.vcxproj new file mode 100644 index 0000000..772f5be --- /dev/null +++ b/ch06/logical/logical.vcxproj @@ -0,0 +1,143 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {8e7c00ae-b124-4c7e-848f-f85838afc69a} + logical + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch06/logical/logical.vcxproj.filters b/ch06/logical/logical.vcxproj.filters new file mode 100644 index 0000000..69d9c27 --- /dev/null +++ b/ch06/logical/logical.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {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/ch06/logical/main.cpp b/ch06/logical/main.cpp new file mode 100644 index 0000000..c48590a --- /dev/null +++ b/ch06/logical/main.cpp @@ -0,0 +1,29 @@ +#include +#include "opencv2/opencv.hpp" + +using namespace std; +using namespace cv; + +int main() { + Mat img1 = imread("..\\..\\resources\\images\\lenna256.bmp", IMREAD_GRAYSCALE); + resize(img1, img1, Size(256, 256)); + Mat img2 = imread("..\\..\\resources\\images\\square.bmp", IMREAD_GRAYSCALE); + + imshow("img1", img1); + imshow("img2", img2); + + Mat dst1, dst2, dst3, dst4; + + bitwise_and(img1, img2, dst1); + bitwise_or(img1, img2, dst2); + bitwise_xor(img1, img2, dst3); + bitwise_not(img1, dst4); + + imshow("dst1", dst1); + imshow("dst2", dst2); + imshow("dst3", dst3); + imshow("dst4", dst4); + waitKey(); + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/ch07/blurring/blurring.vcxproj b/ch07/blurring/blurring.vcxproj new file mode 100644 index 0000000..9b11a88 --- /dev/null +++ b/ch07/blurring/blurring.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {61942c1c-14ca-49a7-b89a-4c6a8996ca6d} + blurring + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/ch07/blurring/blurring.vcxproj.filters b/ch07/blurring/blurring.vcxproj.filters new file mode 100644 index 0000000..2c1b3dc --- /dev/null +++ b/ch07/blurring/blurring.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {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/ch07/blurring/main.cpp b/ch07/blurring/main.cpp new file mode 100644 index 0000000..4e029e2 --- /dev/null +++ b/ch07/blurring/main.cpp @@ -0,0 +1,24 @@ +#include +#include "opencv2/opencv.hpp" + +using namespace std; +using namespace cv; + +int main() { + Mat src = imread("..\\..\\resources\\images\\rose.bmp", IMREAD_GRAYSCALE); + + imshow("src", src); + + Mat dst; + for (int sigma = 1; sigma <= 5; sigma++) { + GaussianBlur(src, dst, Size(), (double)sigma); + + string text = format("sigma = %d", sigma); + putText(dst, text, Point(10, 30), FONT_HERSHEY_SIMPLEX, 1.0, Scalar(255), 1, LINE_AA); + + imshow(text, dst); + waitKey(0); + } + + destroyAllWindows(); +} \ No newline at end of file diff --git a/ch07/noise/main.cpp b/ch07/noise/main.cpp new file mode 100644 index 0000000..f7534f8 --- /dev/null +++ b/ch07/noise/main.cpp @@ -0,0 +1,52 @@ +#include +#include "opencv2/opencv.hpp" + +using namespace std; +using namespace cv; + +void noise_gaussian() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + + imshow("src", src); + + for (int stddev = 10; stddev <= 100; stddev+=10) { + Mat noise(src.size(), CV_32SC1); + randn(noise, 0, stddev); + + Mat dst; + add(src, noise, dst, Mat(), CV_8U); + + string text = format("stddev = %d", stddev); + putText(dst, text, Point(10, 30), FONT_HERSHEY_SIMPLEX, 1.0, Scalar(255), 1, LINE_AA); + + imshow(text, dst); + waitKey(0); + } + destroyAllWindows(); +} + +void filter_bilateral() { + Mat src = imread("..\\..\\resources\\images\\lenna.bmp", IMREAD_GRAYSCALE); + + Mat noise(src.size(), CV_32SC1); + randn(noise, 0, 5); + add(src, noise, src, Mat(), CV_8U); + + Mat dst1; + GaussianBlur(src, dst1, Size(), 5); + + Mat dst2; + bilateralFilter(src, dst2, -1, 10, 5); + + imshow("src", src); + imshow("dst1", dst1); + imshow("dst2", dst2); + + waitKey(0); + destroyAllWindows(); +} + +int main() { + filter_bilateral(); + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/ch07/noise/noise.vcxproj b/ch07/noise/noise.vcxproj new file mode 100644 index 0000000..ecbcb4e --- /dev/null +++ b/ch07/noise/noise.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {380222ef-ffe1-445f-b409-1dd866df1ed9} + noise + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/ch07/noise/noise.vcxproj.filters b/ch07/noise/noise.vcxproj.filters new file mode 100644 index 0000000..2c1b3dc --- /dev/null +++ b/ch07/noise/noise.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {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/ch07/sharpen/main.cpp b/ch07/sharpen/main.cpp new file mode 100644 index 0000000..abcc5a0 --- /dev/null +++ b/ch07/sharpen/main.cpp @@ -0,0 +1,31 @@ +#include +#include "opencv2/opencv.hpp" + +using namespace std; +using namespace cv; + +void unsharp_mask() { + Mat src = imread("..\\..\\resources\\images\\rose.bmp", IMREAD_GRAYSCALE); + + imshow("src", src); + + for (int sigma = 1; sigma <= 5; sigma++) { + Mat blurred; + GaussianBlur(src, blurred, Size(), (double)sigma); + + constexpr float alpha = 1.f; + Mat dst = (1 + alpha) * src - alpha * blurred; + + string text = format("sigma = %d", sigma); + putText(dst, text, Point(10, 30), FONT_HERSHEY_SIMPLEX, 1.0, Scalar(255), 1, LINE_AA); + + imshow(text, dst); + waitKey(0); + } + destroyAllWindows(); +} + +int main() { + unsharp_mask(); + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/ch07/sharpen/sharpen.vcxproj b/ch07/sharpen/sharpen.vcxproj new file mode 100644 index 0000000..0022dfc --- /dev/null +++ b/ch07/sharpen/sharpen.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {a871f9d8-2dd0-4b01-a304-e738968313f2} + sharpen + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/ch07/sharpen/sharpen.vcxproj.filters b/ch07/sharpen/sharpen.vcxproj.filters new file mode 100644 index 0000000..2c1b3dc --- /dev/null +++ b/ch07/sharpen/sharpen.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {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/cn06/filter/filter.vcxproj b/cn06/filter/filter.vcxproj new file mode 100644 index 0000000..aa01c93 --- /dev/null +++ b/cn06/filter/filter.vcxproj @@ -0,0 +1,142 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {8219467f-93df-4080-8452-97e1ec422d8b} + filter + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/cn06/filter/filter.vcxproj.filters b/cn06/filter/filter.vcxproj.filters new file mode 100644 index 0000000..dfacd42 --- /dev/null +++ b/cn06/filter/filter.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {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/cn06/filter/main.cpp b/cn06/filter/main.cpp new file mode 100644 index 0000000..fe0b9fb --- /dev/null +++ b/cn06/filter/main.cpp @@ -0,0 +1,76 @@ +#include +#include "opencv2/opencv.hpp" + +using namespace std; +using namespace cv; + +void filter_embossing() { + Mat src = imread("..\\..\\resources\\images\\rose.bmp", IMREAD_GRAYSCALE); + + float filter1[] = + { -1, -1, 0, -1, 0, 1, 0, 1, 1 }; + float filter2[] = + { -1, -1, -1, -1, 0, + -1, -1, -1, 0, 1, + -1, -1, 0, 1, 1, + -1, 0, 1, 1, 1, + 0, 1, 1, 1, 1, }; + float filter3[] = + { + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, + -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1 + }; + float filter4[] = + { + -1, -1, -1, 0, 1, 1, 1, + -1, -1, -1, 0, 1, 1, 1, + -1, -1, -1, 0, 1, 1, 1, + -1, -1, -1, 0, 1, 1, 1, + -1, -1, -1, 0, 1, 1, 1, + -1, -1, -1, 0, 1, 1, 1, + -1, -1, -1, 0, 1, 1, 1 + }; + Mat emboss(7, 7, CV_32FC1, filter4); + Mat dst; + + filter2D(src, dst, -1, emboss, Point(-1, -1), 128); + + imshow("src", src); + imshow("dst", dst); + + waitKey(0); + destroyAllWindows(); +} + +void blurring_mean() { + Mat src = imread("..\\..\\resources\\images\\rose.bmp", IMREAD_GRAYSCALE); + + imshow("src", src); + + Mat dst; + for (int ksize = 3; ksize <= 7; ksize += 2) { + blur(src, dst, Size(ksize, ksize)); + + String desc = format("Mean: %dx%d", ksize, ksize); + putText(dst, desc, Point(10, 30), FONT_HERSHEY_SIMPLEX, 1.0, Scalar(255), 1, LINE_AA); + + imshow(desc, dst); + waitKey(0); + } + destroyAllWindows(); +} + +int main() { + filter_embossing(); +} \ No newline at end of file