{"id":6407,"date":"2019-03-20T10:24:16","date_gmt":"2019-03-20T01:24:16","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=6407"},"modified":"2020-05-28T12:38:06","modified_gmt":"2020-05-28T03:38:06","slug":"python%ea%b3%bc-opencv-7-%ec%9d%b4%eb%af%b8%ec%a7%80%ec%97%90-%eb%8c%80%ed%95%9c-%ec%82%b0%ec%88%a0-%ec%97%b0%ec%82%b0","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=6407","title":{"rendered":"Python\uacfc OpenCV \u2013 7 : \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c \uc0b0\uc220 \uc5f0\uc0b0"},"content":{"rendered":"<p>\uc774 \uae00\uc758 \uc6d0\ubb38\uc740 https:\/\/opencv-python-tutroals.readthedocs.io\/en\/latest\/py_tutorials\/py_core\/py_image_arithmetics\/py_image_arithmetics.html \uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uae00\uc5d0\uc11c\ub294 \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c \ub354\ud558\uae30 \uc5f0\uc0b0, \ube7c\uae30 \uc5f0\uc0b0, Bitwise \uc5f0\uc0b0 \ub4f1\uc5d0 \ub300\ud55c \uae00\uc774\uba70, cv2.add(), cv2.addWeighted() \ud568\uc218\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubd05\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c \ucf54\ub4dc\ub294 OpenCV\uc758 add \ud568\uc218\uc640 \uc77c\ubc18\uc801\uc778 \ub367\uc148\uc5d0 \ub300\ud55c \ucc28\uc774\ub97c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport cv2\r\nimport numpy as np\r\n\r\nx = np.uint8([250]) # 250 + 10 = 260 => 255\r\ny = np.uint8([10]) # 250 + 10 = 260 => 260 % 256 = 4\r\n\r\nprint(cv2.add(x,y))\r\nprint(x+y)\r\n<\/pre>\n<p>\ucd9c\ub825 \uacb0\uacfc\ub294 \uac01\uac01 255\uc640 4\uc785\ub2c8\ub2e4. OpenCV\uc758 \uacbd\uc6b0 \ub370\uc774\ud130 \ud0c0\uc785\uc758 \ubc94\uc704\ub97c \ubc97\uc5b4\ub098\uba74 \ud574\ub2f9 \ub370\uc774\ud130 \ud0c0\uc785\uc774 \uac16\uc744 \uc218 \uc788\ub294 \ucd5c\ub300\uac12\uc774 \ub429\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \uc774\ubbf8\uc9c0\uc758 \ube14\ub79c\ub529(Blending)\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport cv2\r\nimport numpy as np\r\n\r\nimg1 = cv2.imread('.\/data\/ml.png')\r\nimg2 = cv2.imread('.\/data\/opencv_logo.png')\r\n\r\ndst = cv2.addWeighted(img1, 0.7, img2, 0.3, 0)\r\n\r\ncv2.imshow('dst',dst)\r\ncv2.waitKey(0)\r\ncv2.destroyAllWindows()\r\n<\/pre>\n<p>\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc740\ub370\uc694. \uc544\ub798\uc758 3\uac1c\uc758 \uc774\ubbf8\uc9c0 \uc911 \uccab\ubc88\uc9f8\ub294 ml.png\uc774\uace0 \ub450\ubc88\uc9f8\ub294 opencv_log.png\uc785\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc138\ubc88\uc9f8\uac00 cv2.addWeighted \ud568\uc218\uc758 \uc801\uc6a9 \uacb0\uacfc \uc774\ubbf8\uc9c0\uc785\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/03\/blending.jpg\" alt=\"\" width=\"450\" height=\"185\" class=\"aligncenter size-full wp-image-6408\" \/><\/p>\n<p>\uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c cv2.addWeighted \ud568\uc218\uc758 \uc778\uc790\uac00 (imgA, a, imgB,b, c)\ub77c\uace0 \ud55c\ub2e4\uba74 \uc0b0\uc220\uc2dd\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><center><code>result = imgA * a + imgB * b + c<\/code><\/center><\/p>\n<p>\ub2e4\uc74c\uc740 Bitwise \uc5f0\uc0b0\uc5d0 \ub300\ud55c \uc608\uc81c\ub85c\uc368, 2\uac1c\uc758 \uc774\ubbf8\uc9c0\ub97c \ud558\ub098\uc758 \uc774\ubbf8\uc9c0\ub85c \ubc30\uacbd\uc744 \uc0b4\ub9ac\uba74\uc11c \ud569\ud558\ub294 \uc608\uc81c\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport cv2\r\nimport numpy as np\r\n\r\n# Load two images\r\nimg1 = cv2.imread('.\/data\/Penguins2.jpg')\r\nimg2 = cv2.imread('.\/data\/opencv_logo.jpg')\r\n\r\n# I want to put logo on top-left corner, So I create a ROI\r\nrows,cols,channels = img2.shape\r\nroi = img1[0:rows, 0:cols ]\r\n\r\n# Now create a mask of logo and create its inverse mask also\r\nimg2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)\r\nret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)\r\nmask_inv = cv2.bitwise_not(mask)\r\ncv2.imshow('mask_inv',mask_inv)\r\n\r\n# Now black-out the area of logo in ROI\r\nimg1_bg = cv2.bitwise_and(roi,roi,mask = mask_inv)\r\n\r\n# Take only region of logo from logo image.\r\nimg2_fg = cv2.bitwise_and(img2,img2,mask = mask)\r\n\r\n# Put logo in ROI and modify the main image\r\ndst = cv2.add(img1_bg,img2_fg)\r\nimg1[0:rows, 0:cols ] = dst\r\n\r\ncv2.imshow('res',img1)\r\ncv2.waitKey(0)\r\ncv2.destroyAllWindows()\r\n<\/pre>\n<p>\uacb0\uacfc\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/03\/overlay.jpg\" alt=\"\" width=\"450\" height=\"207\" class=\"aligncenter size-full wp-image-6412\" \/><\/p>\n<p>\uc704\uc758 \uacb0\uacfc\ub294 2\uac1c\uc758 \uc774\ubbf8\uc9c0\ub97c \ubcf4\uc5ec\uc8fc\uace0 \uc788\ub294\ub370.. \uccab\ubc88\uc9f8\ub294 \ubc30\uacbd \uc774\ubbf8\uc9c0\uc5d0 \uc11e\uc744 \uc774\ubbf8\uc9c0\ub97c Mask\ub85c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 \ub9cc\ub4e4\uc5b4\uc9c4 \uac83\uc774\uace0 \ub450\ubc88\uc9f8\ub294 \uadf8 \uacb0\uacfc \uc774\ubbf8\uc9c0\uc785\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c \uc774\ubbf8\uc9c0 \uac1d\uccb4\ub294 \uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c mask \uc785\ub2c8\ub2e4. \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c Grayscale \ubcc0\ud658 \ud6c4 Threshold\ub97c \uc774\uc6a9\ud55c \uc774\uc9c4 \ube44\ud2b8\ub9f5 \ubcc0\ud658, Mask \uae30\ubc95\uacfc bitwise \uc5f0\uc0b0\uc744 \uc801\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc774 \uae00\uc758 \uc6d0\ubb38\uc740 https:\/\/opencv-python-tutroals.readthedocs.io\/en\/latest\/py_tutorials\/py_core\/py_image_arithmetics\/py_image_arithmetics.html \uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c \ub354\ud558\uae30 \uc5f0\uc0b0, \ube7c\uae30 \uc5f0\uc0b0, Bitwise \uc5f0\uc0b0 \ub4f1\uc5d0 \ub300\ud55c \uae00\uc774\uba70, cv2.add(), cv2.addWeighted() \ud568\uc218\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubd05\ub2c8\ub2e4. \ub2e4\uc74c \ucf54\ub4dc\ub294 OpenCV\uc758 add \ud568\uc218\uc640 \uc77c\ubc18\uc801\uc778 \ub367\uc148\uc5d0 \ub300\ud55c \ucc28\uc774\ub97c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. import cv2 import numpy as np x = np.uint8([250]) # 250 + 10 = 260 => 255 y = np.uint8([10]) # 250 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=6407\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Python\uacfc OpenCV \u2013 7 : \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c \uc0b0\uc220 \uc5f0\uc0b0&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[130,131],"tags":[],"class_list":["post-6407","post","type-post","status-publish","format-standard","hentry","category-opencv","category-python"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/6407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6407"}],"version-history":[{"count":7,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/6407\/revisions"}],"predecessor-version":[{"id":9490,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/6407\/revisions\/9490"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6407"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}