{"id":6838,"date":"2019-05-10T17:24:43","date_gmt":"2019-05-10T08:24:43","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=6838"},"modified":"2020-05-28T10:34:48","modified_gmt":"2020-05-28T01:34:48","slug":"python%ea%b3%bc-opencv-36-meanshift%ec%99%80-camshift%eb%a5%bc-%ec%9d%b4%ec%9a%a9%ed%95%9c-%eb%8f%99%ec%98%81%ec%83%81%ec%97%90%ec%84%9c%ec%9d%98-%ea%b0%9d%ec%b2%b4-%ec%b6%94%ec%a0%81","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=6838","title":{"rendered":"Python\uacfc OpenCV \u2013 40 : Meanshift\uc640 Camshift\ub97c \uc774\uc6a9\ud55c \ub3d9\uc601\uc0c1\uc5d0\uc11c\uc758 \uac1d\uccb4 \ucd94\uc801"},"content":{"rendered":"<p>\uc774 \uae00\uc758 \uc6d0\ubb38\uc740 https:\/\/opencv-python-tutroals.readthedocs.io\/en\/latest\/py_tutorials\/py_video\/py_meanshift\/py_meanshift.html \uc785\ub2c8\ub2e4.<\/p>\n<p>\ube44\ub514\uc624\uc758 \uc5f0\uc18d\ub41c \uc774\ubbf8\uc9c0\uc5d0\uc11c \ub3d9\uc77c\ud55c \uac1d\uccb4\ub97c \ucc3e\uace0 \ucd94\uc801\ud558\ub294 \uc54c\uace0\ub9ac\uc998\uc778 Meanshift\uc640 Camshift\uc5d0 \ub300\ud55c \ub0b4\uc6a9\uc785\ub2c8\ub2e4. Meanshift\ub294 \ub9e4\uc6b0 \uc9c1\uad00\uc801\uc785\ub2c8\ub2e4. \uc5b4\ub5a4 \ud3ec\uc778\ud2b8\uc758 \uc9d1\ud569\uc744 \uac00\uc9c0\uace0 \uc788\ub2e4\uace0 \ud569\uc2dc\ub2e4. (\uc774 \ud3ec\uc778\ud2b8\uc758 \uc9d1\ud569\uc740 Histogram Backprojection\uacfc \uac19\uc740 \ud53d\uc140\ub4e4\uc758 \ubd84\ud3ec\ub77c\uace0\ub3c4 \ud560 \uc218 \uc788\uc74c) \uc544\ub798 \uadf8\ub9bc\ucc98\ub7fc \uc6d0 \ubaa8\uc591\uc758 \uc791\uc740 \uc708\ub3c4\uc6b0\uac00 \uc788\uace0, \uc774 \uc708\ub3c4\uc6b0\ub97c \ucd5c\ub300 \ud53d\uc140 \ubc00\ub3c4\uac12(\ub610\ub294 \ud3ec\uc778\ud2b8\uc758 \ucd5c\ub300 \uac1c\uc218)\uc744 \uac00\uc9c0\ub294 \uc601\uc5ed\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. \uc544\ub798 \uadf8\ub9bc\ucc98\ub7fc \ub9d0\uc785\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/05\/meanshift_basics.jpg\" alt=\"\" width=\"450\" height=\"336\" class=\"aligncenter size-full wp-image-6839\" \/><\/p>\n<p>\ucd08\uae30 \uc708\ub3c4\uc6b0\ub294 \ud30c\ub780\uc0c9\uc758 \uc6d0\uc774\uba70 C1\uc774\ub77c\uace0 \ud569\uc2dc\ub2e4. \uc774 C1\uc758 \uc6d0\ub798 \uc911\uc2ec\uc810\uc740 \ud30c\ub780\uc0c9 \uc0ac\uac01\ud615\uc73c\ub85c \ud45c\uc2dc\ub418\uc5b4 \uc788\uace0 C1_o\ub77c\uace0 \ud569\uc2dc\ub2e4. \uadf8\ub7ec\ub098 \ub9cc\uc57d \uc774 \uc708\ub3c4\uc6b0\uc5d0 \ud3ec\ud568\ub41c \ud3ec\uc778\ud2b8\ub4e4\uc758 \ubb34\uac8c\uc911\uc2ec\uc810\uc744 \uad6c\ud574\ubcf4\uba74, C1_o\uacfc \uc704\uce58\uac00 \ub2e4\ub974\uace0C1_r\uac00 \ub429\ub2c8\ub2e4.  \uc774\uc81c \ud30c\ub780\uc0c9 \uc6d0\uc758 \uc911\uc2ec\uc810\uc744 c1_r\ub85c \uc774\ub3d9\ud558\uace0 \uc774\ub3d9\ub41c \uc708\ub3c4\uc6b0\uc5d0 \ud3ec\ud568\ub41c \ud3ec\uc778\ud2b8\uc758 \ubb34\uac8c\uc911\uc2ec\uc810\uc744 \uad6c\ud574 \uc6d0\uc758 \uc911\uc2ec\uc810\uacfc \ub3d9\uc77c\ud558\uc9c0 \uc54a\ub2e4\uba74 \ub2e4\uc2dc \uc6d0\uc758 \uc911\uc2ec\uc744 \uc0c8\ub86d\uac8c \uad6c\ud55c \ubb34\uac8c\uc911\uc2ec\uc810\uc73c\ub85c \uc774\ub3d9\uc2dc\ud0a4\uae30\ub97c \ubc18\ubcf5\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ubc18\ubcf5\ud558\ub2e4\uac00 \uc6d0\uc758 \uc911\uc2ec\uc810\uacfc \uc708\uc5d0 \ud3ec\ud568\ub41c \ud3ec\uc778\ud2b8\uc758 \ubb34\uac8c \uc911\uc2ec\uc810 \uc704\uce58\uac00 \ub3d9\uc77c\ud560\ub54c \ubc18\ubcf5\uc744 \uba48\ucda5\ub2c8\ub2e4. \ubc14\ub85c \uc774 \ucd5c\uc885\uc801\uc73c\ub85c \uc5bb\uc740 \uc6d0, \uc989 \uc708\ub3c4\uc6b0\uac00 \ucd5c\ub300 \ud53d\uc140 \ubd84\ud3ec\ub97c \uac00\uc9c0\uac8c \ub429\ub2c8\ub2e4. \uc774\ub97c \uc704\uc758 \uadf8\ub9bc\uc5d0\uc11c \ucd08\ub85d\uc0c9 \uc6d0\uc73c\ub85c \ud45c\uc2dc\ud558\uace0 C2\ub77c\uace0 \ud569\uc2dc\ub2e4. \uc704\uc758 \uadf8\ub9bc\uc5d0\uc11c \ubcf4\ub4ef \uc774 \uc708\ub3c4\uc6b0\uac00 \uac00\uc7a5 \ub9ce\uc740 \uac1c\uc218\uc758 \ud3ec\uc778\ud2b8\ub97c \ud3ec\ud568\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub807\ub2e4\uba74 \uc774\ubbf8\uc9c0\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \ucc98\ub9ac\uac00 \uc5b4\ub5bb\uac8c \uc9c4\ud589\ub420\uae4c\uc694? \uc544\ub798 \uadf8\ub9bc\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/05\/meanshift_face.gif\" alt=\"\" width=\"212\" height=\"283\" class=\"aligncenter size-full wp-image-6841\" \/><\/p>\n<p>\ud1b5\uc0c1 Histogram Backprojection\ub41c \uc774\ubbf8\uc9c0\uc640 \ucd08\uae30 \ub300\uc0c1 \uc704\uce58\ub97c \uc804\ub2ec\ud569\ub2c8\ub2e4. \uac1d\uccb4\uac00 \uc774\ub3d9\ud558\uba74, \ubd84\uba85\ud788 \uadf8 \uc6c0\uc9c1\uc784\uc740 Histogram Backprojection\ub41c \uc774\ubbf8\uc9c0\uc5d0 \ubc18\uc601\ub429\ub2c8\ub2e4. \uacb0\uacfc\uc801\uc73c\ub85c, Meanshift \uc54c\uace0\ub9ac\uc998\uc740 \ucd5c\ub300 \uac15\ub3c4\ub97c \uac00\uc9c0\ub294 \uc0c8\ub85c\uc6b4 \uc704\uce58\ub85c \uc708\ub3c4\uc6b0\ub97c \uc774\ub3d9\uc2dc\ud0a4\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<p>\uc704\uc758 Meanshift \uc54c\uace0\ub9ac\uc998\uc744 OpenCV\uc5d0\uc11c \uc0ac\uc6a9\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \ucd94\uc801\ud560 \uac1d\uccb4 \ub300\uc0c1\uc744 \uc124\uc815\ud558\uace0 \uc774 \ub300\uc0c1\uc758 \ud788\uc2a4\ud1a0\uadf8\ub7a8\uc744 \uc5bb\ub294\ub370, \uc774\ub294 Meanshift \uc5f0\uc0b0\uc744 \uc704\ud55c \ub3d9\uc601\uc0c1\uc758 \uac01 \ud504\ub808\uc784 \uc774\ubbf8\uc9c0\uc5d0 \uc774 \ub300\uc0c1\uc744 Backprojection \ud558\uae30\uc704\ud568\uc785\ub2c8\ub2e4. \ub610\ud55c \uc708\ub3c4\uc6b0\uc758 \ucd08\uae30 \uc704\uce58\ub97c \uc81c\uacf5\ud560 \ud544\uc694\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ud788\uc2a4\ud1a0\uadf8\ub7a8\uc744 \uc704\ud574 \uc624\uc9c1 HSV \uc911 Hue \uac12\ub9cc\uc744 \uace0\ub824\ud569\ub2c8\ub2e4. \ub610\ud55c \uac00\uc9dc \uac12\ub4e4\uc744 \ud53c\ud558\uae30 \uc704\ud574 cv2.inRange() \ud568\uc218\ub97c \uc0ac\uc6a9\ud574 \uc5b4\ub450\uc6b4 \ubd80\ubd84\uc744 \uc81c\uac70\ud569\ub2c8\ub2e4. \uc804\uccb4 \uc608\uc81c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport numpy as np\r\nimport cv2\r\n\r\ncap = cv2.VideoCapture('slow.flv')\r\n\r\n# take first frame of the video\r\nret,frame = cap.read()\r\n\r\n# setup initial location of window\r\nr,h,c,w = 250,90,400,125  # simply hardcoded the values\r\ntrack_window = (c,r,w,h)\r\n\r\n# set up the ROI for tracking\r\nroi = frame[r:r+h, c:c+w]\r\nhsv_roi =  cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)\r\nmask = cv2.inRange(hsv_roi, np.array((0., 60.,32.)), np.array((180.,255.,255.)))\r\nroi_hist = cv2.calcHist([hsv_roi],[0],mask,[180],[0,180])\r\ncv2.normalize(roi_hist,roi_hist,0,255,cv2.NORM_MINMAX)\r\n\r\n# Setup the termination criteria, either 10 iteration or move by atleast 1 pt\r\nterm_crit = ( cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1 )\r\n\r\nwhile(1):\r\n    ret ,frame = cap.read()\r\n\r\n    if ret == True:\r\n        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)\r\n        dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1)\r\n\r\n        # apply meanshift to get the new location\r\n        ret, track_window = cv2.meanShift(dst, track_window, term_crit)\r\n\r\n        # Draw it on image\r\n        x,y,w,h = track_window\r\n        img2 = cv2.rectangle(frame, (x,y), (x+w,y+h), 255,2)\r\n        cv2.imshow('img2',img2)\r\n\r\n        k = cv2.waitKey(60) & 0xff\r\n        if k == 27:\r\n            break\r\n        else:\r\n            cv2.imwrite(chr(k)+\".jpg\",img2)\r\n\r\n    else:\r\n        break\r\n\r\ncv2.destroyAllWindows()\r\ncap.release()\r\n<\/pre>\n<p>\uc2e4\ud589\ud574 \ubcf4\uba74, \uc9c0\uc815\ud55c \ubd80\ubd84(10\ubc88 \ucf54\ub4dc\uc758 \uc0ac\uac01\uc601\uc5ed)\uc5d0 \ub300\ud55c \uac1d\uccb4\ub97c \ub3d9\uc601\uc0c1\uc5d0\uc11c \ucd94\uc801\ud558\uae30 \uc2dc\uc791\ud569\ub2c8\ub2e4. \uc544\ub798\ub294 \ub3d9\uc601\uc0c1 \uc911 3\uac1c\uc758 \ud504\ub808\uc784 \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\/05\/meanshift_result.jpg\" alt=\"\" width=\"303\" height=\"732\" class=\"aligncenter size-full wp-image-6844\" \/><\/p>\n<p>\ub2e4\uc74c\uc740 Camshift \uc54c\uace0\ub9ac\uc998\uc744 \uc774\uc6a9\ud55c \ub3d9\uc601\uc0c1\uc5d0\uc11c\uc758 \uac1d\uccb4 \ucd94\uc801\uc785\ub2c8\ub2e4. \uc55e\uc11c Meanshift\uc758 \uc2e4\ud589 \uacb0\uacfc\ub97c \ubcf4\uba74, \uac1d\uccb4\uac00 \uc810\uc810 \ucee4\uc9c0\uace0 \uc788\uc74c\uc5d0\ub3c4 \uc708\ub3c4\uc6b0\uc758 \ud06c\uae30\ub294 \ubcc0\ud558\uc9c0 \ubabb\ud558\uace0 \uc77c\uc815\ud569\ub2c8\ub2e4. Camshift \uc54c\uace0\ub9ac\uc998\uc740 \uc774\ub97c \uac1c\uc120\ud55c \ud615\ud0dc\uc785\ub2c8\ub2e4. CAMshift\ub294 Continuously Adaptive Meanshift\uc758 \uc57d\uc790\uc785\ub2c8\ub2e4. Camshift \uc54c\uace0\ub9ac\uc998\uc740 \uba3c\uc800 meanshift\ub97c \uc801\uc6a9\ud558\uace0, \uc708\ub3c4\uc6b0\uc758 \ud06c\uae30\ub97c \ub2e4\uc74c \uacf5\uc2dd\uc5d0 \uc758\ud574 \uac31\uc2e0\ud569\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/05\/s_2_X_SQM00_255.png\" alt=\"\" width=\"111\" height=\"34\" class=\"aligncenter size-full wp-image-6846\" \/><\/p>\n<p>\ub610\ud55c \uc774 \uc708\ub3c4\uc6b0\uc5d0 \uac00\uc7a5 \uc798 \ub9de\ub294 \ud0c0\uc6d0\uc744 \uacc4\uc0b0\ud569\ub2c8\ub2e4. \ub2e4\uc2dc \uc0c8\ub86d\uac8c \ud06c\uae30\uac00 \uc870\uc815\ub41c \uc708\ub3c4\uc6b0\uc640 \uc774\uc804 \uc708\ub3c4\uc6b0\uc758 \uc704\uce58\ub97c \uac00\uc9c0\uace0 Meanshift\ub97c \uc801\uc6a9\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uacfc\uc815\uc740 \uc6d0\ud558\ub294 \uc815\ud655\ub3c4\uac00 \ub098\uc62c\ub54c\uae4c\uc9c0 \ubc18\ubcf5\ud569\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/05\/camshift_face.gif\" alt=\"\" width=\"340\" height=\"510\" class=\"aligncenter size-full wp-image-6848\" \/><\/p>\n<p>OpenCV\uc5d0\uc11c Camshift\uc5d0 \ub300\ud55c \uc608\uc81c\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc608\uc81c\ub294 Meanshift\uc640 \uc720\uc0ac\ud558\uc9c0\ub9cc, \ud68c\uc804\ub41c \uc0ac\uac01\ud615 \uc601\uc5ed\uc774 \ubc18\ud658\ub41c\ub2e4\ub294 \uc810\uc774 \ub2e4\ub985\ub2c8\ub2e4. \uc774\ub807\uac8c \ubc18\ud658\ub41c \uc0ac\uac01\ud615 \uc601\uc5ed\uc740 \ub2e4\uc74c \ubc18\ubcf5\uc5d0\uc11c \uac80\uc0c9 \uc708\ub3c4\uc6b0\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport numpy as np\r\nimport cv2\r\n\r\ncap = cv2.VideoCapture('slow.flv')\r\n\r\n# take first frame of the video\r\nret,frame = cap.read()\r\n\r\n# setup initial location of window\r\nr,h,c,w = 250,90,400,125  # simply hardcoded the values\r\ntrack_window = (c,r,w,h)\r\n\r\n# set up the ROI for tracking\r\nroi = frame[r:r+h, c:c+w]\r\nhsv_roi =  cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)\r\nmask = cv2.inRange(hsv_roi, np.array((0., 60.,32.)), np.array((180.,255.,255.)))\r\nroi_hist = cv2.calcHist([hsv_roi],[0],mask,[180],[0,180])\r\ncv2.normalize(roi_hist,roi_hist,0,255,cv2.NORM_MINMAX)\r\n\r\n# Setup the termination criteria, either 10 iteration or move by atleast 1 pt\r\nterm_crit = ( cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1 )\r\n\r\nwhile(1):\r\n    ret ,frame = cap.read()\r\n\r\n    if ret == True:\r\n        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)\r\n        dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1)\r\n\r\n        # apply meanshift to get the new location\r\n        ret, track_window = cv2.CamShift(dst, track_window, term_crit)\r\n\r\n        # Draw it on image\r\n        pts = cv2.boxPoints(ret)\r\n        pts = np.int0(pts)\r\n        img2 = cv2.polylines(frame,[pts],True, 255,2)\r\n        cv2.imshow('img2',img2)\r\n\r\n        k = cv2.waitKey(60) & 0xff\r\n        if k == 27:\r\n            break\r\n        else:\r\n            cv2.imwrite(chr(k)+\".jpg\",img2)\r\n\r\n    else:\r\n        break\r\n\r\ncv2.destroyAllWindows()\r\ncap.release()\r\n<\/pre>\n<p>\uc544\ub798\ub294 \uacb0\uacfc \uc911 3\uac1c\uc758 \ud504\ub808\uc784 \uc774\ubbf8\uc9c0\uc785\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/05\/camshift_result.jpg\" alt=\"\" width=\"362\" height=\"725\" class=\"aligncenter size-full wp-image-6850\" \/><\/p>\n<p>\ucd94\uc801 \ub300\uc0c1\uc774 \ub418\ub294 \uc601\uc5ed\uc774 \ucee4\uc9c8 \ub54c \uac80\uc0c9 \uacb0\uacfc \ucc3d\ub3c4 \uac19\uc774 \ucee4\uc9c0\ub294 \uac83\uc744 \ud655\uc778\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_video\/py_meanshift\/py_meanshift.html \uc785\ub2c8\ub2e4. \ube44\ub514\uc624\uc758 \uc5f0\uc18d\ub41c \uc774\ubbf8\uc9c0\uc5d0\uc11c \ub3d9\uc77c\ud55c \uac1d\uccb4\ub97c \ucc3e\uace0 \ucd94\uc801\ud558\ub294 \uc54c\uace0\ub9ac\uc998\uc778 Meanshift\uc640 Camshift\uc5d0 \ub300\ud55c \ub0b4\uc6a9\uc785\ub2c8\ub2e4. Meanshift\ub294 \ub9e4\uc6b0 \uc9c1\uad00\uc801\uc785\ub2c8\ub2e4. \uc5b4\ub5a4 \ud3ec\uc778\ud2b8\uc758 \uc9d1\ud569\uc744 \uac00\uc9c0\uace0 \uc788\ub2e4\uace0 \ud569\uc2dc\ub2e4. (\uc774 \ud3ec\uc778\ud2b8\uc758 \uc9d1\ud569\uc740 Histogram Backprojection\uacfc \uac19\uc740 \ud53d\uc140\ub4e4\uc758 \ubd84\ud3ec\ub77c\uace0\ub3c4 \ud560 \uc218 \uc788\uc74c) \uc544\ub798 \uadf8\ub9bc\ucc98\ub7fc \uc6d0 \ubaa8\uc591\uc758 \uc791\uc740 \uc708\ub3c4\uc6b0\uac00 \uc788\uace0, \uc774 \uc708\ub3c4\uc6b0\ub97c \ucd5c\ub300 \ud53d\uc140 \ubc00\ub3c4\uac12(\ub610\ub294 \ud3ec\uc778\ud2b8\uc758 \ucd5c\ub300 \uac1c\uc218)\uc744 \uac00\uc9c0\ub294 \uc601\uc5ed\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=6838\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Python\uacfc OpenCV \u2013 40 : Meanshift\uc640 Camshift\ub97c \uc774\uc6a9\ud55c \ub3d9\uc601\uc0c1\uc5d0\uc11c\uc758 \uac1d\uccb4 \ucd94\uc801&#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-6838","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\/6838","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=6838"}],"version-history":[{"count":11,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/6838\/revisions"}],"predecessor-version":[{"id":9427,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/6838\/revisions\/9427"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6838"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}