{"id":4123,"date":"2020-07-06T17:53:02","date_gmt":"2020-07-06T08:53:02","guid":{"rendered":"https:\/\/deha.co.jp\/magazine\/?p=4123"},"modified":"2021-08-27T20:11:19","modified_gmt":"2021-08-27T11:11:19","slug":"introducing-homography-in-opencv","status":"publish","type":"post","link":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/","title":{"rendered":"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e"},"content":{"rendered":"\n<p>OpenCV\u306eHomography\u306f\u30012\u3064\u306e\u753b\u50cf\u9593\u306e\u753b\u50cf\u7de8\u96c6\u3001\u753b\u50cf\u5408\u6210\u3001\u52d5\u304d\u306e\u8a08\u7b97\u3001\u56de\u8ee2\u3001\u30b7\u30d5\u30c8\u306a\u3069\u3092\u7c21\u5358\u306b\u884c\u3046\u8a08\u7b97\u65b9\u6cd5\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306f\u305d\u3093\u306a\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306e\u57fa\u672c\u7684\u306a\u8a08\u7b97\u65b9\u6cd5\u3084\u3001\u5b9f\u969b\u306bOpenCV\u3067\u3069\u306e\u3088\u3046\u306b\u66f8\u3044\u3066\u3044\u3051\u3070\u3044\u3044\u306e\u304b\u306a\u3069\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ul><li><strong>OpenCV\u304c\u6c17\u306b\u306a\u308b\u65b9<\/strong><\/li><li><strong>\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306b\u3064\u3044\u3066\u77e5\u308a\u305f\u3044\u65b9<\/strong><\/li><\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306b\u5f53\u3066\u306f\u307e\u308b\u65b9\u306b\u304a\u3059\u3059\u3081\u306e\u8a18\u4e8b\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u8aad\u3081\u3070\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306e\u6d3b\u7528\u65b9\u6cd5\u304c\u5206\u304b\u308a\u307e\u3059\u3088\u3002<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u3068\u306f?<\/h2>\n\n\n\n<p>\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30d7\u30ec\u30fc\u30f3\u3092\u30a4\u30e1\u30fc\u30b8\u30d7\u30ec\u30fc\u30f3\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3059\u308b\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u30de\u30c8\u30ea\u30c3\u30af\u30b9\u306f2\u3064\u306e\u753b\u50cf\u9593\u306e\u51e6\u7406\u30bf\u30b9\u30af\u306b\u95a2\u9023\u3059\u308b\u3053\u3068\u304c\u591a\u304f\u30012\u3064\u306e\u753b\u50cf\u9593\u306e\u753b\u50cf\u7de8\u96c6\u3001\u753b\u50cf\u5408\u6210\u3001\u52d5\u304d\u306e\u8a08\u7b97\u3001\u56de\u8ee2\u3001\u307e\u305f\u306f\u30b7\u30d5\u30c8\u306b\u975e\u5e38\u306b\u5e45\u5e83\u3044\u7528\u9014\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8a08\u7b97\u5f0f\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-group has-light-green-cyan-background-color has-background is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-group__inner-container\">\n<p><strong>HX = sX\u2019<br>s: <\/strong>\u6295\u5f71\u306e\u6bd4\u4f8b\u5b9a\u6570\u3068\uff10\u4ee5\u5916<br><strong>X\u2019<\/strong>: \u30de\u30c3\u30d4\u30f3\u30b0\u306e\u7d50\u679c<br><strong>X<\/strong>: \u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u305f\u753b\u50cf\u30aa\u30d6\u30b8\u30a7\u30af\u30c8<br><strong>H<\/strong>\uff1a\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u884c\u5217\u3067\u3042\u308a\u3001\u53ef\u9006\u884c\u5217<\/p>\n<\/div><\/div>\n\n\n\n<p>X &#8216;\u304b\u3089X\u753b\u50cf\u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\u306f\u3001\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u884c\u5217\u3092\u5b9a\u7fa9\u3059\u308b\u3060\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/8X8M2BTLBlCAtVgwLs-mqkt3sAX931VoW9cEwdNSwM-B2nvLnDAidvX8gnpDr1UIG8R7oicTYlwe-qJl_Kufi4ymSnLpCWL9bUVRxmXqgkI8hppfR4Sq0oBahZrKq4lNhzuWz3AQ\" alt=\"\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/KgPJBWJHeMSjOJQEE7zILtO1PNQdQiHYM7jXQMoAe3facdigulJYc6sLf_cHTe2KeWmLJ-zAKs6Nmo2wWn_ekcFv7UUsqvY3xoGOZFUxhtPwGUqU_38tXYRh7GMw2p3q8U2so2BE\" alt=\"\"\/><\/figure>\n\n\n\n<p>\u4e0a\u306e\u672c\u306e\u5199\u771f\u3092\u4f8b\u306b\u5177\u4f53\u7684\u306b\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u672c\uff12\u518a\u3067\u3001\u8d64\u3001\u9ec4\u3001\u9752\u3001\u30aa\u30ec\u30f3\u30b8\u306e4\u7d44\u306e\u70b9\u3092\u8003\u616e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306f3X3\u3068\u3044\u3046\u30de\u30c8\u30ea\u30c3\u30af\u30b9\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e2\u518a\u306e\u7d75\u672c\u306e\u5bfe\u5fdc\u3059\u308b\u70b9\u306e\u30da\u30a2\u3092\u8003\u3048\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u5de6\u304c\uff08x1\u3001y1\uff09\u3067\u53f3\u304c\uff08x2\u3001y2\uff09\u306e\u5834\u5408\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/07\/Homography-in-OpenCV.png\" alt=\"\" class=\"wp-image-4124\" width=\"328\" height=\"81\" srcset=\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/07\/Homography-in-OpenCV.png 656w, https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/07\/Homography-in-OpenCV-300x74.png 300w, https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/07\/Homography-in-OpenCV-585x144.png 585w\" sizes=\"(max-width: 328px) 100vw, 328px\" \/><\/figure>\n\n\n\n<p>\u4e0a\u8a18\u306e\u65b9\u7a0b\u5f0f\u306f\u30012\u518a\u306e\u672c\u306e\u3059\u3079\u3066\u306e\u5bfe\u5fdc\u3059\u308b\u70b9\u306b\u5f53\u3066\u306f\u307e\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3057\u305f\u304c\u3063\u3066\u3001<strong>\u884c\u5217H\u3092\u53d6\u5f97\u3059\u308b\u3068\u3001\u6700\u521d\u306e\u672c\u306e\u753b\u50cf\u30922\u756a\u76ee\u306e\u753b\u50cf\u306e\u672c\u306e\u89d2\u5ea6\u306b\u56de\u8ee2\u3067\u304d\u307e\u3059\u3002<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Opencv\u3067\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u884c\u5217\u3092\u4e16\u8a08\u7b97\u3059\u308b<\/h2>\n\n\n\n<p>2\u3064\u306e\u753b\u50cf\u9593\u306e\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u3092\u8a08\u7b97\u3059\u308b\u306b\u306f\u30012\u3064\u306e\u753b\u50cf\u9593\u306b\u5bfe\u5fdc\u3059\u308b\u70b9\u306e4\u3064\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<p>Opencv\u306f\u3001\u3059\u3079\u3066\u306e\u70b9\u306b\u9069\u5408\u3059\u308b\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u3092\u63a8\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>C++\u3092\u30b3\u30fc\u30c9\u3059\u308b\u6642\u3001\u53f3\u306e\u672c\u306e\u753b\u50cf\u3092\u5de6\u306e\u672c\u306e\u753b\u50cf\u306e\u3088\u3046\u306b\u56de\u8ee2\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><em>#include \u201copencv2\/opencv.hpp\u201d<\/em><\/p>\n\n\n\n<p>using namespace cv;<\/p>\n\n\n\n<p>using namespace std;<\/p>\n\n\n\n<p>int main( int argc, char** argv)<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>\/\/\u56de\u8ee2\u304c\u5fc5\u8981\u306a\u5199\u771f\u3092\u8aad\u3080<\/p>\n\n\n\n<p>Mat im_src = imread(\u201cbook2.jpg\u201d);<\/p>\n\n\n\n<p>\/\/ \u56de\u8ee2\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u672c\u3067\u9069\u5f53\u306a\u70b9\u306e\uff14\u3064<\/p>\n\n\n\n<p>vector&lt;Point2f&gt; pts_src;<\/p>\n\n\n\n<p>pts_src.push_back(Point2f(141, 131));<\/p>\n\n\n\n<p>pts_src.push_back(Point2f(480, 159));<\/p>\n\n\n\n<p>pts_src.push_back(Point2f(493, 630));<\/p>\n\n\n\n<p>pts_src.push_back(Point2f(64, 601));<\/p>\n\n\n\n<p>\/\/ book\uff11\u306e\u753b\u50cf\u3092\u8aad\u3080<\/p>\n\n\n\n<p>Mat im_dst = imread(\u201cbook1.jpg\u201d);<\/p>\n\n\n\n<p>\/\/ \u56de\u8ee2\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u753b\u50cf\u3067\u70b9\u306e4\u3064\u306b\u8a72\u5f53\u3059\u308b\u70b9\u306e\uff14\u3064<\/p>\n\n\n\n<p>vector&lt;Point2f&gt; pts_dst;<\/p>\n\n\n\n<p>pts_dst.push_back(Point2f(318, 256));<\/p>\n\n\n\n<p>pts_dst.push_back(Point2f(534, 372));<\/p>\n\n\n\n<p>pts_dst.push_back(Point2f(316, 670));<\/p>\n\n\n\n<p>pts_dst.push_back(Point2f(73, 473));<\/p>\n\n\n\n<p>\/\/\u753b\u50cf\u306e\uff12\u3064\u306e\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306e\u30de\u30c8\u30ea\u30c3\u30af\u30b9\u3092\u63a2\u3059\u3002<\/p>\n\n\n\n<p>Mat h = findHomography(pts_src, pts_dst);<\/p>\n\n\n\n<p>Mat im_out;<\/p>\n\n\n\n<p>\/\/\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306e\u901a\u308a\u56de\u8ee2\u306e\u5fc5\u8981\u306a\u753b\u50cf\u3092\u56de\u8ee2\u3059\u308b<\/p>\n\n\n\n<p>warpPerspective(im_src, im_out, h, im_out.size());<\/p>\n\n\n\n<p>\/\/ im_src: \u306f\u56de\u8ee2\u306e\u5fc5\u8981\u306e\u753b\u50cf<\/p>\n\n\n\n<p>\/\/ im_out: \u306f\u7d50\u679c\u306e\u753b\u50cf\u3067\u3059\u3002<\/p>\n\n\n\n<p>\/\/ h: \u306f\u4ee5\u4e0a\u306e\u8a08\u7b97\u3057\u305f\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u3067\u3059\u3002<\/p>\n\n\n\n<p>\/\/ im_out: \u306f\u7d50\u679c\u306e\u753b\u50cf\u3067\u3059\u3002<\/p>\n\n\n\n<p>\/\/ im_out.size: \u7d50\u679c\u753b\u50cf\u306e\u30b5\u30a4\u30ba\u3067\u3059\u3002<\/p>\n\n\n\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u753b\u50cf\u306e\u8868\u793a<\/em><\/p>\n\n\n\n<p><em>imshow(\u201cSource Image\u201d, im_src);<\/em><\/p>\n\n\n\n<p><em>imshow(\u201cDestination Image\u201d, im_dst);<\/em><\/p>\n\n\n\n<p><em>imshow(\u201cWarped Source Image\u201d, im_out);<\/em><\/p>\n\n\n\n<p>waitKey(0);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30a2\u30d5\u30a3\u30f3\u5909\u63db<\/h2>\n\n\n\n<p>\u30a2\u30d5\u30a3\u30f3\u5909\u63db\u3067\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u7279\u5fb4\u70b9\u3092\u5bfe\u5fdc\u3059\u308b\u65b0\u3057\u3044\u70b9\u306e\u30bb\u30c3\u30c8\u306b\u5909\u63db\u3057\u3066\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306b\u52b9\u679c\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u7dda\u306e\u7aef\u70b9\u306e\u307f\u3092\u4f7f\u7528\u3057\u305f\u5ea7\u6a19\u5909\u63db\u3067\u306f2\u3064\u306e\u65b0\u3057\u3044\u70b9\u304c\u4f5c\u6210\u3055\u308c\u3001\u7d50\u5408\u3059\u308b\u3068\u65b0\u3057\u3044\u7dda\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8907\u96d1\u306a\u5909\u63db\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u57fa\u672c\u7684\u306a\u5909\u63db\u3067\u69cb\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u2013 \u7ffb\u8a33 (Translation)<\/p>\n\n\n\n<p>\u2013 \u6bd4\u7387(Scaling)<\/p>\n\n\n\n<p>\u2013 \u56de\u8ee2 (Rotation)<\/p>\n\n\n\n<p>\u2013 \u5909\u5316 (Shearing)<\/p>\n\n\n\n<p>\u30a2\u30d5\u30a3\u30f3\u5909\u63db\u306f\uff12X3 \u3068\u3044\u3046\u30de\u30c8\u30ea\u30c3\u30af\u30b9\u3067\u3059\u3002<\/p>\n\n\n\n<p>&nbsp;\u70b9(x, y) \u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u30a2\u30d5\u30a3\u30f3\u306b\u3088\u308a\u3001\u70b9 (xt, yt)\u306b\u5909\u63db\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u307e\u3068\u3081<\/h2>\n\n\n\n<p>\u3044\u304b\u304c\u3067\u3057\u305f\u304b\u3002\u672c\u65e5\u306f\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u884c\u5217\u3092Opencv\u3067\u884c\u3046\u65b9\u6cd5\u3092\u307e\u3068\u3081\u3066\u3044\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u30db\u30e2\u30b0\u30e9\u30d5\u30c6\u30a3\u884c\u5217\u306a\u3089\u3001\u4ed6\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3088\u308a\u3082\u7c21\u5358\u306b\u753b\u50cf\u306a\u3069\u3092\u5909\u63db\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u305c\u3072\u3053\u306e\u8a18\u4e8b\u3092\u53c2\u8003\u306bOpencv\u3067\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u5909\u63db\u3092\u884c\u3063\u3066\u307f\u3066\u4e0b\u3055\u3044\u3002<\/p>\n\n\n\n<p><strong>deha\u3067\u306f\u3001\uff15\u5e74\u307b\u3069\u524d\u304b\u3089\u3001\u30d9\u30c8\u30ca\u30e0\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002<\/strong><\/p>\n\n\n\n<p>\u30d9\u30c8\u30ca\u30e0\u3067\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u3092\u884c\u3046\u969b\u306e\u8cbb\u7528\u3084\u3001\u30a8\u30f3\u30b8\u30cb\u30a2\u306e\u8cea\u3092\u77e5\u308a\u305f\u3044\u65b9\u306f\u3001\u7121\u6599\u3067\u898b\u7a4d\u3082\u308a\u3044\u305f\u3057\u307e\u3059\u306e\u3067\u3001\u304a\u6c17\u8efd\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/deha.co.jp\/contact\" target=\"_blank\" rel=\"noreferrer noopener\">\u304a\u554f\u3044\u5408\u308f\u305b\u306f\u3053\u3061\u3089\u304b\u3089<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenCV\u306eHomography\u306f\u30012\u3064\u306e\u753b\u50cf\u9593\u306e\u753b\u50cf\u7de8\u96c6\u3001\u753b\u50cf\u5408\u6210\u3001\u52d5\u304d\u306e\u8a08\u7b97\u3001\u56de\u8ee2\u3001\u30b7\u30d5\u30c8\u306a\u3069\u3092\u7c21\u5358\u306b\u884c\u3046\u8a08\u7b97\u65b9\u6cd5\u3067\u3059\u3002 \u3053\u306e\u8a18\u4e8b\u3067\u306f\u305d\u3093\u306a\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306e\u57fa\u672c\u7684\u306a\u8a08\u7b97\u65b9\u6cd5\u3084\u3001\u5b9f\u969b\u306bOpenCV\u3067\u3069\u306e\u3088\u3046\u306b\u66f8\u3044\u3066\u3044\u3051\u3070\u3044\u3044\u306e\u304b\u306a\u3069\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002 OpenCV\u304c\u6c17\u306b\u306a\u308b\u65b9 \u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306b\u3064\u3044\u3066\u77e5\u308a\u305f\u3044\u65b9 \u3053\u308c\u3089\u306b\u5f53\u3066\u306f\u307e\u308b\u65b9\u306b\u304a\u3059\u3059\u3081\u306e\u8a18\u4e8b\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u8aad\u3081\u3070\u30db\u30e2\u30b0\u30e9\u30d5\u30a3\u306e\u6d3b\u7528\u65b9\u6cd5\u304c\u5206\u304b\u308a\u307e\u3059\u3088\u3002<\/p>\n","protected":false},"author":3,"featured_media":4126,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[19],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e - DEHA Magazine<\/title>\n<meta name=\"description\" content=\"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e - DEHA Magazine\" \/>\n<meta property=\"og:description\" content=\"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2\" \/>\n<meta property=\"og:url\" content=\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/\" \/>\n<meta property=\"og:site_name\" content=\"DEHA Magazine\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-06T08:53:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-27T11:11:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/07\/Homography-OpenCV.png\" \/>\n\t<meta property=\"og:image:width\" content=\"642\" \/>\n\t<meta property=\"og:image:height\" content=\"427\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Van Nguyen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Van Nguyen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/\"},\"author\":{\"name\":\"Van Nguyen\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#\/schema\/person\/7bbb5babdce37e3a3a196346d24bf629\"},\"headline\":\"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e\",\"datePublished\":\"2020-07-06T08:53:02+00:00\",\"dateModified\":\"2021-08-27T11:11:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/\"},\"wordCount\":178,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/#organization\"},\"articleSection\":[\"\u30b7\u30b9\u30c6\u30e0\u958b\u767a\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/\",\"url\":\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/\",\"name\":\"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e - DEHA Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/#website\"},\"datePublished\":\"2020-07-06T08:53:02+00:00\",\"dateModified\":\"2021-08-27T11:11:19+00:00\",\"description\":\"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2\",\"breadcrumb\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/deha.co.jp\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#website\",\"url\":\"https:\/\/deha.co.jp\/magazine\/\",\"name\":\"DEHA Magazine\",\"description\":\"DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2\",\"publisher\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/deha.co.jp\/magazine\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#organization\",\"name\":\"Deha Magazine\",\"url\":\"https:\/\/deha.co.jp\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2025\/06\/DEHA-Solutions-Site-icon.png\",\"contentUrl\":\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2025\/06\/DEHA-Solutions-Site-icon.png\",\"width\":780,\"height\":780,\"caption\":\"Deha Magazine\"},\"image\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#\/schema\/person\/7bbb5babdce37e3a3a196346d24bf629\",\"name\":\"Van Nguyen\",\"url\":\"https:\/\/deha.co.jp\/magazine\/author\/vannguyen\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e - DEHA Magazine","description":"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/","og_locale":"en_US","og_type":"article","og_title":"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e - DEHA Magazine","og_description":"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2","og_url":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/","og_site_name":"DEHA Magazine","article_published_time":"2020-07-06T08:53:02+00:00","article_modified_time":"2021-08-27T11:11:19+00:00","og_image":[{"width":642,"height":427,"url":"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/07\/Homography-OpenCV.png","type":"image\/png"}],"author":"Van Nguyen","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Van Nguyen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/#article","isPartOf":{"@id":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/"},"author":{"name":"Van Nguyen","@id":"https:\/\/deha.co.jp\/magazine\/#\/schema\/person\/7bbb5babdce37e3a3a196346d24bf629"},"headline":"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e","datePublished":"2020-07-06T08:53:02+00:00","dateModified":"2021-08-27T11:11:19+00:00","mainEntityOfPage":{"@id":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/"},"wordCount":178,"commentCount":0,"publisher":{"@id":"https:\/\/deha.co.jp\/magazine\/#organization"},"articleSection":["\u30b7\u30b9\u30c6\u30e0\u958b\u767a"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/","url":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/","name":"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e - DEHA Magazine","isPartOf":{"@id":"https:\/\/deha.co.jp\/magazine\/#website"},"datePublished":"2020-07-06T08:53:02+00:00","dateModified":"2021-08-27T11:11:19+00:00","description":"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2","breadcrumb":{"@id":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/deha.co.jp\/magazine\/introducing-homography-in-opencv\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/deha.co.jp\/magazine\/"},{"@type":"ListItem","position":2,"name":"OpenCV\u306eHomography\u306b\u3064\u3044\u3066\u306e\u8aac\u660e"}]},{"@type":"WebSite","@id":"https:\/\/deha.co.jp\/magazine\/#website","url":"https:\/\/deha.co.jp\/magazine\/","name":"DEHA Magazine","description":"DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2","publisher":{"@id":"https:\/\/deha.co.jp\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/deha.co.jp\/magazine\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/deha.co.jp\/magazine\/#organization","name":"Deha Magazine","url":"https:\/\/deha.co.jp\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/deha.co.jp\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2025\/06\/DEHA-Solutions-Site-icon.png","contentUrl":"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2025\/06\/DEHA-Solutions-Site-icon.png","width":780,"height":780,"caption":"Deha Magazine"},"image":{"@id":"https:\/\/deha.co.jp\/magazine\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/deha.co.jp\/magazine\/#\/schema\/person\/7bbb5babdce37e3a3a196346d24bf629","name":"Van Nguyen","url":"https:\/\/deha.co.jp\/magazine\/author\/vannguyen\/"}]}},"_links":{"self":[{"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/posts\/4123"}],"collection":[{"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/comments?post=4123"}],"version-history":[{"count":5,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/posts\/4123\/revisions"}],"predecessor-version":[{"id":6338,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/posts\/4123\/revisions\/6338"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/media\/4126"}],"wp:attachment":[{"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/media?parent=4123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/categories?post=4123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/tags?post=4123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}