{"id":6634,"date":"2019-04-06T12:22:40","date_gmt":"2019-04-06T03:22:40","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=6634"},"modified":"2020-05-28T12:27:42","modified_gmt":"2020-05-28T03:27:42","slug":"python%ea%b3%bc-opencv-17-%ed%9e%88%ec%8a%a4%ed%86%a0%ea%b7%b8%eb%9e%a8histogram-1-4","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=6634","title":{"rendered":"Python\uacfc OpenCV \u2013 20 : \ud788\uc2a4\ud1a0\uadf8\ub7a8(Histogram) 1\/4"},"content":{"rendered":"<p>\uc774 \uae00\uc758 \uc6d0\ubb38\uc740 https:\/\/opencv-python-tutroals.readthedocs.io\/en\/latest\/py_tutorials\/py_imgproc\/py_histograms\/py_histogram_begins\/py_histogram_begins.html#histograms-getting-started \uc785\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798 \uadf8\ub9bc\uc744 \ubcf4\uba74..<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/04\/histogram_sample.jpg\" alt=\"\" width=\"314\" height=\"320\" class=\"aligncenter size-full wp-image-6635\" \/><\/p>\n<p>\uc774\ubbf8\uc9c0\uc5d0 \ub300\ud574 \uc5b4\ub5a4 \uadf8\ub798\ud504\ub97c \ud45c\uc2dc\ud558\uace0 \uc788\ub294\ub370, \ud654\uc18c\uc758 \uac15\ub3c4(Gray \uac12 \ub610\ub294 \ud558\ub098\uc758 \ucc44\ub110\uc5d0 \ub300\ud55c \uac12)\ub97c \uac16\ub294 \ud654\uc18c\uc758 \uac1c\uc218\ub97c \uac01\uac01 X\ucd95\uacfc Y\ucd95\uc73c\ub85c \ud45c\uc2dc\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 \ud654\uc18c\uc758 \uac15\ub3c4\ub294 0-255\uc785\ub2c8\ub2e4.<\/p>\n<p>\ud788\uc2a4\ud1a0\uadf8\ub7a8\uc744 \uc5bb\ub294 \ubc29\ubc95\uc740 Numpy\ub97c \uc774\uc6a9\ud558\ub294 \uac83\uacfc OpenCV\ub97c \uc774\uc6a9\ud558\ub294 \uac83\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uba3c\uc800 OpenCV\ub97c \uc774\uc6a9\ud55c \uc608\uc81c\ub97c \ubcf4\uba74..<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport cv2\r\n\r\nimg = cv2.imread('.\/data\/home.jpg',0)\r\nhist = cv2.calcHist([img],[0],None,[256],[0,256])\r\n<\/pre>\n<p>4\ubc88\uc9f8 cv2.calcHist \ud568\uc218\uac00 \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c \ud788\uc2a4\ud1a0\uadf8\ub7a8 \uc815\ubcf4\ub97c \uc5bb\ub294\ub370, \uc774 \ud568\uc218\uc758 \uccab\ubc88\uc9f8\ub294 \uc785\ub825 \uc774\ubbf8\uc9c0\uc758 \ubc30\uc5f4\uc774\uba70 \ub450\ubc88\uc9f8\ub294 \ud788\uc2a4\ud1a0\uadf8\ub7a8\uc744 \uc5bb\uc744 \ucc44\ub110 \uc778\ub371\uc2a4, \uc138\ubc88\uc9f8\ub294 Mask \uc774\ubbf8\uc9c0, \ub124\ubc88\uc9f8\ub294 X \ucd95 \uc694\uc18c(BIN)\uc758 \uac1c\uc218\uc774\uace0 \ub2e4\uc12f\ubc88\uc9f8\ub294 Y \ucd95 \uc694\uc18c\uac12\uc758 \ubc94\uc704\ub85c \ud558\ub098\uc758 \ucc44\ub110\uc5d0 \ub300\ud55c \ud654\uc18c \uac15\ub3c4\uac00 0~255\uc774\ubbc0\ub85c \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 [0,256]\uc774 \ub429\ub2c8\ub2e4. \uc774 \ud568\uc218\uc758 \ubc18\ud658\uac12\uc740 256\uac1c\uc758 \uc694\uc18c\ub97c \uac16\ub294 \ubc30\uc5f4\uc785\ub2c8\ub2e4.<\/p>\n<p>Numpy\ub97c \uc774\uc6a9\ud558\uc5ec \ud788\uc2a4\ud1a0\uadf8\ub7a8\uc744 \uc5bb\ub294 \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\n\r\nimg = cv2.imread('.\/data\/home.jpg',0)\r\nhist,bins = np.histogram(img.ravel(),256,[0,256])\r\n<\/pre>\n<p>5\ubc88\uc9f8 \ucf54\ub4dc\uc758 np.histogram \ud568\uc218\uac00 \ud788\uc2a4\ud1a0\uadf8\ub7a8\uc744 \uc5bb\ub294 \ud568\uc218\uc778\ub370 \ubc18\ud658\uac12\uc740 \ubc18\ud658\uac12\uc740 256\uac1c\uc758 \uc694\uc18c\ub97c \uac16\ub294 \ubc30\uc5f4\uc778 hist\uc640 X\ucd95 \uc694\uc18c\uc758 \uac12\uc744 \ub098\ud0c0\ub0b4\ub294 \ubc30\uc5f4\uc778 bins\uc785\ub2c8\ub2e4. \uc774 \ud568\uc218 \uc774\uc678\uc5d0\ub3c4 hist = np.bincount(img.ravel(),minlength=256) \uc640 \uac19\uc740 \ub354 \ube60\ub978 \ud568\uc218\uac00 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc18d\ub3c4\uba74\uc5d0\uc11c Numpy\ubcf4\ub2e4 OpenCV \ubc29\uc2dd\uc774 \ud6e8\uc52c \ube60\ub974\ubbc0\ub85c OpenCV\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud788\uc2a4\ud1a0\uadf8\ub7a8 \uac12\uc744 \uadf8\ub798\ud504\ub85c \ud45c\uc2dc\ud558\uae30 \uc704\ud55c \uc608\uc81c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport cv2\r\nfrom matplotlib import pyplot as plt\r\n\r\nimg = cv2.imread('.\/data\/home.jpg',0)\r\nplt.hist(img.ravel(), 256, [0,256]); \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\/04\/opencv_histogram.png\" alt=\"\" width=\"1444\" height=\"1228\" class=\"aligncenter size-full wp-image-6639\" \/><\/p>\n<p>BGR \ud615\ud0dc\uc640 \uac19\uc774 3\uac1c\uc758 \ucc44\ub110\ub85c \uad6c\uc131\ub41c \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c \uac01 \ucc44\ub110\uc758 \ud788\uc2a4\ud1a0\uadf8\ub7a8\ub3c4 \uc2dc\uac01\ud654\uac00 \uac00\ub2a5\ud55c\ub370, \uad00\ub828\ub41c \uc608\uc81c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport cv2\r\nfrom matplotlib import pyplot as plt\r\n\r\nimg = cv2.imread('.\/data\/home.jpg')\r\ncolor = ('b','g','r')\r\nfor i,col in enumerate(color):\r\n    histr = cv2.calcHist([img],[i],None,[256],[0,256])\r\n    plt.plot(histr,color = col)\r\n    plt.xlim([0,256])\r\nplt.show()\r\n<\/pre>\n<p>\uacb0\uacfc\ub294 \ub2e4\uc74c\ucc98\ub7fc 3\uac1c \ucc44\ub110 \uac01\uac01\uc758 \ud788\uc2a4\ud1a0\uadf8\ub7a8 \uacb0\uacfc\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/04\/opencv_histogram2.png\" alt=\"\" width=\"1444\" height=\"1228\" class=\"aligncenter size-full wp-image-6642\" \/><\/p>\n<p>\uc9c0\uae08\uae4c\uc9c0\ub294 \ud788\uc2a4\ud1a0\uadf8\ub7a8 \ubd84\uc11d\uc744 \uc774\ubbf8\uc9c0 \uc804\uccb4\uc5d0 \ub300\ud574\uc11c \uc218\ud589\ud588\ub294\ub370, \ud544\uc694\ud560 \uacbd\uc6b0 \uc774\ubbf8\uc9c0\uc758 \uc6d0\ud558\ub294 \uc601\uc5ed\uc5d0 \ub300\ud55c \ub9c8\uc2a4\ud06c\ub97c \uc9c0\uc815\ud574 \ud574\ub2f9 \uc601\uc5ed\uc5d0 \ub300\ud55c \ud788\uc2a4\ud1a0\uadf8\ub7a8\ub9cc\uc744 \ubd84\uc11d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ub798\uc758 \ucf54\ub4dc\uac00 \uc608\uc785\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\/home.jpg',0)\r\n\r\n# create a mask\r\nmask = np.zeros(img.shape[:2], np.uint8)\r\nmask[100:300, 100:400] = 255\r\nmasked_img = cv2.bitwise_and(img,img,mask = mask)\r\n\r\n# Calculate histogram with mask and without mask\r\n# Check third argument for mask\r\nhist_full = cv2.calcHist([img],[0],None,[256],[0,256])\r\nhist_mask = cv2.calcHist([img],[0],mask,[256],[0,256])\r\n\r\nplt.subplot(221), plt.imshow(img, 'gray')\r\nplt.subplot(222), plt.imshow(mask,'gray')\r\nplt.subplot(223), plt.imshow(masked_img, 'gray')\r\nplt.subplot(224), plt.plot(hist_full), plt.plot(hist_mask)\r\nplt.xlim([0,256])\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\/04\/opencv_histogram3.png\" alt=\"\" width=\"2137\" height=\"1620\" class=\"aligncenter size-full wp-image-6643\" \/><\/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_histograms\/py_histogram_begins\/py_histogram_begins.html#histograms-getting-started \uc785\ub2c8\ub2e4. \uc544\ub798 \uadf8\ub9bc\uc744 \ubcf4\uba74.. \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud574 \uc5b4\ub5a4 \uadf8\ub798\ud504\ub97c \ud45c\uc2dc\ud558\uace0 \uc788\ub294\ub370, \ud654\uc18c\uc758 \uac15\ub3c4(Gray \uac12 \ub610\ub294 \ud558\ub098\uc758 \ucc44\ub110\uc5d0 \ub300\ud55c \uac12)\ub97c \uac16\ub294 \ud654\uc18c\uc758 \uac1c\uc218\ub97c \uac01\uac01 X\ucd95\uacfc Y\ucd95\uc73c\ub85c \ud45c\uc2dc\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 \ud654\uc18c\uc758 \uac15\ub3c4\ub294 0-255\uc785\ub2c8\ub2e4. \ud788\uc2a4\ud1a0\uadf8\ub7a8\uc744 \uc5bb\ub294 \ubc29\ubc95\uc740 Numpy\ub97c \uc774\uc6a9\ud558\ub294 \uac83\uacfc OpenCV\ub97c \uc774\uc6a9\ud558\ub294 \uac83\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uba3c\uc800 OpenCV\ub97c \uc774\uc6a9\ud55c \uc608\uc81c\ub97c \ubcf4\uba74.. import cv2 img = cv2.imread(&#8216;.\/data\/home.jpg&#8217;,0) &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=6634\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Python\uacfc OpenCV \u2013 20 : \ud788\uc2a4\ud1a0\uadf8\ub7a8(Histogram) 1\/4&#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-6634","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\/6634","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=6634"}],"version-history":[{"count":8,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/6634\/revisions"}],"predecessor-version":[{"id":9462,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/6634\/revisions\/9462"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6634"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}