{"id":317812,"date":"2021-02-10T15:01:57","date_gmt":"2021-02-10T15:01:57","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=317812"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=317812","title":{"rendered":"\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8c7\/a56\/e8b\/8c7a56e8b7d241bababe7cd59e6f453d.png\" width=\"1280\" height=\"720\"><figcaption><\/figcaption><\/figure>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u2014 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438. \u041c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446 (\u0442\u0435\u043d\u0437\u043e\u0440\u043e\u0432) \u0447\u0438\u0441\u0435\u043b, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438. \u041e\u0431\u044b\u0447\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u0430\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e, \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0447\u0438\u0441\u0435\u043b, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0449\u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u043e\u043d (\u0446\u0432\u0435\u0442) \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446 (\u0442\u0435\u043d\u0437\u043e\u0440\u043e\u0432) \u0447\u0438\u0441\u0435\u043b, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438: \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u043a\u0432 \u0438 \u0446\u0438\u0444\u0440 (CAPTCHA). \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0431\u0443\u043a\u0432\u044b \u0438 \u0446\u0438\u0444\u0440\u044b, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445. \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ul>\n<li>\n<p>\u0430\u043d\u0430\u043b\u0438\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cc7\/3f3\/d3a\/cc73f3d3aa9bb0a988d7d6d522103735.png\" alt=\"\u0420\u0438\u0441.1 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (CAPTCHA)\" title=\"\u0420\u0438\u0441.1 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (CAPTCHA)\" width=\"800\" height=\"120\"><figcaption>\u0420\u0438\u0441.1 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (CAPTCHA)<\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 100 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u00ab.png\u00bb. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 29 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u00ab12345789\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u044f\u00bb. \u0421\u0438\u043c\u0432\u043e\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0443\u0433\u043e\u043b (\u043e\u0442 -1\u00b0 \u2013+15\u00b0), \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u044b \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430. \u0421\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0446\u0432\u0435\u0442\u0435, \u0432\u0441\u0435 \u0442\u0440\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430. \u041d\u0430 \u0444\u043e\u043d\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043b\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u0441\u0432\u0435\u0442\u043b\u044b\u0445 \u043e\u0442\u0442\u0435\u043d\u043a\u0430\u0445 (\u0448\u0443\u043c \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438). \u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u0432\u044b\u0432\u043e\u0434\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 python 3 opencv, matplotlib, pillow. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043f\u0443\u0442\u0435\u043c \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043b\u0438\u043d\u0438\u0439:<\/p>\n<pre><code class=\"python\">import cv2 # \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u0440\u0430\u0431.\u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439 image = cv2.imread('.\\Captcha.png') # \u0447\u0438\u0442\u0430\u0435\u043c \u0438\u0437\u043e\u0431. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 numpy array # \u0440\u0438\u0441\u0443\u0435\u043c \u043b\u0438\u043d\u0438\u044e (img, (x1, y1), (x2, y2), (255, 255, 255), 4) \u2013      # \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0438\u0441\u0443\u0435\u043c, \u0442\u043e\u0447\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043b\u0438\u043d\u0438\u0438, \u0442\u043e\u0447\u043a\u0430 \u043a\u043e\u043d\u0446\u0430 \u043b\u0438\u043d\u0438\u0438,      # \u0446\u0432\u0435\u0442 \u043b\u0438\u043d\u0438\u0438 \u0446\u0432\u0435\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c BGR, \u0442\u043e\u043b\u0449\u0438\u043d\u0430 \u043b\u0438\u043d\u0438\u0438. image = cv2.line(image, (14, 0), (14, 50), (0, 0, 255), 1)     \u2026 # \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u0438\u043e\u0437\u0431\u0440., \u0438\u043c\u044f \u043e\u043a\u043d\u0430 def view_image(image, name_wind='default'):     cv2.namedWindow(name_wind, cv2.WINDOW_NORMAL) # # \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u043a\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0430     cv2.imshow(name_wind, image) # # \u0432 \u043e\u043a\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 image     cv2.waitKey(0) # # \u0436\u0434\u0435\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043b\u044e\u0431\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, 0 \u043d\u0435\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430.     cv2.destroyAllWindows() # # \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u0435 (\u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435) \u0432\u0441\u0435\u0445 \u043e\u043a\u043e\u043d view_image(image)  # # \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/98f\/35e\/6d4\/98f35e6d491991b08723a6fabf19ae84.png\" alt=\"\u0420\u0438\u0441. 2 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\" title=\"\u0420\u0438\u0441. 2 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\" width=\"160\" height=\"90\"><figcaption>\u0420\u0438\u0441. 2 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430<\/figcaption><\/figure>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c matplotlib, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u043e\u0434\u0435\u043b\u044c\u044e RGB: \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 BGR \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f, \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u044b\u0439 \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0435\u0442 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u044b\u043c \u0441\u0438\u043d\u0438\u043c \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f. \u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 matplotlib (\u0435\u0441\u043b\u0438 \u0446\u0432\u0435\u0442\u0430 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0446\u0432\u0435\u0442\u043e\u0432 \u0441\u0438\u043d\u0435\u0433\u043e \u0438 \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043b\u0438\u043d\u0438\u0439, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435. \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432\u0435\u0440\u0445\u043d\u044f\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 3 \u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0438\u0436\u043d\u044f\u044f \u043d\u0430 47. \u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b (\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u044f\u0442): \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 14\u201344 \u043a\u043e\u043b\u043e\u043d\u043a\u0430, \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430: 32\u201362 \u043a\u043e\u043b\u043e\u043d\u043a\u0430, \u0434\u043b\u044f \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430: 48 \u201372. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 opencv \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u0430 numpy array, \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e (50, 100, 3). \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 3 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0438\u0437 50 \u0441\u0442\u0440\u043e\u043a \u0438 100 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u0432\u043e\u0439 \u0446\u0432\u0435\u0442 BGR (blue \u0441\u0438\u043d\u0438\u0439, green \u0437\u0435\u043b\u0435\u043d\u044b\u0439, red \u043a\u0440\u0430\u0441\u043d\u044b\u0439), \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 &nbsp;&nbsp;3-\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 0-255.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aa6\/cf6\/991\/aa6cf69919cf111312d7673b625ac197.png\" alt=\"\u0420\u0438\u0441.3 \u0426\u0432\u0435\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c RGB\" title=\"\u0420\u0438\u0441.3 \u0426\u0432\u0435\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c RGB\" width=\"227\" height=\"113\"><figcaption>\u0420\u0438\u0441.3 \u0426\u0432\u0435\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c RGB<\/figcaption><\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u044b \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0446\u0432\u0435\u0442\u043e\u0432. \u0422\u0430\u043a \u043a\u0430\u043a \u0441\u0438\u043c\u0432\u043e\u043b \u0438\u043c\u0435\u0435\u0442 \u043d\u0435 \u0447\u0435\u0442\u043a\u0438\u0439 \u0446\u0432\u0435\u0442, \u0430 \u0441\u0443\u043c\u043c\u0443 \u0446\u0432\u0435\u0442\u043e\u0432, \u043a \u043a\u0440\u0430\u044f\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u0442\u043e\u043d, \u0441\u0443\u043c\u043c\u0430 \u0446\u0432\u0435\u0442\u043e\u0432 \u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u0434\u043b\u044f \u0442\u0440\u0435\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 B(n-m) G(k-l) R(y-z). \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 HSV (Hue, Saturation, Value \u2014 \u0442\u043e\u043d, \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u044f\u0440\u043a\u043e\u0441\u0442\u044c). \u0412 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 opencv \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f Heu 0 \u2013 179, S 0 \u2013 255, V 0 \u2013255. \u041f\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0435\u043a\u0442\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 Heu \u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f S 10 \u2013 255, V 0 \u2013 234, \u043e\u0442\u0441\u0435\u043a\u0430\u044f \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0444\u043e\u043d \u0438 \u0448\u0443\u043c\u043e\u0432\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0442\u043b\u044b\u0445 \u0442\u043e\u043d\u0430\u0445.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/39d\/0a9\/5f3\/39d0a95f35496eaf306c354aff5a2e4e.png\" alt=\"\u0420\u0438\u0441.4 \u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 RGB (BGR) \u0438 HSV\" title=\"\u0420\u0438\u0441.4 \u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 RGB (BGR) \u0438 HSV\" width=\"600\" height=\"280\"><figcaption>\u0420\u0438\u0441.4 \u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 RGB (BGR) \u0438 HSV<\/figcaption><\/figure>\n<pre><code class=\"python\"># # \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 BGR \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 HSV image = cv2.imread('.\\captcha_png') hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)<\/code><\/pre>\n<p>HSV \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0442\u0435\u043d\u0437\u043e\u0440 (50, 100, 3) (3 \u043c\u0430\u0442\u0440\u0438\u0446\u044b numpy array \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e (50, 100), 50 \u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 100 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439). \u0418\u043d\u0434\u0435\u043a\u0441\u044b \u043c\u0430\u0442\u0440\u0438\u0446 \u2014 [:, :, 0] Hue, [:, :, 1] Saturation, [:, :, 2] Value.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c54\/f40\/174\/c54f40174b6d0d40a93269af4259d4d2.png\" alt=\"\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\" title=\"\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\" width=\"400\" height=\"120\"><figcaption>\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/figcaption><\/figure>\n<p>\u041e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0432 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430\u0445 \u0441\u0435\u0440\u043e\u0433\u043e (0 \u2013 \u0447\u0435\u0440\u043d\u044b\u0439 255 \u2013 \u0431\u0435\u043b\u044b\u0439).<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f9d\/a34\/2cb\/f9da342cb1ef51a8a2fd0e1a45120f13.png\" width=\"400\" height=\"120\"><figcaption><\/figcaption><\/figure>\n<p>[:,:, 0] \u0422\u043e\u043d, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0435\u043b\u044b\u0439 \u0442.\u043a. \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0434\u043e 179, \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u0446\u0432\u0435\u0442\u043e\u0432 160 \u2013 179 \u0438 0~30 \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0446\u0432\u0435\u0442, 60 ~ 100 \u0437\u0435\u043b\u0435\u043d\u044b\u0439, 110 ~ 150 \u0441\u0438\u043d\u0438\u0439. \u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0446\u0438\u0444\u0440\u0430 9 \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0442\u043b\u0430\u044f \u0442.\u043a. \u043e\u0442\u0442\u0435\u043d\u043e\u043a \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u043e\u043f\u0430\u043b \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043e\u0442 160, \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0431\u0443\u043a\u0432\u0430 \u00ab\u043c\u00bb \u0447\u0435\u0440\u043d\u0430\u044f \u0442.\u043a. \u043e\u0442\u0442\u0435\u043d\u043e\u043a \u043f\u043e\u043f\u0430\u043b \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d 0~30<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/198\/860\/025\/1988600250f1c06ea24decdfbecd3205.png\" width=\"400\" height=\"120\"><figcaption><\/figcaption><\/figure>\n<p>[:,:, 1] \u041d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0444\u043e\u043d \u0438 \u0448\u0443\u043c \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0441\u0432\u0435\u0442\u043b\u044b\u0445, \u043f\u0430\u0441\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u043d\u0430\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0~10, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u043c\u0435\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 &gt;10<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/29f\/1e4\/3d9\/29f1e43d93bd120f7af30220d482f1de.png\" width=\"400\" height=\"120\"><figcaption><\/figcaption><\/figure>\n<p>[:,:, 2] \u042f\u0440\u043a\u043e\u0441\u0442\u044c, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043b\u043e\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u0444\u043e\u043d\u0430 240 ~ 255, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0431\u043e\u043b\u0435\u0435 \u0442\u0435\u043c\u043d\u0435\u0435 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f &lt; 240.<\/p>\n<p>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446 S \u0438 V (\u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u044f\u0440\u043a\u043e\u0441\u0442\u044c), \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043e\u0442 \u0444\u043e\u043d\u0430 \u0438 \u043e\u0442 \u0448\u0443\u043c\u0430 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 Hue (\u0442\u043e\u043d).<\/p>\n<pre><code class=\"python\">mask_S = image[:, :, 1]&amp;lt; 10; mask_V = image[:, :, 1] &gt; 240<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u0434\u0432\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0431\u0443\u043b\u0435\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 (50, 100) [[True, False, ..,], \u2026, [..]]. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0438\u0441\u0442\u0438\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u043e\u043d \u0438 \u0448\u0443\u043c. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043a \u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u0442\u043e\u043d (Hue) \u0438 \u043f\u0440\u0438\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0438\u0441\u0442\u0438\u043d\u0430 255, \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0-179, 255 \u2013 \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 (\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u0442\u043e\u043d, Hue).<\/p>\n<pre><code class=\"python\"># \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 255 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043c\u0430\u0442\u0440\u0438\u0446\u044b 0 - 179 image[:, :, 0][mask_S] = 255 ; image[:, :, 0][mask_V] = 255<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/51a\/4ce\/fc1\/51a4cefc13b271abfc2682a73a98108b.png\" alt=\"\u0420\u0438\u0441.5 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u043e\u043d \u0438 \u0447\u0430\u0441\u0442\u044c \u0448\u0443\u043c\u0430 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 255\" title=\"\u0420\u0438\u0441.5 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u043e\u043d \u0438 \u0447\u0430\u0441\u0442\u044c \u0448\u0443\u043c\u0430 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 255\" width=\"250\" height=\"125\"><figcaption>\u0420\u0438\u0441.5 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u043e\u043d \u0438 \u0447\u0430\u0441\u0442\u044c \u0448\u0443\u043c\u0430 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 255<\/figcaption><\/figure>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u0430\u043f \u2014 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u0417\u0430\u0434\u0430\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/37b\/846\/173\/37b846173a3656d1ef89378139848bf7.png\" alt=\"\u0420\u0438\u0441.6 \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\u043c\" title=\"\u0420\u0438\u0441.6 \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\u043c\" width=\"600\" height=\"120\"><figcaption>\u0420\u0438\u0441.6 \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\u043c<\/figcaption><\/figure>\n<pre><code>img_char1 = image[3: 47, 14: 44, 0].copy() img_char2 = image[3: 47, 32: 62, 0].copy() img_char3 = image[3: 47, 48: 78, 0].copy()<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043e\u0442\u0441\u0435\u043a\u0430\u0435\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0442\u043e\u043d\u0430\u043c \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u043c\u0435\u0435\u0442 \u0447\u0438\u0441\u043b\u043e 255 \u0444\u043e\u043d (500 \u2013 800 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435), \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u043e\u043d \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043d\u0435 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0448\u0443\u043c). \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0442\u043e\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043e\u0442\u0442\u0435\u043d\u043a\u043e\u0432 N -10, N + 10.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b89\/bc5\/89e\/b89bc589ee7a4d65c1b76e1760347867.png\" alt=\"\u0420\u0438\u0441.7 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 1 \u0438 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\" title=\"\u0420\u0438\u0441.7 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 1 \u0438 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\" width=\"280\" height=\"186\"><figcaption>\u0420\u0438\u0441.7 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 1 \u0438 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430<\/figcaption><\/figure>\n<p>\u041e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0447\u0430\u0441\u0442\u044c 1 \u0438 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0435 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u0442\u043e\u043d.<\/p>\n<pre><code># \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 val_count_1 = img_char1[3: 47, 14: 32, 0].copy().reshape(-1)  val_color_hue_1 = pd.Series(val_count_1).value_counts() # val_color_hue_1 -&gt;255 \u2013 741, 106 \u2013 11, 104 \u2013 11, 20 \u2013 1, 99 \u2013 1. val_color_hue_1 = pd.Series(val_count_1).value_counts().index[1]  # \u0447\u0438\u0441\u043b\u0430 \u0442\u043e\u043d\u043e\u0432 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u0442\u043e\u043d\u0430 Hue -10, +10. val_color_char_hue_1_min = val_base_hue_1 \u2013 10 = 106 - 10 = 96 val_color_char_hue_1_max = val_base_hue_1 + 10 = 106+ 10 = 116<\/code><\/pre>\n<p>\u041d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044b Hue \u0434\u043b\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 1, 3 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0433\u0434\u0435 \u0442\u043e\u043d \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0440\u0430\u0432\u043d\u044b 0, \u0438\u043d\u0430\u0447\u0435 255.<\/p>\n<pre><code class=\"python\">mask_char1 = (img_char1&gt; 96) &amp;amp; (img_char1&amp;lt;116) img_char1[~mask_char1] = 255 # \u0433\u0434\u0435 \u043d\u0435 \u0441\u0438\u043c\u0432\u043e\u043b (\u043f\u043e\u043b\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f) img_char1[mask_char1] = 0 # \u0433\u0434\u0435 \u0441\u0438\u043c\u0432\u043e\u043b<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f9b\/8cd\/8de\/f9b8cd8de5315be36bfca773653f5d66.png\" alt=\"\u0420\u0438\u0441.8 \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 pandas dataframe\" title=\"\u0420\u0438\u0441.8 \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 pandas dataframe\" width=\"300\" height=\"319\"><figcaption>\u0420\u0438\u0441.8 \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 pandas dataframe<\/figcaption><\/figure>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a 0 \u0438 1 \u0438 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0442\u0440\u0438\u0446\u0443.<\/p>\n<pre><code>img_char1[img_char1 == 0] = 1; img_char1[img_char1 == 255] = 0<\/code><\/pre>\n<p>\u0418\u0437 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0447\u0430\u0441\u0442\u0438 1 \u0438 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u0443\u0442\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0435\u0439 \u043c\u0430\u0442\u0440\u0438\u0446, \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445 2-\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0438 \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0438 \u043a 255 \u0442\u0435\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b 2, \u0433\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b 1 \u0438 3 \u043d\u0435 \u0440\u0430\u0432\u043d\u044b \u043d\u0443\u043b\u044e.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8af\/435\/012\/8af435012b7f63b0fb7d0f0d40829ec5.png\" alt=\"\u0420\u0438\u0441.9 \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 1 \u0438 3-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\" title=\"\u0420\u0438\u0441.9 \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 1 \u0438 3-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\" width=\"304\" height=\"154\"><figcaption>\u0420\u0438\u0441.9 \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 1 \u0438 3-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u0430 2. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 1, 2, 3 \u2013 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 0, 1. \u041f\u0440\u0438 \u0432\u044b\u0432\u043e\u0434\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438, \u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u0448\u0443\u043c\u0430. \u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e, &nbsp;\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 opencv, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044f\u0434\u0440\u043e (\u043e\u043a\u043d\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u044b) \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u043f\u0440\u0438 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u0440\u044f\u0434\u043e\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438<\/p>\n<pre><code class=\"python\">kernel = np.ones((3, 3), np.uint8) closing = cv2.morphologyEx(np_matrix, cv2.MORPH_CLOSE, kernel)<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/04e\/7b2\/960\/04e7b296078e8fe1cbceb9d1d5c067e6.png\" alt=\"\u0420\u0438\u0441.10 \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432\" title=\"\u0420\u0438\u0441.10 \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432\" width=\"480\" height=\"124\"><figcaption>\u0420\u0438\u0441.10 \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432<\/figcaption><\/figure>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0446\u0435\u043d\u0442\u0440\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u0446\u0435\u043d\u0442\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0438 \u0443\u0434\u0430\u043b\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u043d\u0443\u043b\u044f\u043c\u0438.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d2\/aad\/cb1\/8d2aadcb15de8b8127948aec9c476c40.png\" alt=\"\u0420\u0438\u0441.11 \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0440\u0435\u0434\u0438\u043d\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b\" title=\"\u0420\u0438\u0441.11 \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0440\u0435\u0434\u0438\u043d\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b\" width=\"480\" height=\"124\"><figcaption>\u0420\u0438\u0441.11 \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0440\u0435\u0434\u0438\u043d\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/figcaption><\/figure>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0438 \u043e\u0431\u0443\u0447\u0438\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c. \u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c ~100 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0438\u0437 \u043d\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 300 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u043c\u0430\u0441\u0441\u0438\u0432\u044b 44\u00d730 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 0 \u0438 1). \u042d\u0442\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0448\u0440\u0438\u0444\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445. \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 pillow \u044f\u0437\u044b\u043a\u0430 python, \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0448\u0440\u0438\u0444\u0442\u0430 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 44\u00d730, \u0437\u0430\u0434\u0430\u0435\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0438\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 nympy array. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<pre><code class=\"python\">shift_x = [1, 1, -1, -1, -2, 2, 0, 0, 0] shift_y = [1, 1, -1, -1, -2, 2, 0, 0, 0] rotor_char = [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1] char = '12345789\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u044f' # \u0432 \u0446\u0438\u043a\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u2013 ~10_000 \u2013 60_000 shift _x_r = random.choice(shift_x) shift _y_r = random.choice(shift_y) rotor_r = random.choice(rotor_char) char_r = random.choice(char)<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d3\/aa3\/4b4\/1d3aa34b45e1a146e0886505caec950c.png\" alt=\"\u0420\u0438\u0441.13 \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u0445\" title=\"\u0420\u0438\u0441.13 \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u0445\" width=\"400\" height=\"100\"><figcaption>\u0420\u0438\u0441.13 \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u0445<\/figcaption><\/figure>\n<pre><code class=\"python\">train_x = [] train_x.append(char) train_x = np.array(train_x) train_x = train_x.reshape(train_x.shape[0], train_x[1], train_x[2], 1) <\/code><\/pre>\n<p>\u0422\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0442\u0435\u043d\u0437\u043e\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e (50000, 44, 30, 1), \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c (1) \u0434\u043b\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>\u041a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u0442\u0432\u0435\u0442\u043e\u0432: char_y = [0, 4, \u2026, 29] \u2013 50_000 (\u0446\u0438\u0444\u0440\u044b 0-29 \u043a\u043b\u044e\u0447\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/p>\n<pre><code class=\"python\">char = '12345789\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u044f' # 29 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 dict_char = {char[i]: i for i in range(len(char))} dict_char_reverse = {i[1]: i[0] for i in dict_char.items()} <\/code><\/pre>\n<p>\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043a \u0432\u0438\u0434\u0443 \u0443\u043d\u0438\u0442\u0430\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 (one-hot encoding). \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0434\u043b\u0438\u043d\u0443 29. \u041c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0443\u043b\u0435\u0439 \u0438 \u043e\u0434\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b. \u041f\u043e\u0437\u0438\u0446\u0438\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c\u043e\u043c\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0443\u043a\u0432\u0430 \u00ab\u0430\u00bb \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0438\u0434 \u2018000000000100000000000000000000\u2019.<\/p>\n<pre><code class=\"python\">Img_y = utils.to_categorical(Img_y) # \u043f\u0440\u0438\u043c\u0435\u0440 1 -&gt; (array( [1, 0, 0, 0, \u2026, 0, 0],  dtype=float32) # \u043f\u0440\u0438\u043c\u0435\u0440 2 -&gt; (array( [0, 1, 0, 0, \u2026, 0, 0],  dtype=float32) <\/code><\/pre>\n<p>\u0420\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439.<\/p>\n<pre><code class=\"python\">x_train, x_test, y_train, y_test = sklearn.train_test_split(                              out_train_x_rsh, out_train_y_sh,                               test_size=0.1, shuffle=True) <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 mnist (\u0440\u0443\u043a\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0446\u0438\u0444\u0440\u044b 28\u00d728) \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0435 kaggle \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0434\u0430\u044e\u0449\u0438\u0435 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438:<\/p>\n<pre><code class=\"python\"># \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c Import tensorflow as tf  def model_detection():     model=tf.keras.models.Sequential([         tf.keras.layers.Conv2D(input_shape=(44,30, 1), filters=32,                  kernel_size=(5, 5), padding='same', activation='relu'),         tf.keras.layers.Conv2D( filters=32, kernel_size=(5, 5),                                 padding='same', activation='relu'),         tf.keras.layers.MaxPool2D(pool_size=(2, 2)),         tf.keras.layers.Dropout(0.2),         tf.keras.layers.Conv2D( filters=64, kernel_size=(3, 3),                  padding='same', activation='relu'),         tf.keras.layers.Conv2D( filters=64, kernel_size=(3, 3),                  padding='same', activation='relu'),         tf.keras.layers.MaxPool2D(pool_size=(2, 2), strides=(2, 2)),         tf.keras.layers.Dropout(0.2),         tf.keras.layers.Flatten(),         tf.keras.layers.Dense(256, activation='relu'),         tf.keras.layers.Dropout(0.2),         tf.keras.layers.Dense(29, activation=tf.nn.softmax)])      model.compile(optimizer='adam', loss='categorical_crossentropy',                    metrics=['accuracy'])     returnmodel  # \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 model = model_detection() <\/code><\/pre>\n<p>\u0417\u0430\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043f\u0440\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f (val<em>accuracy).<\/em><\/p>\n<pre><code class=\"python\">checkpoint = ModelCheckpoint('captcha_1.hdf5', monitor='val_accuracy',                                         save_best_only=True, verbose=1)  model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test),            verbose=1, callbacks=[checkpoint]) <\/code><\/pre>\n<p><em>\u041f\u043e\u0441\u043b\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438 val<\/em>accuracy, \u0434\u043e\u043b\u0438 \u0432\u0435\u0440\u043d\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u043e\u0432. \u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b: \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u2014 numpy array (\u043c\u0430\u0441\u0441\u0438\u0432). \u0414\u0430\u043b\u0435\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0432\u0435\u0441\u0430 \u0440\u0430\u043d\u0435\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041d\u0430 \u0432\u0445\u043e\u0434 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u0434\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 (1, 2, 3 \u0441\u0438\u043c\u0432\u043e\u043b). \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u0434\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u041f\u0440\u0438\u043d\u044f\u0432 \u0437\u0430 \u0432\u0435\u0440\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u00ab\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2013 \u0441\u0438\u043c\u0432\u043e\u043b\u00bb \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<pre><code class=\"python\">model2 = model_detection() # \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c model2.load_weights('captcha_1.hdf5') # \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0432\u0435\u0441\u0430 prediction_ch_1 = model2.predict(char_1) # \u043c\u0430\u0441\u0441\u0438\u0432 29 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 # \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u043a\u043b\u044e\u0447 \u043a \u0441\u043b\u043e\u0432\u0430\u0440\u044e \u043e\u0442\u0432\u0435\u0442\u043e\u0432 prediction_ch_1 = np.argmax(prediction_ch_1, axis=1) # \u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u043a\u043b\u044e\u0447 \u0447\u0438\u0441\u043b\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0446\u0438\u0444\u0440\u0430 \u0438\u043b\u0438 \u0431\u0443\u043a\u0432\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442 dict_char_reverse[prediction_ch_1] <\/code><\/pre>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0431\u0443\u043a\u0432 \u0438 \u0446\u0438\u0444\u0440, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u044c\u044e 95% (\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c), \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043f\u0442\u0447\u0438 82% (\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c). \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u043e \u043d\u0435 \u0441\u0430\u043c\u043e\u0439 \u0437\u0430\u0442\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0446\u0438\u0444\u0440, \u0431\u0443\u043a\u0432, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0438 \u0442.\u043f. \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u044d\u0442\u0430\u043f\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0445 \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u043d\u0438\u044f. \u0410 \u043a\u0430\u043a \u0412\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u043a\u0430\u043f\u0442\u0447\u0430\u043c\u0438?<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/541742\/\"> https:\/\/habr.com\/ru\/post\/541742\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u2014 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438. \u041c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446 (\u0442\u0435\u043d\u0437\u043e\u0440\u043e\u0432) \u0447\u0438\u0441\u0435\u043b, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438. \u041e\u0431\u044b\u0447\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u0430\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e, \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0447\u0438\u0441\u0435\u043b, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0449\u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u043e\u043d (\u0446\u0432\u0435\u0442) \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446 (\u0442\u0435\u043d\u0437\u043e\u0440\u043e\u0432) \u0447\u0438\u0441\u0435\u043b, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438: \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u043a\u0432 \u0438 \u0446\u0438\u0444\u0440 (CAPTCHA). \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0431\u0443\u043a\u0432\u044b \u0438 \u0446\u0438\u0444\u0440\u044b, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445. \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ul>\n<li>\n<p>\u0430\u043d\u0430\u043b\u0438\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption>\u0420\u0438\u0441.1 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (CAPTCHA)<\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 100 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u00ab.png\u00bb. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 29 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u00ab12345789\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u044f\u00bb. \u0421\u0438\u043c\u0432\u043e\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0443\u0433\u043e\u043b (\u043e\u0442 -1\u00b0 \u2013+15\u00b0), \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u044b \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430. \u0421\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0446\u0432\u0435\u0442\u0435, \u0432\u0441\u0435 \u0442\u0440\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430. \u041d\u0430 \u0444\u043e\u043d\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043b\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u0441\u0432\u0435\u0442\u043b\u044b\u0445 \u043e\u0442\u0442\u0435\u043d\u043a\u0430\u0445 (\u0448\u0443\u043c \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438). \u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u0432\u044b\u0432\u043e\u0434\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 python 3 opencv, matplotlib, pillow. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043f\u0443\u0442\u0435\u043c \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043b\u0438\u043d\u0438\u0439:<\/p>\n<pre><code class=\"python\">import cv2 # \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u0440\u0430\u0431.\u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439 image = cv2.imread('.\\Captcha.png') # \u0447\u0438\u0442\u0430\u0435\u043c \u0438\u0437\u043e\u0431. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 numpy array # \u0440\u0438\u0441\u0443\u0435\u043c \u043b\u0438\u043d\u0438\u044e (img, (x1, y1), (x2, y2), (255, 255, 255), 4) \u2013      # \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0438\u0441\u0443\u0435\u043c, \u0442\u043e\u0447\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043b\u0438\u043d\u0438\u0438, \u0442\u043e\u0447\u043a\u0430 \u043a\u043e\u043d\u0446\u0430 \u043b\u0438\u043d\u0438\u0438,      # \u0446\u0432\u0435\u0442 \u043b\u0438\u043d\u0438\u0438 \u0446\u0432\u0435\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c BGR, \u0442\u043e\u043b\u0449\u0438\u043d\u0430 \u043b\u0438\u043d\u0438\u0438. image = cv2.line(image, (14, 0), (14, 50), (0, 0, 255), 1)     \u2026 # \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u0438\u043e\u0437\u0431\u0440., \u0438\u043c\u044f \u043e\u043a\u043d\u0430 def view_image(image, name_wind='default'):     cv2.namedWindow(name_wind, cv2.WINDOW_NORMAL) # # \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u043a\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0430     cv2.imshow(name_wind, image) # # \u0432 \u043e\u043a\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 image     cv2.waitKey(0) # # \u0436\u0434\u0435\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043b\u044e\u0431\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, 0 \u043d\u0435\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430.     cv2.destroyAllWindows() # # \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u0435 (\u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435) \u0432\u0441\u0435\u0445 \u043e\u043a\u043e\u043d view_image(image)  # # \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430<\/code><\/pre>\n<figure class=\"\"><figcaption>\u0420\u0438\u0441. 2 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430<\/figcaption><\/figure>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c matplotlib, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u043e\u0434\u0435\u043b\u044c\u044e RGB: \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 BGR \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f, \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u044b\u0439 \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0435\u0442 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u044b\u043c \u0441\u0438\u043d\u0438\u043c \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f. \u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 matplotlib (\u0435\u0441\u043b\u0438 \u0446\u0432\u0435\u0442\u0430 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0446\u0432\u0435\u0442\u043e\u0432 \u0441\u0438\u043d\u0435\u0433\u043e \u0438 \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043b\u0438\u043d\u0438\u0439, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435. \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432\u0435\u0440\u0445\u043d\u044f\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 3 \u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0438\u0436\u043d\u044f\u044f \u043d\u0430 47. \u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b (\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u044f\u0442): \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 14\u201344 \u043a\u043e\u043b\u043e\u043d\u043a\u0430, \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430: 32\u201362 \u043a\u043e\u043b\u043e\u043d\u043a\u0430, \u0434\u043b\u044f \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430: 48 \u201372. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 opencv \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u0430 numpy array, \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e (50, 100, 3). \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 3 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0438\u0437 50 \u0441\u0442\u0440\u043e\u043a \u0438 100 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u0432\u043e\u0439 \u0446\u0432\u0435\u0442 BGR (blue \u0441\u0438\u043d\u0438\u0439, green \u0437\u0435\u043b\u0435\u043d\u044b\u0439, red \u043a\u0440\u0430\u0441\u043d\u044b\u0439), \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 &nbsp;&nbsp;3-\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 0-255.<\/p>\n<figure class=\"\"><figcaption>\u0420\u0438\u0441.3 \u0426\u0432\u0435\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c RGB<\/figcaption><\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u044b \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0446\u0432\u0435\u0442\u043e\u0432. \u0422\u0430\u043a \u043a\u0430\u043a \u0441\u0438\u043c\u0432\u043e\u043b \u0438\u043c\u0435\u0435\u0442 \u043d\u0435 \u0447\u0435\u0442\u043a\u0438\u0439 \u0446\u0432\u0435\u0442, \u0430 \u0441\u0443\u043c\u043c\u0443 \u0446\u0432\u0435\u0442\u043e\u0432, \u043a \u043a\u0440\u0430\u044f\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u0442\u043e\u043d, \u0441\u0443\u043c\u043c\u0430 \u0446\u0432\u0435\u0442\u043e\u0432 \u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u0434\u043b\u044f \u0442\u0440\u0435\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 B(n-m) G(k-l) R(y-z). \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 HSV (Hue, Saturation, Value \u2014 \u0442\u043e\u043d, \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u044f\u0440\u043a\u043e\u0441\u0442\u044c). \u0412 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 opencv \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f Heu 0 \u2013 179, S 0 \u2013 255, V 0 \u2013255. \u041f\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0435\u043a\u0442\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 Heu \u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f S 10 \u2013 255, V 0 \u2013 234, \u043e\u0442\u0441\u0435\u043a\u0430\u044f \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0444\u043e\u043d \u0438 \u0448\u0443\u043c\u043e\u0432\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0442\u043b\u044b\u0445 \u0442\u043e\u043d\u0430\u0445.<\/p>\n<figure class=\"full-width\"><figcaption>\u0420\u0438\u0441.4 \u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 RGB (BGR) \u0438 HSV<\/figcaption><\/figure>\n<pre><code class=\"python\"># # \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 BGR \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 HSV image = cv2.imread('.\\captcha_png') hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)<\/code><\/pre>\n<p>HSV \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0442\u0435\u043d\u0437\u043e\u0440 (50, 100, 3) (3 \u043c\u0430\u0442\u0440\u0438\u0446\u044b numpy array \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e (50, 100), 50 \u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 100 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439). \u0418\u043d\u0434\u0435\u043a\u0441\u044b \u043c\u0430\u0442\u0440\u0438\u0446 \u2014 [:, :, 0] Hue, [:, :, 1] Saturation, [:, :, 2] Value.<\/p>\n<figure class=\"\"><figcaption>\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/figcaption><\/figure>\n<p>\u041e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0432 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430\u0445 \u0441\u0435\u0440\u043e\u0433\u043e (0 \u2013 \u0447\u0435\u0440\u043d\u044b\u0439 255 \u2013 \u0431\u0435\u043b\u044b\u0439).<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>[:,:, 0] \u0422\u043e\u043d, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0435\u043b\u044b\u0439 \u0442.\u043a. \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0434\u043e 179, \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u0446\u0432\u0435\u0442\u043e\u0432 160 \u2013 179 \u0438 0~30 \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0446\u0432\u0435\u0442, 60 ~ 100 \u0437\u0435\u043b\u0435\u043d\u044b\u0439, 110 ~ 150 \u0441\u0438\u043d\u0438\u0439. \u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0446\u0438\u0444\u0440\u0430 9 \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0442\u043b\u0430\u044f \u0442.\u043a. \u043e\u0442\u0442\u0435\u043d\u043e\u043a \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u043e\u043f\u0430\u043b \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043e\u0442 160, \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0431\u0443\u043a\u0432\u0430 \u00ab\u043c\u00bb \u0447\u0435\u0440\u043d\u0430\u044f \u0442.\u043a. \u043e\u0442\u0442\u0435\u043d\u043e\u043a \u043f\u043e\u043f\u0430\u043b \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d 0~30<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>[:,:, 1] \u041d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0444\u043e\u043d \u0438 \u0448\u0443\u043c \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0441\u0432\u0435\u0442\u043b\u044b\u0445, \u043f\u0430\u0441\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u043d\u0430\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0~10, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u043c\u0435\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 &gt;10<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>[:,:, 2] \u042f\u0440\u043a\u043e\u0441\u0442\u044c, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043b\u043e\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u0444\u043e\u043d\u0430 240 ~ 255, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0431\u043e\u043b\u0435\u0435 \u0442\u0435\u043c\u043d\u0435\u0435 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f &lt; 240.<\/p>\n<p>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446 S \u0438 V (\u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u044f\u0440\u043a\u043e\u0441\u0442\u044c), \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043e\u0442 \u0444\u043e\u043d\u0430 \u0438 \u043e\u0442 \u0448\u0443\u043c\u0430 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 Hue (\u0442\u043e\u043d).<\/p>\n<pre><code class=\"python\">mask_S = image[:, :, 1]&amp;lt; 10; mask_V = image[:, :, 1] &gt; 240<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u0434\u0432\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0431\u0443\u043b\u0435\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 (50, 100) [[True, False, ..,], \u2026, [..]]. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0438\u0441\u0442\u0438\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u043e\u043d \u0438 \u0448\u0443\u043c. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043a \u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u0442\u043e\u043d (Hue) \u0438 \u043f\u0440\u0438\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0438\u0441\u0442\u0438\u043d\u0430 255, \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0-179, 255 \u2013 \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 (\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u0442\u043e\u043d, Hue).<\/p>\n<pre><code class=\"python\"># \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 255 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043c\u0430\u0442\u0440\u0438\u0446\u044b 0 - 179 image[:, :, 0][mask_S] = 255 ; image[:, :, 0][mask_V] = 255<\/code><\/pre>\n<figure class=\"\"><figcaption>\u0420\u0438\u0441.5 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u043e\u043d \u0438 \u0447\u0430\u0441\u0442\u044c \u0448\u0443\u043c\u0430 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 255<\/figcaption><\/figure>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u0430\u043f \u2014 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u0417\u0430\u0434\u0430\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b.<\/p>\n<figure class=\"full-width\"><figcaption>\u0420\u0438\u0441.6 \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\u043c<\/figcaption><\/figure>\n<pre><code>img_char1 = image[3: 47, 14: 44, 0].copy() img_char2 = image[3: 47, 32: 62, 0].copy() img_char3 = image[3: 47, 48: 78, 0].copy()<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043e\u0442\u0441\u0435\u043a\u0430\u0435\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0442\u043e\u043d\u0430\u043c \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u043c\u0435\u0435\u0442 \u0447\u0438\u0441\u043b\u043e 255 \u0444\u043e\u043d (500 \u2013 800 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435), \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u043e\u043d \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043d\u0435 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0448\u0443\u043c). \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0442\u043e\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043e\u0442\u0442\u0435\u043d\u043a\u043e\u0432 N -10, N + 10.<\/p>\n<figure class=\"\"><figcaption>\u0420\u0438\u0441.7 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 1 \u0438 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430<\/figcaption><\/figure>\n<p>\u041e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0447\u0430\u0441\u0442\u044c 1 \u0438 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0435 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u0442\u043e\u043d.<\/p>\n<pre><code># \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 val_count_1 = img_char1[3: 47, 14: 32, 0].copy().reshape(-1)  val_color_hue_1 = pd.Series(val_count_1).value_counts() # val_color_hue_1 -&gt;255 \u2013 741, 106 \u2013 11, 104 \u2013 11, 20 \u2013 1, 99 \u2013 1. val_color_hue_1 = pd.Series(val_count_1).value_counts().index[1]  # \u0447\u0438\u0441\u043b\u0430 \u0442\u043e\u043d\u043e\u0432 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u0442\u043e\u043d\u0430 Hue -10, +10. val_color_char_hue_1_min = val_base_hue_1 \u2013 10 = 106 - 10 = 96 val_color_char_hue_1_max = val_base_hue_1 + 10 = 106+ 10 = 116<\/code><\/pre>\n<p>\u041d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044b Hue \u0434\u043b\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 1, 3 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0433\u0434\u0435 \u0442\u043e\u043d \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0440\u0430\u0432\u043d\u044b 0, \u0438\u043d\u0430\u0447\u0435 255.<\/p>\n<pre><code class=\"python\">mask_char1 = (img_char1&gt; 96) &amp;amp; (img_char1&amp;lt;116) img_char1[~mask_char1] = 255 # \u0433\u0434\u0435 \u043d\u0435 \u0441\u0438\u043c\u0432\u043e\u043b (\u043f\u043e\u043b\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f) img_char1[mask_char1] = 0 # \u0433\u0434\u0435 \u0441\u0438\u043c\u0432\u043e\u043b<\/code><\/pre>\n<figure class=\"\"><figcaption>\u0420\u0438\u0441.8 \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 pandas dataframe<\/figcaption><\/figure>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a 0 \u0438 1 \u0438 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0442\u0440\u0438\u0446\u0443.<\/p>\n<pre><code>img_char1[img_char1 == 0] = 1; img_char1[img_char1 == 255] = 0<\/code><\/pre>\n<p>\u0418\u0437 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0447\u0430\u0441\u0442\u0438 1 \u0438 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u0443\u0442\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0435\u0439 \u043c\u0430\u0442\u0440\u0438\u0446, \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445 2-\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0438 \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0438 \u043a 255 \u0442\u0435\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b 2, \u0433\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b 1 \u0438 3 \u043d\u0435 \u0440\u0430\u0432\u043d\u044b \u043d\u0443\u043b\u044e.<\/p>\n<figure class=\"\"><figcaption>\u0420\u0438\u0441.9 \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 2-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 1 \u0438 3-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u0430 2. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 1, 2, 3 \u2013 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 0, 1. \u041f\u0440\u0438 \u0432\u044b\u0432\u043e\u0434\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438, \u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u0448\u0443\u043c\u0430. \u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e, &nbsp;\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 opencv, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044f\u0434\u0440\u043e (\u043e\u043a\u043d\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u044b) \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u043f\u0440\u0438 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u0440\u044f\u0434\u043e\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438<\/p>\n<pre><code class=\"python\">kernel = np.ones((3, 3), np.uint8) closing = cv2.morphologyEx(np_matrix, cv2.MORPH_CLOSE, kernel)<\/code><\/pre>\n<figure class=\"\"><figcaption>\u0420\u0438\u0441.10 \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432<\/figcaption><\/figure>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0446\u0435\u043d\u0442\u0440\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u0446\u0435\u043d\u0442\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0438 \u0443\u0434\u0430\u043b\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u043d\u0443\u043b\u044f\u043c\u0438.<\/p>\n<figure class=\"\"><figcaption>\u0420\u0438\u0441.11 \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0440\u0435\u0434\u0438\u043d\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/figcaption><\/figure>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0438 \u043e\u0431\u0443\u0447\u0438\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c. \u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c ~100 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0438\u0437 \u043d\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 300 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u043c\u0430\u0441\u0441\u0438\u0432\u044b 44\u00d730 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 0 \u0438 1). \u042d\u0442\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0448\u0440\u0438\u0444\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445. \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 pillow \u044f\u0437\u044b\u043a\u0430 python, \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0448\u0440\u0438\u0444\u0442\u0430 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 44\u00d730, \u0437\u0430\u0434\u0430\u0435\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0438\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 nympy array. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<pre><code class=\"python\">shift_x = [1, 1, -1, -1, -2, 2, 0, 0, 0]<\/code><\/pre>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-317812","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=317812"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317812\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=317812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=317812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=317812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}