{"id":45218,"date":"2021-06-29T00:12:11","date_gmt":"2021-06-28T15:12:11","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=45218"},"modified":"2021-06-29T00:12:11","modified_gmt":"2021-06-28T15:12:11","slug":"%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%eb%a1%9c-%eb%b0%b0%ec%9a%b0%eb%8a%94-opencv-%ed%97%88%ed%94%84-%eb%b3%80%ed%99%98-%ec%a7%81%ec%84%a0-%ea%b2%80%ec%b6%9c-%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=45218","title":{"rendered":"[\uc548\ub4dc\ub85c\uc774\ub4dc\ub85c \ubc30\uc6b0\ub294 OpenCV] \ud5c8\ud504 \ubcc0\ud658 &#8211; \uc9c1\uc120 \uac80\ucd9c \ud558\uae30"},"content":{"rendered":"<h1>\ud5c8\ud504 \ubcc0\ud658(Hough Transform)<\/h1>\n<p>\ud5c8\ud504 \ubcc0\ud658\uc740 \uc774\ubbf8\uc9c0\uc5d0\uc11c \uc120\uacfc \uc6d0 \uac19\uc740 \ub2e8\uc21c\ud55c \ud615\ud0dc\ub97c \ucc3e\ub294 \ubc29\uc2dd\uc774\ub2e4. \uc774\uc9c4\ud654 \ub41c \uc774\ubbf8\uc9c0\uc5d0\uc11c \uc9c1\uc120\uc744 \ucc3e\uc744 \ub54c \uc0c1\ub300\uc801\uc73c\ub85c \ube60\ub978 \uac80\ucd9c\uc744 \ubcf4\uc5ec\uc900\ub2e4.<\/p>\n<h2>\ud5c8\ud504 \uc120 \ubcc0\ud658(Hough line transform)<\/h2>\n<p>\ud5c8\ud504 \uc120 \ubcc0\ud658\uc758 \uae30\ubcf8 \uac1c\ub150\uc740 2\ucc28\uc6d0 \uc774\ubbf8\uc9c0 \uc0c1\uc758 \uc5b4\ub5a0\ud55c \uc810\uc740 \uc120\uc758 \uc77c\ubd80\ub77c\ub294 \uc0ac\uc2e4\uc744 \uae30\ucd08\ub85c \ud55c\ub2e4. \uc120\ubd84\uc758 <strong>\uae30\uc6b8\uae30\ub97c a<\/strong>\ub77c\uace0 \uac00\uc815\ud558\uace0 <strong>y\uc808\ud3b8\uc744 b<\/strong>\ub77c\uace0 \ud560 \ub54c \ub2e4\uc74c\uacfc \uac19\uc740 \ubc29\uc815\uc2dd\uc744 \uc138\uc6b0\uace0, \uadf8\ub798\ud504\ub85c \ud45c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"\">y = ax+b <\/pre>\n<div id=\"attachment_45220\" style=\"width: 296px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-10.png\"><img aria-describedby=\"caption-attachment-45220\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-10-286x300.png\" alt=\"\" width=\"286\" height=\"300\" class=\"wp-image-45220 size-medium\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-10-286x300.png 286w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-10.png 636w\" sizes=\"(max-width: 286px) 100vw, 286px\" \/><\/a><\/p>\n<p id=\"caption-attachment-45220\" class=\"wp-caption-text\">[\uadf8\ub9bc1]<\/p>\n<\/div>\n<p>\uc774 \uc9c1\uc120\uc758 \ubc29\uc815\uc2dd\uc744 (x, y) \uacf5\uac04\uc774 \uc544\ub2cc (a, b)\uc758 \ud30c\ub77c\ubbf8\ud130 \uacf5\uac04\uc73c\ub85c \ubcc0\ud658\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"\">b = -xa+y<\/pre>\n<div id=\"attachment_45221\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-30.png\"><img aria-describedby=\"caption-attachment-45221\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-30-300x296.png\" alt=\"\" width=\"300\" height=\"296\" class=\"wp-image-45221 size-medium\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-30-300x296.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-30.png 648w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p id=\"caption-attachment-45221\" class=\"wp-caption-text\">[\uadf8\ub9bc2]<\/p>\n<\/div>\n<p>\uc6d0\ubcf8 \uc774\ubbf8\uc9c0\uc5d0\uc11c \ud55c \uc810\uc740 (a, b) \ud30c\ub77c\ubbf8\ud130 \uacf5\uac04\uc0c1\uc5d0\uc11c\ub294 \uc9c1\uc120\uc774 \ub41c\ub2e4. \uadf8\ub807\uae30 \ub54c\ubb38\uc5d0 \uc6d0\ubcf8 \uc774\ubbf8\uc9c0 \ub0b4\uc758 \uc9c1\uc120 \uc131\ubd84\uacfc \uad00\ub828\ub41c \uc6d0\uc18c \uac12\uc744 \uc77c\uc815\ub7c9 \uc99d\uac00\uc2dc\ud0a4\uba74\uc11c (a, b) \ud30c\ub77c\ubbf8\ud130 \uacf5\uac04\uc0c1\uc5d0 \uc9c1\uc120\uc744 \uacc4\uc18d \uadf8\ub9ac\ub2e4 \ubcf4\uba74, [\uadf8\ub9bc2]\ucc98\ub7fc (a, b) \ud30c\ub77c\ubbf8\ud130 \uacf5\uac04\uc0c1\uc5d0\uc11c \uc9c1\uc120\ub4e4\uc774 \uacb9\uccd0\uc9c0\ub294 \ubd80\ubd84\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4. \uc774 \uacb9\uccd0\uc9c4 \ud55c \uc810(a, b)\uc774 (x, y) \uc0c1\uc5d0\uc11c\uc758 \uc9c1\uc120 \ubc29\uc815\uc2dd\uc5d0 \ub300\ud55c \uae30\uc6b8\uae30\uc640 \uc808\ud3b8\uc774 \ub418\ub294\ub370, \uc774 \ub54c \uacb9\uccd0\uc9c0\ub294 \uc9c1\uc120\ub4e4\uc744 \uad6c\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\ub418\ub294 \ud3c9\uba74 \ub610\ub294 \ubc30\uc5f4\uc744 <strong>\ub204\uc801 \ud3c9\uba74(accumulation plane)\u00a0 <\/strong>\ub610\ub294<strong> \ub204\uc801 \ubc30\uc5f4(accumulation array)<\/strong>\uc774\ub77c\uace0 \ud55c\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-4.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-4-1024x516.png\" alt=\"\" width=\"750\" height=\"378\" class=\"alignnone size-large wp-image-45224\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-4-1024x516.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-4-300x151.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-4-768x387.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-4.png 1868w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>\uc774\ub7f0\uc2dd\uc73c\ub85c (a, b) \uacf5\uac04\uc5d0\uc11c \uacb9\uccd0\uc9c0\ub294 \uc9c1\uc120\uc5d0 \ub300\ud55c \uc810\uc744 \ucc3e\uc544 \uc6d0\ubcf8\uc774\ubbf8\uc9c0 (x, y) \uacf5\uac04\uc5d0\uc11c \uae30\uc6b8\uae30(a)\uc640 \uc808\ud3b8(b)\uc744 \ud1b5\ud574 \uc9c1\uc120\uc744 \ucc3e\uace0\uc790 \ud558\ub294 \uac83\uc774 \ud5c8\ud504 \uc120 \ubcc0\ud658\uc758 \ud575\uc2ec \ub0b4\uc6a9\uc774\ub2e4.<\/p>\n<h3>\uc9c1\uc120 \uac80\ucd9c\uc758 \ud55c\uacc4\uc640 \uadf9\uc88c\ud45c\uacc4 \uc0ac\uc6a9<\/h3>\n<p><strong>\ubb38\uc81c<\/strong>\uac00 \ud558\ub098 \uc788\ub2e4. y = ax + b \ubc29\uc815\uc2dd\uc5d0\uc11c \ucd95\uacfc \ud3c9\ud589\ud55c \uc218\uc9c1\uc120\uc758 \uacbd\uc6b0 <strong>\uae30\uc6b8\uae30-\uc808\ud3b8<\/strong>\uc73c\ub85c\ub294 \ud45c\ud604\ud560 \uc218\uac00 \uc5c6\ub2e4. \uadf8\ub807\uae30 \ub54c\ubb38\uc5d0 <span><strong>\u03c1<\/strong>\uc640 <strong>\u03b8<\/strong>\ub97c \uc0ac\uc6a9\ud558\ub294\u00a0<\/span><strong>\uadf9\uc88c\ud45c\uacc4<\/strong> \uc9c1\uc120\uc758 \ubc29\uc815\uc2dd\uc744 \uc0ac\uc6a9\ud55c\ub2e4. <span>\u03c1\ub294 \ub85c(rho), \u03b8\ub294 \uc384\ud0c0(theta)\ub77c\uace0 \uc77d\ub294\ub2e4.<\/span><\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-6.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-6-300x260.png\" alt=\"\" width=\"300\" height=\"260\" class=\"alignnone wp-image-45226 size-medium\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-6-300x260.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-6-768x664.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-6-1024x886.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-6.png 1052w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><span>\u03c1\uc640 \u03b8\ub97c \uc774\uc6a9\ud558\uba74 \ucd95\uc5d0 \uc218\uc9c1\uc73c\ub85c \uc874\uc7ac\ud558\ub294 \uc9c1\uc120\ub3c4 \ud45c\ud604\ud560 \uc218 \uc788\uac8c \ub41c\ub2e4.<\/span><\/p>\n<p>\uc774\uc81c <strong>\uae30\uc6b8\uae30<\/strong>\uc640 <strong>y\uc808\ud3b8<\/strong>\uc73c\ub85c \uc774\ub8e8\uc5b4\uc9c4 \ud30c\ub77c\ubbf8\ud130 \uacf5\uac04\uc73c\ub85c \ubcc0\ud658\ud574\uc57c\ud55c\ub2e4. <strong>\uc0bc\uac01\ud568\uc218<\/strong>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubcc0\ud658 \ud560 \uc218 \uc788\ub2e4. \ud480\uc774\uacfc\uc815\uc744 \uc7a0\uc2dc \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-7.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-7-1024x939.png\" alt=\"\" width=\"750\" height=\"688\" class=\"alignnone size-large wp-image-45227\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-7-1024x939.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-7-300x275.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-7-768x704.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-7.png 1062w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>\uc9c1\uc120\uacfc \ucd95\uc758 \uad50\uc810\uc744 \ud1b5\ud574 a, b, c \ubcc0\uc744 \uac16\ub294 \uc0bc\uac01\ud615\uc744 \ucc3e\uc744 \uc218 \uc788\ub2e4.<\/p>\n<p>\uc774 \ub54c \uc9c1\uc120\uc758 \ubc29\uc815\uc2dd\uc740 y = -b<em>x<\/em>\/a + b \uc774\ub2e4. <strong>\uae30\uc6b8\uae30<\/strong>\ub294 -b\/a, <strong>y\uc808\ud3b8<\/strong>\uc740 b\uac00 \ub41c\ub2e4. \uc774 \uc218\uc2dd\uc5d0\uc11c a\uc640 b\ub97c <span>\u03c1\uc640 \u03b8 \ud30c\ub77c\ubbf8\ud130\ub85c \uce58\ud658\ud574\uc57c \ud55c\ub2e4.<\/span><\/p>\n<pre class=\"\">\uae30\uc6b8\uae30 \uad6c\ud558\uae30\r\n\r\na\/c = sin<span>\u03b8<\/span>\r\nb\/c = cos<span>\u03b8\r\n\r\n\uae30\uc6b8\uae30 = -(b\/a) = -(cos\u03b8 * c \/ sin\u03b8 *c) = -(cos\u03b8 \/ sin\u03b8)\r\n<\/span><\/pre>\n<pre class=\"\">y\uc808\ud3b8 \uad6c\ud558\uae30\r\n\r\n<span>\u03c1 \/ b = <\/span>sin<span>\u03b8\r\n\r\ny\uc808\ud3b8 = b = \u03c1 \/ sin\u03b8 \r\n<\/span><\/pre>\n<pre class=\"\"><span>\u03c1\uc640 \u03b8\ub97c \ub9e4\uac1c\ubcc0\uc218\ub85c \uac16\ub294 \ucd5c\uc885\uc801\uc778 \uc9c1\uc120 \ubc29\uc815\uc2dd\r\n\r\ny = -b<em>x<\/em>\/a + b\r\ny = -x(cos\u03b8 \/ sin\u03b8) + \u03c1 \/ sin\u03b8 \r\n\u03c1 = x(cos\u03b8) + y(sin\u03b8)<\/span><\/pre>\n<p>\ucd5c\uc885\uc801\uc73c\ub85c \uad6c\ud55c \ubc29\uc815\uc2dd\u00a0<strong><em>x<\/em>cos\u03b8 + <em>y<\/em>sin\u03b8 = \u03c1\u00a0<\/strong>\ub97c (<span>\u03c1,\u03b8) <\/span>\ud30c\ub77c\ubbf8\ud130 \uacf5\uac04\uc0c1\uc5d0\uc11c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-31-1.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-31-1-1024x421.png\" alt=\"\" width=\"750\" height=\"308\" class=\"alignnone size-large wp-image-45228\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-31-1-1024x421.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-31-1-300x123.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-31-1-768x316.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-31-1.png 1542w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>OpenCV\uc5d0\uc11c\ub294 \ud5c8\ud504 \uc120 \ubcc0\ud658\uc744 \uc704\ud55c \ud568\uc218 2\uac00\uc9c0\ub97c \uc81c\uacf5\ud55c\ub2e4.<\/p>\n<ul>\n<li>HoughLines<\/li>\n<li>HoughLinesP<\/li>\n<\/ul>\n<h3>\ud5c8\ud504 \ubcc0\ud658\uc5d0 \uc758\ud55c \uc120\ubd84 \uac80\ucd9c<\/h3>\n<p>OpenCV\uc5d0\uc11c \ud5c8\ud504 \uc120 \ubcc0\ud658\uc744 \ud1b5\ud574 \uc120\ubd84\uc744 \uac80\ucd9c \ud560 \uc218 \uc788\ub294 \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"\"><span>Imgproc.HoughLines<\/span>(\r\n    Mat image<span>, <\/span>Mat lines<span>, double <\/span>rho<span>, double <\/span>theta<span>, int <\/span>threshold<span>, \r\n    double <\/span>srn<span>, double <\/span>stn<span>, double <\/span>min_theta<span>, double <\/span>max_theta\r\n)<\/pre>\n<pre class=\"\">image : \uc785\ub825 \uc601\uc0c1\r\nlines : \uac80\ucd9c\ud55c \uc120\ubd84, rho\uc640 theta\uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\ub2e4.\r\nrho : \ub204\uc801 \ubc30\uc5f4\uc5d0\uc11c rho \uac12\uc758 \uac04\uaca9. ex) 1.0 -&gt; 1\ud53d\uc140 \uac04\uaca9\r\ntheta : \ub204\uc801 \ubc30\uc5f4\uc5d0\uc11c theta \uac12\uc758 \uac04\uaca9. ex) Math.PI \/ 180 -&gt; 1\ub3c4 \uac04\uaca9\r\nthreshold : \ub204\uc801 \ubc30\uc5f4\uc5d0\uc11c \uc9c1\uc120\uc73c\ub85c \ud310\ub2e8\ud560 \uc784\uacc4\uac12\r\nsrn, stn : \uba40\ud2f0 \uc2a4\ucf00\uc77c \ud5c8\ud504 \ubcc0\ud658\uc5d0\uc11c rho \ud574\uc0c1\ub3c4, theta \ud574\uc0c1\ub3c4\ub97c \ub098\ub204\ub294 \uac12. \r\n           \uae30\ubcf8\uac12 0\uc774\uace0, \uc774 \uacbd\uc6b0 \uc77c\ubc18 \ud5c8\ud504 \ubcc0\ud658 \uc218\ud589\r\nmin_theta, max_theta : \uac80\ucd9c\ud560 \uc120\ubd84\uc758 \ucd5c\uc18c, \ucd5c\ub300 theta \uac12<\/pre>\n<p>\uc774 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \uc785\ub825 \uc601\uc0c1\uc774 \uc774\uc9c4\ud654 \ub41c \uc601\uc0c1\uc774\uc5ec\uc57c \ud558\ubbc0\ub85c, <a href=\"https:\/\/www.charlezz.com\/?p=45201\">Canny<\/a>\uc640 \uac19\uc740 \ud544\ud130\ub97c \uba3c\uc800 \uc218\ud589\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud55c\ub2e4.\u00a0<\/p>\n<p>\ub2e4\uc74c \uac74\ubb3c \uc0ac\uc9c4\uc5d0\uc11c HoughLines \ud568\uc218\ub97c \ud1b5\ud574 \uc120\ubd84\uc744 \uac80\ucd9c\ud574\ubcf4\uc790.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-building.jpg\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-building.jpg\" alt=\"\" width=\"868\" height=\"600\" class=\"alignnone size-full wp-image-45229\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-building.jpg 868w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-building-300x207.jpg 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-building-768x531.jpg 768w\" sizes=\"(max-width: 868px) 100vw, 868px\" \/><\/a><\/p>\n<p>\uc608\uc81c\ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"lang:null decode:true lang:\">\/\/ grayscale\ub85c \ubcc0\ud658\r\nval graySrc = Mat()\r\nImgproc.cvtColor(src, graySrc, Imgproc.COLOR_BGR2GRAY)\r\n\r\n\/\/ \uce90\ub2c8 \uc5e3\uc9c0 \uac80\ucd9c\r\nval edge = Mat()\r\nImgproc.Canny(graySrc, edge, 50.0, 100.0)\r\n\r\n\/\/ \ud5c8\ud504 \uc120 \ubcc0\ud658 \ud568\uc218\ub85c \uc120 \uac80\ucd9c\ud558\uae30\r\nval lines = Mat()\r\nImgproc.HoughLines(\r\n    edge,\r\n    lines,\r\n    1.0, \/\/ 1\ud53d\uc140 \uac04\uaca9\r\n    Math.PI \/ 180.0, \/\/ 1\ub3c4 \uac04\uaca9\r\n    300\r\n)\r\n\r\n\/\/ \uc5e3\uc9c0 \uc601\uc0c1\uc744 \uceec\ub7ec \uc601\uc0c1\uc73c\ub85c \ubcc0\ud658\r\nImgproc.cvtColor(edge, edge, Imgproc.COLOR_GRAY2BGR)\r\n\r\n\/\/ \uac80\ucd9c\ud55c \uc120 \uadf8\ub9ac\uae30\r\nfor (x in 0 until lines.rows()) {\r\n    val rho = lines.get(x, 0)[0]\r\n    val theta = lines.get(x, 0)[1]\r\n    val a = cos(theta)\r\n    val b = sin(theta)\r\n    val x0 = a * rho\r\n    val y0 = b * rho\r\n    val pt1 = Point(round(x0 + 5000*(-b)), round(y0 + 5000*(a)))\r\n    val pt2 = Point(round(x0 - 5000*(-b)), round(y0 - 5000*(a)))\r\n    Imgproc.line(edge, pt1, pt2, Scalar(0.0,0.0,255.0), 3)\r\n}\r\n\/\/ \uacb0\uacfc \uc5e3\uc9c0 \uc601\uc0c1 \ucd9c\ub825<\/pre>\n<p>\ucf54\ub4dc\ub97c \uc2e4\ud589\ud55c \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254244039.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254244039-1024x820.png\" alt=\"\" width=\"750\" height=\"601\" class=\"alignnone size-large wp-image-45231\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254244039-1024x820.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254244039-300x240.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254244039-768x615.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\uac80\ucd9c\ud55c \uc120\ubd84\uc5d0 \ub300\ud55c \uc815\ubcf4\ub294 rho\uc640 theta \ubfd0\uc774\uae30 \ub54c\ubb38\uc5d0 \uc774\ub97c \uc120\ubd84\uc73c\ub85c \uadf8\ub9ac\uae30 \uc704\ud574 \uc9c1\uc120 \uadf8\ub798\ud504 \uc0c1\uc758 \uc784\uc758 \uc810 \ub450\uac1c\ub97c \uc120\ud0dd\ud574 \uc9c1\uc120\uc73c\ub85c \uadf8\ub838\ub2e4. \uadf8\ub798\uc11c \uc601\uc0c1 \ub0b4\uc5d0 \uc9c1\uc120\uacfc \uad00\uacc4 \uc5c6\ub294 \uac1d\uccb4\uc5d0\ub3c4 \ube68\uac04\uc120\uc774 \ub367 \uadf8\ub824\uc9c0\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<h3>\ud655\ub960\uc801 \ud5c8\ud504 \ubcc0\ud658\uc5d0 \uc758\ud55c \uc120\ubd84 \uac80\ucd9c<\/h3>\n<p>\ud655\ub960\uc801 \ud5c8\ud504 \ubcc0\ud658\uc740 \ud5c8\ud504 \ubcc0\ud658 \uc54c\uace0\ub9ac\uc998 \uc77c\ubd80\ub97c \uc218\uc815\ud55c \uc54c\uace0\ub9ac\uc998\uc774\ub2e4. \ubaa8\ub4e0 \uc810\uc744 \uace0\ub824\ud558\uc9c0 \uc54a\ub294 \ub300\uc2e0\uc5d0 \uc120\ubd84\uc774\ub77c \ud310\ub2e8\ub418\ub294 \uc784\uc758\uc758 \uc815\uc810\uc14b\ud2b8\ub9cc \uac80\ucd9c\ud55c\ub2e4.\u00a0<\/p>\n<p>\uc120\ubd84\uc744 \ub354 \uc798 \ud310\ub2e8\ud558\uae30 \uc704\ud574 \ud655\ub960\uc801 \ud5c8\ud504 \ubcc0\ud658 \uc54c\uace0\ub9ac\uc998\uc740 \ub2e4\uc74c\uc758 \ub450 \uac00\uc9c0 \ub0b4\uc6a9\uc744 \uac1c\uc120\ud55c\ub2e4.<\/p>\n<ul>\n<li><strong>\uac80\ucd9c\ud560 \uc120\ubd84\uc758 \ucd5c\uc18c \uae38\uc774 :<\/strong> \uc9c1\uc120\uc744 \ud615\uc131\ud558\uae30 \ud558\uae30 \uc704\ud55c \uc784\uacc4 \uac12\ubcf4\ub2e4 \ub9ce\uc740 \ud53d\uc140\uc774 \uc788\uc9c0\ub9cc \uc9c1\uc120\uc758 \uae38\uc774\uac00 \ub9e4\uc6b0 \uc9e7\ub2e4\uba74 \uc9c1\uc120\uc73c\ub85c \ubc1b\uc544\ub4e4\uc5ec\uc9c0\uc9c0 \uc54a\ub294\ub2e4.<\/li>\n<li><strong>\uc9c1\uc120\uc73c\ub85c \uac04\uc8fc\ud560 \ucd5c\ub300 \uac04\uaca9 :<\/strong> \uc9c1\uc120\uc744 \ud615\uc131\ud560 \ud53d\uc140 \uadf8\ub8f9\uacfc \uadf8\ub8f9\uc0ac\uc774\uc758 \uac70\ub9ac\uac00 \ub9e4\uc6b0 \uba3c \uacbd\uc6b0 \uc9c1\uc120\uc73c\ub85c \uc778\uc815\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/li>\n<\/ul>\n<p>OpenCV\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ud655\ub960\uc801 \ud5c8\ud504 \ubcc0\ud658 \ud568\uc218, HoughLinesP \uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n<pre class=\"lang: decode:true\"><span>Imgproc.<\/span>HoughLinesP(\r\n    Mat image, Mat lines, double rho, double theta, \r\n    int threshold, double minLineLength, double maxLineGap\r\n)<\/pre>\n<pre class=\"\">image : \uc785\ub825 \uc601\uc0c1 \r\nlines : \uc120\ubd84\uc758 \uc2dc\uc791\uacfc \ub05d \uc88c\ud45c\ub97c \ub2f4\uace0 \uc788\ub294 \ubc30\uc5f4\r\nrho : \ub204\uc801 \ubc30\uc5f4\uc5d0\uc11c rho \uac12\uc758 \uac04\uaca9. ex) 1.0 -&gt; 1\ud53d\uc140 \uac04\uaca9 \r\ntheta : \ub204\uc801 \ubc30\uc5f4\uc5d0\uc11c theta \uac12\uc758 \uac04\uaca9. ex) Math.PI \/ 180 -&gt; 1\ub3c4 \uac04\uaca9 \r\nthreshold : \ub204\uc801 \ubc30\uc5f4\uc5d0\uc11c \uc9c1\uc120\uc73c\ub85c \ud310\ub2e8\ud560 \uc784\uacc4\uac12 \r\nminLineLength : \uac80\ucd9c\ud560 \uc120\ubd84\uc758 \ucd5c\uc18c \uae38\uc774\r\nmaxLineGap : \uc9c1\uc120\uc73c\ub85c \uac04\uc8fc\ud560 \ucd5c\ub300 \uac04\uaca9<\/pre>\n<p>\uc608\uc81c\ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"lang: decode:true\">\/\/ grayscale\ub85c \ubcc0\ud658\r\nval graySrc = Mat()\r\nImgproc.cvtColor(src, graySrc, Imgproc.COLOR_BGR2GRAY)\r\n\r\n\/\/ \uce90\ub2c8 \uc5e3\uc9c0 \uac80\ucd9c\r\nval edge = Mat()\r\nImgproc.Canny(graySrc, edge, 50.0, 100.0)\r\n\r\n\/\/ \ud5c8\ud504 \uc120 \ubcc0\ud658 \ud568\uc218\ub85c \uc120 \uac80\ucd9c\ud558\uae30\r\nval lines = Mat()\r\nImgproc.HoughLinesP(\r\n    edge,\r\n    lines,\r\n    1.0, \/\/ 1\ud53d\uc140 \uac04\uaca9\r\n    Math.PI \/ 180.0, \/\/ 1\ub3c4 \uac04\uaca9\r\n    100,\r\n    150.0,\r\n    25.0\r\n)\r\n\r\n\/\/ \uc5e3\uc9c0 \uc601\uc0c1\uc744 \uceec\ub7ec \uc601\uc0c1\uc73c\ub85c \ubcc0\ud658\r\nImgproc.cvtColor(edge, edge, Imgproc.COLOR_GRAY2BGR)\r\n\r\n\/\/ \uac80\ucd9c\ud55c \uc120 \uadf8\ub9ac\uae30\r\nfor (x in 0 until lines.rows()) {\r\n    val l: DoubleArray = lines.get(x, 0)\r\n    Imgproc.line(\r\n        edge,\r\n        Point(l[0], l[1]), \/\/ \uc2dc\uc791\uc810 \uc88c\ud45c\r\n        Point(l[2], l[3]), \/\/ \ub05d\uc810 \uc88c\ud45c\r\n        Scalar(0.0, 0.0, 255.0),\r\n        3\r\n    )\r\n}\r\n\/\/edge \ucd9c\ub825<\/pre>\n<p>\ucf54\ub4dc\ub97c \uc2e4\ud589\ud55c \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254708768.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254708768-1024x820.png\" alt=\"\" width=\"750\" height=\"601\" class=\"alignnone size-large wp-image-45232\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254708768-1024x820.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254708768-300x240.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/06\/www.charlezz.com-opencv-screenshot-1624254708768-768x615.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<h2>\ub9c8\uce58\uba70\u00a0<\/h2>\n<p>\uc0c1\ud669\uc5d0 \ub530\ub77c HoughLines \ub610\ub294 HoughLinesP \ud568\uc218\ub97c \ud1b5\ud574 \uc9c1\uc120\uc744 \uac80\ucd9c \ud560 \uc218 \uc788\ub2e4. \ud568\uc218\uc758 \ud30c\ub77c\ubbf8\ud130\ub97c \uc801\uc808\ud788 \uc870\uc808\ud558\uc5ec \uc6d0\ud558\ub294 \uc9c1\uc120 \uc131\ubd84\uc744 \uac80\ucd9c \ud558\uc790. \ud5c8\ud504 \uc120 \ubcc0\ud658\uc740 \ud37c\ud3ec\uba3c\uc2a4\uac00 \ube60\ub978 \uc54c\uace0\ub9ac\uc998\uc740 \uc544\ub2c8\uae30 \ub54c\ubb38\uc5d0, \uc774\ub7ec\ud55c \ubd80\ubd84\uc744 \uc720\uc758\ud558\uc5ec \uc0ac\uc6a9\ud574\uc57c \ud55c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud5c8\ud504 \ubcc0\ud658(Hough Transform) \ud5c8\ud504 \ubcc0\ud658\uc740 \uc774\ubbf8\uc9c0\uc5d0\uc11c \uc120\uacfc \uc6d0 \uac19\uc740 \ub2e8\uc21c\ud55c \ud615\ud0dc\ub97c \ucc3e\ub294 \ubc29\uc2dd\uc774\ub2e4. \uc774\uc9c4\ud654 \ub41c \uc774\ubbf8\uc9c0\uc5d0\uc11c \uc9c1\uc120\uc744 \ucc3e\uc744 \ub54c \uc0c1\ub300\uc801\uc73c\ub85c \ube60\ub978 \uac80\ucd9c\uc744 \ubcf4\uc5ec\uc900\ub2e4. \ud5c8\ud504 \uc120 \ubcc0\ud658(Hough line transform) \ud5c8\ud504 \uc120 \ubcc0\ud658\uc758 \uae30\ubcf8 \uac1c\ub150\uc740 2\ucc28\uc6d0 \uc774\ubbf8\uc9c0 \uc0c1\uc758 \uc5b4\ub5a0\ud55c \uc810\uc740 \uc120\uc758 \uc77c\ubd80\ub77c\ub294 \uc0ac\uc2e4\uc744 \uae30\ucd08\ub85c \ud55c\ub2e4. \uc120\ubd84\uc758 \uae30\uc6b8\uae30\ub97c a\ub77c\uace0 \uac00\uc815\ud558\uace0 y\uc808\ud3b8\uc744 b\ub77c\uace0 \ud560 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[16],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45218"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=45218"}],"version-history":[{"count":4,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45218\/revisions"}],"predecessor-version":[{"id":45233,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45218\/revisions\/45233"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=45218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=45218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=45218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}