PVS-Studio рдХреЗ рд╕рд╛рде OpenCV рдкрд░ OpenCvSharp рдЖрд╡рд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛

рдЪрд┐рддреНрд░ 2

OpenCV рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо, рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдХреЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдХрдИ C ++ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред C ++ рдХреЗ рдЕрд▓рд╛рд╡рд╛, OpenCV рдХреЛ Python, Java, Ruby, Matlab, Lua, рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЗрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдореЗрд░рд╛ рдореБрдЦреНрдп, C # рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ C # рдХреЗ рддрд╣рдд OpenCvSharp - рдЖрд╡рд░рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдФрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреНрдпрд╛ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкрд░рд┐рдЪрдп


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдкреНрд░рджрд░реНрд╢рдирд┐рдпреЛрдВ рдореЗрдВ рд░реЛрдмреЛрдЯрд┐рдХреНрд╕ рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рдерд╛ред рдореЗрд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╕реБрдзрд╛рд░ рд╢рд╛рдорд┐рд▓ рдереЗ (рдпрджрд┐ рдПрдХ рдмрдбрд╝рд╛ рдмреНрд░реЗрдХрдбрд╛рдЙрди рд╣реБрдЖ, рддреЛ рд░реЛрдмреЛрдЯ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рднреА рд╣реБрдЖред

рдЪрд┐рддреНрд░ 1

рдердХ рдЧрдП рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдирдП рд╢рд╣рд░ рдореЗрдВ рдкрд╣реБрдВрдЪреЗ, рдореИрдВ рдПрдХ рддрд╛рдЬрд╝рд╛ рдЕрдирдкреИрдХ рдХрд┐рдП рдЧрдП KIKI рд░реЛрдмреЛрдЯ рдХреЗ рд╕рд╛рдеред

рд╡рд┐рдХрд╛рд╕ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рдордЬреЗрджрд╛рд░ рдерд╛ред рдЬрдм рднреА рдЯреАрдо рдХреА рдУрд░ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛, рдкреНрд░рджрд░реНрд╢рдирд┐рдпреЛрдВ рдХреЗ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЛ рдФрд░ рдХреНрдпрд╛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛, рддреЛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд▓рд╛рдП рдФрд░ рдпрджрд┐ рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫрд╛ рдерд╛, рддреЛ рд╣рдордиреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ред рдПрдХ рдмрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рдкреНрд░рд╛рдгреА рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛, рдЬреЛ рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп рднрд╛рд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирд╡реАрдп рдЪреЗрд╣рд░реЗ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред

рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ OpenCV рд╡реЗрдмрд╕рд╛рдЗрдЯ, рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкрд╛рд░ рдЖрдпрд╛ред рдореИрдВ рдЬрд▓реНрдж рд╣реА рдирд┐рд░рд╛рд╢ рд╣реЛ рдЧрдпрд╛ - OpenCV рдХреЛ C ++ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдХреЙрд▓реЗрдЬ рд╕реЗ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рд▓рд╛рднреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдЬреНрдЮрд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЧреЛрд▓рдЧрдкреНрдкреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛, рдореИрдВ OpenCvSharp - C # рдХреЗ рддрд╣рдд рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реИрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛, рдЬреЛ рдореЗрд░реА рдореБрдЦреНрдп рднрд╛рд╖рд╛ рд╣реИред рддрдм рд╕реЗ рдЫрд╣ рдорд╣реАрдиреЗ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ OpenCvSharp рдХреЗ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдЖрдиреЗ рдФрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдЕрдВрдХреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛


OpenCvSharp C # рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OpenCV рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИред OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рд╡реИрд╕реЗ, рд╣рдордиреЗ рднреА рдЬрд╛рдБрдЪ рдХреА ред OpenCvSharp рдХреЗ рдлрд╛рдпрджреЛрдВ рдореЗрдВ рдХреЛрдб рдирдореВрдиреЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕рдВрдЧреНрд░рд╣, рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (рдХрд┐рд╕реА рднреА рдордВрдЪ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореЛрдиреЛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ) рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рдЖрд╕рд╛рдиреАред

рд░реИрдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ C # рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 112,200 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ, 1.2% рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬреЛ рд╕рдВрдпреЛрдЧрд╡рд╢, рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрджрд┐рдЧреНрдз рд░реВрдк рд╕реЗ рдЫреЛрдЯреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реИрдВред рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ 20 рд╕реЗ рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд▓рд┐рдЦреАрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдиреНрдп рднреА рдереЗ рдЬреЛ рдЗрддрдиреЗ рджрд┐рд▓рдЪрд╕реНрдк рдпрд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдереЗред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ


рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реА, рд╕реА ++, рд╕реА # рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдЕрдкреНрд░рд╛рдкреНрдп рдХреЛрдб, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЯрд╛рдЗрдкреЛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рд╕реНрдереИрддрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░реАрдХреНрд╖рдг (рд╕реНрдереИрддрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░реАрдХреНрд╖рдг, SAST) рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЬрд┐рд╕рдиреЗ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╕рдордп рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛


WriteableBitmapConverter рд╡рд┐рдзрд┐ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд╛рд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреА рд╣реИ:

  • V3005 'рдЗрд╖реНрдЯрддрдо рдЪреИрдирд▓ [PixelFormats.Indexed1]' рдЪрд░ рдХреЛ рд╣реА рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдЦрдиреАрдп BitmapConverter.cs 22
  • V3005 'рдЗрд╖реНрдЯрддрдордЪреИрдирд▓реНрд╕ [PixelFormats.Indexed8]' рдЪрд░ рдЦреБрдж рдХреЛ рд╕реМрдВрдкрд╛ рд╣реИред рд▓реЗрдЦрдиреАрдп BitmapConverter.cs 23
  • V3005 'рдЗрд╖реНрдЯрддрдордЯреЗрдкреНрд╕ [PixelFormats.Indexed1]' рдЪрд░ рдХреЛ рдЦреБрдж рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдЦрдиреАрдп BitmapConverter.cs 50
  • V3005 'рдЗрд╖реНрдЯрддрдо рдЯрд╛рдЗрдк [PixelFormats.Indexed8]' рдЪрд░ рдХреЛ рдЦреБрдж рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдЦрдиреАрдп BitmapConverter.cs 51

static WriteableBitmapConverter() { optimumChannels = new Dictionary <PixelFormat, int>(); optimumChannels[PixelFormats.Indexed1] = // <= optimumChannels[PixelFormats.Indexed8] = // <= optimumChannels[PixelFormats.Gray2] = optimumChannels[PixelFormats.Gray4] = optimumChannels[PixelFormats.Gray8] = optimumChannels[PixelFormats.Gray16] = optimumChannels[PixelFormats.Gray32Float] = optimumChannels[PixelFormats.Indexed1] = // <= optimumChannels[PixelFormats.Indexed2] = optimumChannels[PixelFormats.Indexed4] = optimumChannels[PixelFormats.Indexed8] = // <= .... optimumTypes = new Dictionary <PixelFormat, MatType>(); optimumTypes[PixelFormats.Indexed1] = // <= optimumTypes[PixelFormats.Indexed8] = // <= optimumTypes[PixelFormats.Gray2] = optimumTypes[PixelFormats.Gray4] = optimumTypes[PixelFormats.Gray8] = optimumTypes[PixelFormats.Indexed1] = // <= optimumTypes[PixelFormats.Indexed2] = optimumTypes[PixelFormats.Indexed4] = optimumTypes[PixelFormats.Indexed8] = // <= optimumTypes[PixelFormats.BlackWhite] = .... } .... public static class PixelFormats { .... public static PixelFormat Indexed8 { get; } .... public static PixelFormat Indexed1 { get; } .... } 

PixelFormats рд╡рд░реНрдЧ System.Windows.Media рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ WriteableBitmapConverter рд╡рд┐рдзрд┐ рдЗрд╖реНрдЯрддрдоChannels [PixelFormats.Indexed1] рдФрд░ рдЗрд╖реНрдЯрддрдордЪреИрдирд▓реНрд╕ [PixelFormats.Indexed8] рддрддреНрд╡реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдорд╛рдирддреА рд╣реИ , рдЬреЛ рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд░рд▓ рдЯрд╛рдЗрдкреЛ рд╣реИ рдпрд╛ рдХреБрдЫ рдФрд░ рдерд╛ред рд╡реИрд╕реЗ, рдХреЛрдб рдХрд╛ рдпрд╣ рдЦрдВрдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреА рдЖрдБрдЦреЗрдВ "рдзреБрдВрдзрд▓рд╛" рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдЖрдкрдХреА рд╕рд╛рд╡рдзрд╛рдиреА рднрдВрдЧ рд╣реЛ рдЬрд╛рддреА рд╣реИ - рдХреЛрдб рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЯрд╛рдЗрдкреЛ рд░реЗрдВрдЧрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдФрд░ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЪреМрдХрд╕рддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЖрд░рд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдЪрд┐рддреНрд░ 5

рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рд╢рдХреНрддрд┐ рдФрд░ рд╢рдХреНрддрд┐ рдорд╣рд╕реВрд╕ рдХрд░реЛред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА : V3021 рд╕рдорд╛рди рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ 'рдпрджрд┐' рдХрдерди рд╣реИрдВред рдкрд╣рд▓реЗ 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдореЗрдердб рд░рд┐рдЯрд░реНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдмреЗрд╣реВрджрд╛ InputArray.cs 394 рд╣реИ

 private static MatType EstimateType(Type t) { .... if (t == typeof(Vec2b)) return MatType.CV_8UC2; if (t == typeof(Vec3b)) return MatType.CV_8UC3; if (t == typeof(Vec4b)) return MatType.CV_8UC4; if (t == typeof(Vec6b)) return MatType.CV_8UC(6); if (t == typeof(Vec2s)) // <= return MatType.CV_16SC2; .... if (t == typeof(Vec2s)) // <= return MatType.CV_32SC2; .... } 

рдпрд╣ рддреНрд░реБрдЯрд┐ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдереЛрдбрд╝реА рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдИ рдЬрд╣рд╛рдВ рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рдХреА рджреЛ рдмрд╛рд░ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ - рдлрд┐рд░ "рдбреБрдкреНрд▓рд┐рдХреЗрдЯреЗрдб" рдХреА рд╢рд╛рдЦрд╛ рдпрджрд┐ рдХрдерди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ:

  • рдпрджрд┐ рдкрд╣рд▓реА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рд╣реА рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧреА;
  • рдпрджрд┐ рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐ рдЭреВрдареА рд╣реИ, рддреЛ рджреВрд╕рд░реА рднреА рдЭреВрдареА рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЪрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ - рдЯреА - рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред

рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░реЗ рдЪрд░ Vec2s рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХреБрдЫ рдЕрдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3010 'ToString' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред ImgProcTest.cs 80

 public static RectanglesIntersectTypes RotatedRectangleIntersection(RotatedRect rect1, RotatedRect rect2, out Point2f[] intersectingRegion) { using (var intersectingRegionVec = new VectorOfPoint2f()) { int ret = NativeMethods .imgproc_rotatedRectangleIntersection_vector( rect1, rect2, intersectingRegionVec.CvPtr); intersectingRegion = intersectingRegionVec.ToArray(); return (RectanglesIntersectTypes) ret; } } public void RotatedRectangleIntersectionVector() { var rr1 = new RotatedRect(new Point2f(100, 100), new Size2f(100, 100), 45); var rr2 = new RotatedRect(new Point2f(130, 100), new Size2f(100, 100), 0); Cv2.RotatedRectangleIntersection(rr1, rr2, out var intersectingRegion); .... intersectingRegion.ToString(); } 

RotatedRectangleIntersection рд╡рд┐рдзрд┐ intersectingRegion рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Point2f рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рдж рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде intersectingRegion рдореЗрдВ рднрд░ рдЬрд╛рддрд╛ рд╣реИ, ToString () рд╡рд┐рдзрд┐ рдЗрд╕ рд╕рд░рдгреА рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде, рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдкрд░ рд╕рдВрджреЗрд╣ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЧрдпрд╛ред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА :

  • V3021 рд╕рдорд╛рди рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ 'рдпрджрд┐' рдХрдерди рд╣реИрдВред рдкрд╣рд▓реЗ 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдореЗрдердб рд░рд┐рдЯрд░реНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ 'рдЕрдЧрд░' рдХрдерди рд╕рдВрд╡реЗрджрдирд╣реАрди рд╣реИ Cv2_calib3d.cs 1370
  • V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдСрдмреНрдЬреЗрдХреНрдЯрдкреЙрдЗрдВрдЯреНрд╕ == рдирд▓' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред Cv2_calib3d.cs 1372

 public static double CalibrateCamera(....) { if (objectPoints == null) throw new ArgumentNullException(nameof(objectPoints)); if (objectPoints == null) throw new ArgumentNullException(nameof(objectPoints)); .... } 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдирдХрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рджреЛ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреАрдВред рдкрд╣рд▓реА рдЪреЗрддрд╛рд╡рдиреА рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдпрджрд┐ рджреЛрдиреЛрдВ рдмрдпрд╛рдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдпрджрд┐ рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рддреНрдп рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рддрддреНрдХрд╛рд▓реАрди рд╢рд╛рдЦрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧреА рдпрджрд┐ рдкрд╣рд▓реЗ рдХрдерди ред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреЗрддрд╛рд╡рдиреА рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдкрд╛рда рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рд╕рд╣реА рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред

рдЪрд┐рддреНрд░ 6

рдкреНрдпрд╛рд░рд╛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯред

рдЕрдиреНрдп рд╕рдорд╛рди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ:

  • V3021 рд╕рдорд╛рди рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ 'рдпрджрд┐' рдХрдерди рд╣реИрдВред рдкрд╣рд▓реЗ 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдореЗрдердб рд░рд┐рдЯрд░реНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ 'рдЕрдЧрд░' рдХрдерди рд╕рдВрд╡реЗрджрдирд╣реАрди рд╣реИ Cv2_calib3d.cs 1444
  • V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдСрдмреНрдЬреЗрдХреНрдЯрдкреЙрдЗрдВрдЯреНрд╕ == рдирд▓' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред Cv2_calib3d.cs 1446

PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА : V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рд▓реЗрдмрд▓ == рдорд╛рд░реНрдХрд░рд╡реЗрд▓' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред Labeller.cs 135

 internal static class Labeller { .... private const int MarkerValue = -1; public static int Perform(Mat img, CvBlobs blobs) { .... int label = 0; int lastLabel = 0; CvBlob lastBlob = null; for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) { if (imgIn[x + y * step] == 0) continue; bool labeled = labels[y, x] != 0; if (....) { labeled = true; // Label contour. label++; if (label == MarkerValue) // <= throw new Exception(); .... } .... } .... } } } 

рдХреЛрдб рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рд╢реВрдиреНрдп рдХрд╛ рдПрдХ рд▓реЗрдмрд▓ рдЪрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЛрдб рдореЗрдВ, рдЪрд░ рд▓реЗрдмрд▓ рдХрд╛ рдорд╛рди рдиреАрдЪреЗ рдХреА рдУрд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдПрдХ рддреАрд░ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд▓рд╛рдЗрди рдореЗрдВ, рдЗрд╕ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдПрдХ рд╕реНрдерд┐рд░ рдмрд░рд╛рдмрд░ -1 рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА : V3038 рддрд░реНрдХ рдХреЛ рдХрдИ рдмрд╛рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдиреНрдп рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Cv2_photo.cs 124

 public static void FastNlMeansDenoisingMulti(....) { .... NativeMethods.photo_fastNlMeansDenoisingMulti( srcImgPtrs, srcImgPtrs.Length, dst.CvPtr, imgToDenoiseIndex, templateWindowSize, h, templateWindowSize, searchWindowSize); .... } 

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЖрдЗрдП photo_fastNlMeansDenoisingMulti рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ :

 public static extern void photo_fastNlMeansDenoisingMulti( IntPtr[] srcImgs, int srcImgsLength, IntPtr dst, int imgToDenoiseIndex, int temporalWindowSize, float h, int templateWindowSize, int searchWindowSize) 

рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рд╕рд░рд▓ рдХрд░реЗрдВред рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ:

 NativeMethods.photo_fastNlMeansDenoisingMulti( .... templateWindowSize, .... templateWindowSize, ....); public static extern void photo_fastNlMeansDenoisingMulti( .... int temporalWindowSize, .... int templateWindowSize, ....) 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рджреЛ рдмрд╛рд░ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд╕реНрдерд╛рди рдкрд░, рдЯреЗрдореНрдкреЛрд░рд▓рд╡рд┐рдВрдбреЛрд╡рд╛рдЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рднреА рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рд╣реИ рдХрд┐ photo_fastNlMeansDenoisingMulti рд╡рд┐рдзрд┐ рдореЗрдВ TemalWindowSize рдХрд╛ рдорд╛рди рдмрд┐рд▓реНрдХреБрд▓ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ?

рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдиреА:

  • V3038 рддрд░реНрдХ рдХрдИ рдмрд╛рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдиреНрдп рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Cv2_photo.cs 149
  • V3038 рддрд░реНрдХ рдХрдИ рдмрд╛рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдиреНрдп рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Cv2_photo.cs 180
  • V3038 рддрд░реНрдХ рдХрдИ рдмрд╛рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдиреНрдп рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Cv2_photo.cs 205

рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧреАред

рдЪреЗрддрд╛рд╡рдиреА PVS-Studio : V3066 'рдХреИрд▓рд┐рдм 3 рдбреА_ рд░реЛрдбреНрд░рд┐рдЧреНрд╕_рдореИрдЯрд╡реЗрдХ' рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдЧрд▓рдд рдХреНрд░рдо: 'рдореИрдЯреНрд░рд┐рдХреНрд╕рдПрдо.рдХрд╡рд░рдкреЙрдЯ' рдФрд░ 'рд╡реЗрдХреНрдЯрд░рдПрдо.рдХрд╡рд░рдкреЙрдЯ'ред Cv2_calib3d.cs 86

 public static void Rodrigues(double[,] matrix, out double[] vector, out double[,] jacobian) { .... using (var jacobianM = new Mat<double>()) { NativeMethods.calib3d_Rodrigues_MatToVec (matrixM.CvPtr, vectorM.CvPtr, jacobianM.CvPtr); .... } } 

рдЖрдЗрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ calib3d_Rodrigues_MatToVec

 public static extern void calib3d_Rodrigues_MatToVec( IntPtr vector, IntPtr matrix, IntPtr jacobian) 

рд╢рд╛рдпрдж, рдЬрдм calib3d_Rodrigues_MatToVec рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддрд░реНрдХреЛрдВ рдореИрдЯреНрд░рд┐рдХреНрд╕рдПрдо.рдХрд╡рд░рдкреЙрдЯ рдФрд░ рд╡реЗрдХреНрдЯрд░рдПрдо.рдХрд╡рд░рдкреЙрдЯ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕ рдХреЛрдб рдкрд░ рдмрд╛рд░реАрдХреА рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдмрд╛рдд рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ рдЬреЛ рд╕рд╣реА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреА рд╣реИред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА : V3063 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдбреЗрдЯрд╛ == рдЕрд╢рдХреНрддред Mat.cs 3539

 private void CheckArgumentsForConvert(....) { .... if (data == null) throw new ArgumentNullException(nameof(data)); MatType t = Type(); if (data == null || (data.Length * dataDimension) // <= (data.Length * dataDimension) % t.Channels != 0) .... } 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ рдЪреЗрдХ рдбреЗрдЯрд╛ == рдЕрд╢рдХреНрдд рдХрднреА рд╕рдЪ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбреЗрдЯрд╛ рдЕрд╢рдХреНрдд рд╣реИ , рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рджреВрд╕рд░реЗ рдЪреЗрдХ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧрд╛ред

рдЪрд┐рддреНрд░ 7

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдердХреЗ рд╣реБрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрдо рдмрдЪрд╛ рд╣реИред

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3127 рджреЛ рд╕рдорд╛рди рдХреЛрдб рдЕрдВрд╢ рдкрд╛рдП рдЧрдПред рд╢рд╛рдпрдж, рдпрд╣ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ рдФрд░ 'src2' Cv2_imgprocs 1547 рдХреЗ рдмрдЬрд╛рдп 'рд╡рд┐рдВрдбреЛ' рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

 public static Point2d PhaseCorrelateRes(....) { if (src1 == null) throw new ArgumentNullException(nameof(src1)); if (src2 == null) throw new ArgumentNullException(nameof(src2)); if (window == null) throw new ArgumentNullException(nameof(src2)); // <= .... } 

рдФрд░ рдлрд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдХ рдЯрд╛рдЗрдкреЛ рдкрд╛рдпрд╛ред рдХреЛрдб рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рдЪрд░реЛрдВ рдХреЗ рдорд╛рди рдХреЛ рдЕрд╢рдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╢рд░реНрдд рдкреВрд░реА рд╣реЛрддреА рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рдВрдбреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдпрд╣ рдЪрд░ рд╢реВрдиреНрдп рд╣реИ , рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рднреА рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХрд╛ рдкрд╛рда рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЪрд░ рд╡рд┐рдВрдбреЛ рд╕реНрд╡рдпрдВ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рдкрд╛рда рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, src2 рд╡рд╣рд╛рдБ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрд░рд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:

 if (window == null) throw new ArgumentNullException(nameof(window)); 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3142 рдЕрдиреБрдкрд▓рдмреНрдз рдХреЛрдб рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдореМрдЬреВрдж рд╣реЛред MatOfT.cs 873

рдЕрдм, рдПрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдорд╛рдорд▓реЗ рдХреЛ рджреЗрдЦреЗрдВ рдЬрдм рдПрдХ рдЕрдиреБрдкрдпреЛрдЧреА рдХреЛрдб рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрдм рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд╣реА рдФрд░ рдЧрд▓рдд рджреЛрдиреЛрдВ рд╣реИред

 public new Mat<TElem> SubMat(params Range[] ranges) { Mat result = base.SubMat(ranges); return Wrap(result); } 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рд╡рд╛рдкрд╕реА рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмрдореИрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдХреЛ рджреЗрдЦреЗрдВ ред

 public Mat SubMat(params Range[] ranges) { throw new NotImplementedException(); /* if (ranges == null) throw new ArgumentNullException(); ThrowIfDisposed(); CvSlice[] slices = new CvSlice[ranges.Length]; for (int i = 0; i < ranges.Length; i++) { slices[i] = ranges[i]; } IntPtr retPtr = NativeMethods.core_Mat_subMat1(ptr, ranges.Length, ranges); Mat retVal = new Mat(retPtr); return retVal;*/ } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рдЕрднреА рддрдХ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рдФрд░ рдЕрдкреНрд░рд╛рдкреНрдп рдХреЛрдб рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрд▓рддреА рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ред

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдИ рдЧрдИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреАрди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЗрддрдиреА рд╢рд╛рдВрдд рд╣реИрдВ рдХрд┐ рдореИрдВ рдЙрди рд╕рднреА рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'String.IsNullOrEmpty ("winName")' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИред Cv2_highgui.cs 46

 public static void DestroyWindow(string winName) { if (String.IsNullOrEmpty("winName")) .... } 

PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА : V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ' string.IsNullOrEmpty (" рдлрд╝рд╛рдЗрд▓рдирд╛рдо ")' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ.рдПрд╕рд╕реА 37

 public static FrameSource CreateFrameSource_Video(string fileName) { if (string.IsNullOrEmpty("fileName")) .... } 

PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА : V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ' string.IsNullOrEmpty (" рдлрд╝рд╛рдЗрд▓рдирд╛рдо ")' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ.рдХреЗред 53

 public static FrameSource CreateFrameSource_Video_CUDA(string fileName) { if (string.IsNullOrEmpty("fileName")) .... } 

рдХрднреА-рдХрднреА V3022 рд╡рд┐рд╢реНрд▓реЗрд╖рдХ (рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣рдореЗрд╢рд╛ рд╕рдЪ / рдЧрд▓рдд рд╣реИ) рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдкреАрдЫреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЬреАрдм рдпрд╛ рдЕрдЬреАрдм рдЪреАрдЬреЗрдВ рд╣реИрдВред рддреАрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рджреЗрдЦреА рдЬрд╛рддреА рд╣реИред рд╡рд┐рдзрд┐ рдХреЛрдб рдореЗрдВ рдкреНрд░рдХрд╛рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЙрд╕ рдЪрд░ рдХрд╛ рдорд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ, рдЕрд░реНрдерд╛рддреНред рдирд╛рдо рд╡реНрдпрд░реНрде рд╣реИред

рдЪрд┐рддреНрд░ 18

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдПрдХ рдмрд╛рд░ рд╕реАрд▓ рдХреА рдФрд░, рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдХрд┐рдпрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


OpenCvSharp рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рд╢рд╛рдирджрд╛рд░ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдФрд░ рдореИрдВ, рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдирдХрд╛ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд╣реВрдВред рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреАрдо рдореЗрдВ рд╣реЛрдиреЗ рдФрд░ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╕реНрдерд┐рд░ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЖрдзрд╛рд░ рдкрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдорд╣рдВрдЧреА рд╡рд┐рдзрд┐рдпреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд░реАрдХреНрд╖рдг) рджреНрд╡рд╛рд░рд╛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдХреБрдЫ рдЖрдо рддреМрд░ рдкрд░ рдХреЛрдб рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдвреВрдВрдврддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рджрд░реНрд╢рди рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдиреЛрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рдЧрд┐рдЯрд╣рдм рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдореБрдлреНрдд рд▓рд╛рдЗрд╕реЗрдВрд╕рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдФрд░ рдирд┐рдпрдорд┐рдд рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред



рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдХрд╛рддреЗрд░рд┐рдирд╛ рдирд┐рдХрд┐рдлреЛрд░реЛрд╡рд╛ред PVC-Studio рдХреЗ рд╕рд╛рде OpenCV рдХреЗ рд▓рд┐рдП OpenCvSharp Wrapper рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ ред

Source: https://habr.com/ru/post/hi473476/


All Articles