{"id":3951,"date":"2020-08-29T03:25:37","date_gmt":"2020-08-28T18:25:37","guid":{"rendered":"https:\/\/now0930.pe.kr\/wordpress\/?p=3951"},"modified":"2020-08-29T03:26:10","modified_gmt":"2020-08-28T18:26:10","slug":"learning-opencv-4-computer-vision-with-python-3-object-detecion","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/learning-opencv-4-computer-vision-with-python-3-object-detecion\/","title":{"rendered":"Learning OpenCV 4 Computer Vision with Python 3, object detecion"},"content":{"rendered":"\n<p>MeanShift\uc640 CamShift\ub85c \ubb3c\uccb4\ub97c \ucd94\uc801\ud560 \uc218 \uc788\ub2e4. \ubc30\uacbd\uc744 \uc81c\uac70\ud558\uae30 \uc704\ud574 backprojection\uc744 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub294\uc9c0 \uc54c\uc544\uc57c \ud588\ub2e4. <\/p>\n\n\n\n<p>back projection\uc740 \ubc30\uacbd \ub4f1 \ubcc0\ud654\uac00 \uc5c6\ub294 \uc774\ubbf8\uc9c0\ub97c \ub9c8\uc2a4\ud0b9\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\ud55c\ub2e4. \ub2e4\uc74c \ub3d9\uc601\uc0c1\uc744 \ubcf4\uba74 \uc54c\uae30 \uc27d\ub2e4. cv2.imshow\ub294 \uc5ec\ub7ec \ucc3d\uc744 \ubcf4\uc5ec\uc8fc\uc9c0 \ubabb\ud55c\ub2e4. matplot.pyplot\uc744 \uc0ac\uc6a9\ud588\ub2e4. opencv\uc758 \uc0c9\uacfc matplot.pyplot \uc0c9\uc774 \ub2e4\ub974\uae30 \ub54c\ubb38\uc5d0 \ubcc0\uacbd\ud574\uc57c \uc81c\ub300\ub85c \ud45c\uc2dc\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class BackProjection(object):\n    def __init__(self):\n        self._imgPath = \".\/20160910_134843_2.jpg\"\n        self._img = cv2.imread(\".\/20160910_134843_2.jpg\",cv2.IMREAD_COLOR)\n        self._roi = cv2.imread(\".\/roi2.jpg\")\n\n        scale_percent = 40 # percent of original size\n        self._width = int(self._img.shape[1] * scale_percent \/ 100)\n        self._height = int(self._img.shape[0] * scale_percent \/ 100)\n        self._dim = (self._width, self._height) \n\n        self._hsv = cv2.cvtColor(self._img, cv2.COLOR_BGR2HSV)\n        self._roi_hsv = cv2.cvtColor(self._roi, cv2.COLOR_BGR2HSV)\n        self._roi_hist = cv2.calcHist([self._roi_hsv],[0,1], None, [180,256],[0,180,0,256])\n        self._mask = cv2.calcBackProject([self._hsv], [0,1], self._roi_hist, [0, 180, 0, 256],1)\n\n\n        #kernel\n        kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5))\n        self._mask = cv2.filter2D(self._mask, -1, kernel)\n\n        _, self._mask = cv2.threshold(self._mask, 50, 255, cv2.THRESH_BINARY)\n        self._mask = cv2.merge((self._mask, self._mask, self._mask))\n        self._result = cv2.bitwise_and(self._img, self._mask)\n\n\n    def run(self):\n        cv2.resize(self._img,self._dim,interpolation=cv2.INTER_AREA)\n        plt.figure(1)\n        plt.imshow(self._mask)\n        plt.figure(2)\n        #matplot\uc73c\ub85c \ud45c\uc2dc\ud558\uba74 BRG\uc744 RGB\ub85c \ubc14\uafd4\uc57c \ub428\n        plt.imshow(cv2.cvtColor(self._img, cv2.COLOR_BGR2RGB))\n        plt.figure(3)\n        plt.imshow(cv2.cvtColor(self._result, cv2.COLOR_BGR2RGB))\n        plt.show()\n\nif __name__ == '__main__':\n    BackProjection().run()<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2020\/08\/20160910_134843_2.jpg\" alt=\"\" class=\"wp-image-3958\" srcset=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2020\/08\/20160910_134843_2.jpg 1024w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2020\/08\/20160910_134843_2-768x432.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>\uc6d0\ubcf8 \uc774\ubbf8\uc9c0<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2020\/08\/mask.png\" alt=\"\" class=\"wp-image-3959\"\/><figcaption>masking \uc774\ubbf8\uc9c0<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2020\/08\/roi_hist.png\" alt=\"\" class=\"wp-image-3961\"\/><figcaption>roi \ud788\uc2a4\ud2b8\uadf8\ub7a8, hsv<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2020\/08\/result.png\" alt=\"\" class=\"wp-image-3960\"\/><figcaption>\uacb0\uacfc \uc774\ubbf8\uc9c0<\/figcaption><\/figure>\n\n\n\n<p>\uacb0\uacfc\ub97c \ubcf4\uba74 \ubc30\uacbd\uc744 \uae54\ub054\ud558\uac8c \uc9c0\uc6b0\uc9c0 \ubabb\ud588\ub2e4. \uc774\ubbf8\uc9c0 \uc5b4\ub290 \ubd80\ubd84\uc744 roi_hsv\ub85c \uc124\uc815\ud558\ub0d0\uc5d0 \ubc30\uacbd\uc744 \uc5b4\ub5bb\uac8c \uc9c0\uc6b8\uc9c0 \uacb0\uc815\ud55c\ub2e4. \ub354 \ub098\uac00 camshift\ub85c \ubb3c\uccb4\ub97c \ucd94\uc801\ud560 \uc218 \uc788\ub2e4. \uadf8\ub7ec\ub098 \uac12\uc744 \uc5b4\ub5bb\uac8c \ub123\uace0 \ubc30\uacbd\uc774 \uc5b4\ub5a4\uc9c0\uc5d0 \ub530\ub77c \ub9ce\uc740 \uc601\ud5a5\uc744 \ubc1b\ub294\ub2e4. \uacb0\uad6d\uc740 \ub178\uac00\ub2e4..<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Histogram and Back Projection - OpenCV 3.4 with python 3 Tutorial 28\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/0rYtZtY5ML4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/docs.opencv.org\/4.4.0\/d7\/d00\/tutorial_meanshift.html\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/docs.opencv.org\/3.4\/da\/d7f\/tutorial_back_projection.html\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-pyimagesearch\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"QT4neQ4Xuk\"><a href=\"https:\/\/pyimagesearch.com\/2014\/11\/03\/display-matplotlib-rgb-image\/\">How to Display a Matplotlib RGB Image<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;How to Display a Matplotlib RGB Image&#8221; &#8212; PyImageSearch\" src=\"https:\/\/pyimagesearch.com\/2014\/11\/03\/display-matplotlib-rgb-image\/embed\/#?secret=LQQd3hLCgh#?secret=QT4neQ4Xuk\" data-secret=\"QT4neQ4Xuk\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/stackoverflow.com\/questions\/44598124\/update-frame-in-matplotlib-with-live-camera-preview\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>MeanShift\uc640 CamShift\ub85c \ubb3c\uccb4\ub97c \ucd94\uc801\ud560 \uc218 \uc788\ub2e4. \ubc30\uacbd\uc744 \uc81c\uac70\ud558\uae30 \uc704\ud574 backprojection\uc744 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub294\uc9c0 \uc54c\uc544\uc57c \ud588\ub2e4. back projection\uc740 \ubc30\uacbd \ub4f1 \ubcc0\ud654\uac00 \uc5c6\ub294 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[12],"tags":[802,801,796,110],"class_list":["post-3951","post","type-post","status-publish","format-standard","hentry","category-12","tag-camshift","tag-meanshift","tag-opencv","tag-python"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/3951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=3951"}],"version-history":[{"count":9,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/3951\/revisions"}],"predecessor-version":[{"id":3968,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/3951\/revisions\/3968"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=3951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=3951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=3951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}