{"id":6546,"date":"2019-03-27T09:53:38","date_gmt":"2019-03-27T00:53:38","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=6546"},"modified":"2020-05-28T12:32:16","modified_gmt":"2020-05-28T03:32:16","slug":"python%ea%b3%bc-opencv-13-image-gradients","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=6546","title":{"rendered":"Python\uacfc OpenCV \u2013 13 : Image Gradients\uacfc \uac00\uc7a5\uc790\ub9ac(Edge) \uac80\ucd9c"},"content":{"rendered":"<p>\uc774 \uae00\uc758 \uc6d0\ubb38\uc740 https:\/\/opencv-python-tutroals.readthedocs.io\/en\/latest\/py_tutorials\/py_imgproc\/py_gradients\/py_gradients.html \uc640 https:\/\/opencv-python-tutroals.readthedocs.io\/en\/latest\/py_tutorials\/py_imgproc\/py_canny\/py_canny.html#canny \uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uae00\uc5d0\uc11c\ub294 \uc774\ubbf8\uc9c0\uc758 \ubcc0\ud654\ub3c4(Gradients)\uc5d0 \ub530\ub978 \uac00\uc7a5\uc790\ub9ac\ub97c \ucd94\ucd9c\ud558\ub294 \ub0b4\uc6a9\uc5d0 \ub300\ud574 \uc815\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\ubbf8\uc9c0\uc758 \ubcc0\ud654\ub3c4\uc5d0 \ub530\ub978 \uac00\uc7a5\uc790\ub9ac \ucd94\ucd9c \ubc29\ubc95\uc740 Sobel \ubc29\ubc95, Scharr \ubc29\ubc95, Laplacian \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uba3c\uc800 Sobel\uacfc Scharr\uc740 \ubcc0\ud654\ub3c4\ub97c \ucd94\ucd9c\ud560 \ubc29\ud5a5\uc744 x\uc640 y\ucd95\uc73c\ub85c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 Sobel\uc758 \uacbd\uc6b0 \ucee4\ub110 \ud589\ub82c\uc758 \ud06c\uae30\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\ub294 \uc778\uc790\uac00 \uc788\uc9c0\ub9cc Scharr\ub294 \ud544\ud130 \ud589\ub82c\uc758 \ud06c\uae30\ub97c \uc9c0\uc815\ud558\ub294 \uc778\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. Laplacian\uc740 \ubcc0\ud654\ub3c4\uc758 \ucd94\ucd9c \ubc29\ud5a5\uc744 \uc9c0\uc815\ud558\ub294 \ubc29\uc2dd\uc774 \uc544\ub2c8\uace0 \uc804\uccb4 \ubc29\ud5a5\uc73c\ub85c\uc758 \uac00\uc7a5\uc790\ub9ac\ub97c \ucd94\ucd9c\ud558\uba70 \ucee4\ub110 \ud589\ub82c\uc758 \ud06c\uae30\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\ub294\ub370 \uc774 \ud589\ub82c \ud06c\uae30\ub97c 1\ub85c \uc9c0\uc815\ud558\uba74 \uc544\ub798\uc758 \ud589\ub82c\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/03\/opencv_laplacian_kernel.png\" alt=\"\" width=\"165\" height=\"67\" class=\"aligncenter size-full wp-image-6547\" \/><\/p>\n<p>\ucf54\ub4dc\uc758 \uc608\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport cv2\r\nimport numpy as np\r\nfrom matplotlib import pyplot as plt\r\n\r\nimg = cv2.imread('.\/data\/sudoku-original.jpg', 0)\r\n\r\nlaplacian = cv2.Laplacian(img,cv2.CV_8U,ksize=5)\r\nsobelx = cv2.Sobel(img,cv2.CV_8U,1,0,ksize=5)\r\nsobely = cv2.Sobel(img,cv2.CV_8U,0,1,ksize=5)\r\n\r\nplt.subplot(2,2,1),plt.imshow(img,cmap = 'gray')\r\nplt.title('Original'), plt.xticks([]), plt.yticks([])\r\nplt.subplot(2,2,2),plt.imshow(laplacian,cmap = 'gray')\r\nplt.title('Laplacian'), plt.xticks([]), plt.yticks([])\r\nplt.subplot(2,2,3),plt.imshow(sobelx,cmap = 'gray')\r\nplt.title('Sobel X'), plt.xticks([]), plt.yticks([])\r\nplt.subplot(2,2,4),plt.imshow(sobely,cmap = 'gray')\r\nplt.title('Sobel Y'), plt.xticks([]), plt.yticks([])\r\n\r\nplt.show()\r\n<\/pre>\n<p>\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/03\/opencv_sobel_lap.png\" alt=\"\" width=\"913\" height=\"951\" class=\"aligncenter size-full wp-image-6549\" \/><\/p>\n<p>\uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c cv2.Laplacian\uacfc cv2.Sobel \ud568\uc218\uc758 2\ubc88\uc9f8 \uc778\uc790\uc5d0 \uacb0\uacfc \ub370\uc774\ud130\uc758 \ud0c0\uc785\uc744 cv2.CV_8U\ub85c \uc9c0\uc815\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ub370\uc774\ud130 \ud0c0\uc785\uc758 \ubb38\uc81c\ub294 \uc815\ubcf4\uc758 \uc18c\uc2e4\uc774 \ubc1c\uc0dd\ud55c\ub2e4\ub294 \uac83\uc778\ub370, \uac80\uc815\uc0c9\uc5d0\uc11c \ud558\uc580\uc0c9\uc73c\ub85c \ubcc0\ud654\ub3c4\ub294 \uc74c\uc218\uac12\uc774\ubbc0\ub85c \uc74c\uc758 \uacbd\uc0ac\ub77c\uace0 \ud558\uace0 \ud558\uc580\uc0c9\uc5d0\uc11c \uac80\uc815\uc0c9\uc73c\ub85c \ubcc0\ud654\ub3c4\ub294 \uc591\uc758 \uac12\uc774\ubbc0\ub85c \uc591\uc758 \uacbd\uc0ac\ub77c\uace0 \ud569\ub2c8\ub2e4. cv2.CV_8U\ub85c \uc9c0\uc815\ud558\uba74 \uc74c\uc758 \uac12\uc740 \ubaa8\ub450 0\uc73c\ub85c \ubcc0\ud658\ub418\uc5b4 \ubc84\ub9ac\uac8c \ub418\ub294\ub370, \uc774\ucc98\ub7fc \uc74c\uc758 \ubcc0\ud654\ub3c4\uc5d0 \ub300\ud55c \uc815\ubcf4\ub3c4 \uc720\uc9c0\ud558\uae30 \uc704\ud574\uc11c\ub294 \uacb0\uacfc \ub370\uc774\ud130 \ud0c0\uc785\uc744 \uc815\ubc00\ub3c4\uac00 \ub354 \ub192\uc73c\uba74\uc11c \ubd80\ud638\uac12\uc744 \uac00\uc9c0\ub294 cv2.CV_16S, cv2.CV_64F\ub85c \uc9c0\uc815\ud55c \ub4a4\uc5d0 \ub2e4\uc2dc cv2.CV_8U\ub85c \ubcc0\ud658\ud558\ub294 \uac83\uc744 \ucd94\ucc9c\ud569\ub2c8\ub2e4. \uc774\uc5d0 \ub300\ud55c \uc608\uc81c \ucf54\ub4dc\uac00 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/03\/opencv_sobel_lap2.png\" alt=\"\" width=\"1284\" height=\"365\" class=\"aligncenter size-full wp-image-6551\" \/><\/p>\n<p>\uc9c0\uae08\uae4c\uc9c0 \uc0b4\ud3b4\ubcf8 \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c Gradients(\ubcc0\ud654\ub3c4)\ub294 \uac00\uc7a5\uc790\ub9ac(Edge) \uac80\ucd9c\uc744 \uc704\ud55c \uc778\uc790\ub85c \ud65c\uc6a9\ub418\ub294\ub370, \uac00\uc7a5 \uc720\uba85\ud55c \uac00\uc7a5\uc790\ub9ac \uac80\ucd9c\uc744 \uc704\ud55c \ubc29\ubc95\uc740 Canny Egde Detection\uc774\uba70 \uc608\uc81c \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport cv2\r\nimport numpy as np\r\nfrom matplotlib import pyplot as plt\r\n\r\nimg = cv2.imread('.\/data\/messi5.jpg', 0)\r\nedges = cv2.Canny(img, 200, 255)\r\n\r\nplt.subplot(121),plt.imshow(img,cmap = 'gray')\r\nplt.title('Original Image'), plt.xticks([]), plt.yticks([])\r\nplt.subplot(122),plt.imshow(edges,cmap = 'gray')\r\nplt.title('Edge Image'), plt.xticks([]), plt.yticks([])\r\n\r\nplt.show()\r\n<\/pre>\n<p>\uc2e4\ud589 \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/03\/opencv_canny.png\" alt=\"\" width=\"1808\" height=\"662\" class=\"aligncenter size-full wp-image-6557\" \/><\/p>\n<p>6\ubc88 \ucf54\ub4dc\uc758 cv2.Canny \ud568\uc218\uc758 2\ubc88\uc9f8\uc640 3\ubc88\uc9f8 \uac01 \ud53d\uc140\uc774 \uac00\uc7a5\uc790\ub9ac \uc778\uc9c0\uc758 \uc5ec\ubd80\uc5d0 \ub300\ud55c \uae30\uc900\uac12\uc774 \ub418\ub294 minThresholdingValue, maxThresholdingValue\uc785\ub2c8\ub2e4. \uc774\uac12\uc744 \uc870\uc815\ud558\uc5ec \uc6d0\ud558\ub294 \uc218\uc900\uc758 \uac00\uc7a5\uc790\ub9ac\ub97c \uac80\ucd9c\uc744 \uc870\uc815\ud560 \uc218 \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_imgproc\/py_gradients\/py_gradients.html \uc640 https:\/\/opencv-python-tutroals.readthedocs.io\/en\/latest\/py_tutorials\/py_imgproc\/py_canny\/py_canny.html#canny \uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 \uc774\ubbf8\uc9c0\uc758 \ubcc0\ud654\ub3c4(Gradients)\uc5d0 \ub530\ub978 \uac00\uc7a5\uc790\ub9ac\ub97c \ucd94\ucd9c\ud558\ub294 \ub0b4\uc6a9\uc5d0 \ub300\ud574 \uc815\ub9ac\ud569\ub2c8\ub2e4. \uc774\ubbf8\uc9c0\uc758 \ubcc0\ud654\ub3c4\uc5d0 \ub530\ub978 \uac00\uc7a5\uc790\ub9ac \ucd94\ucd9c \ubc29\ubc95\uc740 Sobel \ubc29\ubc95, Scharr \ubc29\ubc95, Laplacian \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uba3c\uc800 Sobel\uacfc Scharr\uc740 \ubcc0\ud654\ub3c4\ub97c \ucd94\ucd9c\ud560 \ubc29\ud5a5\uc744 x\uc640 y\ucd95\uc73c\ub85c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 Sobel\uc758 \uacbd\uc6b0 \ucee4\ub110 \ud589\ub82c\uc758 \ud06c\uae30\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\ub294 \uc778\uc790\uac00 \uc788\uc9c0\ub9cc Scharr\ub294 \ud544\ud130 \ud589\ub82c\uc758 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=6546\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Python\uacfc OpenCV \u2013 13 : Image Gradients\uacfc \uac00\uc7a5\uc790\ub9ac(Edge) \uac80\ucd9c&#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-6546","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\/6546","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=6546"}],"version-history":[{"count":7,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/6546\/revisions"}],"predecessor-version":[{"id":6556,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/6546\/revisions\/6556"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6546"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}