{"id":4355,"date":"2020-06-04T21:47:15","date_gmt":"2020-06-04T12:47:15","guid":{"rendered":"http:\/\/kats-eye.net\/info\/?p=4355"},"modified":"2021-06-10T20:53:27","modified_gmt":"2021-06-10T11:53:27","slug":"template-matching","status":"publish","type":"post","link":"https:\/\/kats-eye.net\/info\/2020\/06\/04\/template-matching\/","title":{"rendered":"\u30e9\u30ba\u30d1\u30a4\uff14 \uff17\u30bb\u30b0\uff2c\uff25\uff24\u6570\u5b57\u3092\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\u3067\u5224\u5b9a"},"content":{"rendered":"\n<h2 class=\"has-text-color\" style=\"color:#0000ff\">\u6a5f\u80fd<\/h2>\n\n\n\n<p>\u3000\u30e9\u30ba\u30d1\u30a4\u306b\u63a5\u7d9a\u3057\u305fUSB\u30ab\u30e1\u30e9\u3067\u3001\uff17\u30bb\u30b0LED\u3092\u659c\u3081\u4e0a\u65b9\u5411\u304b\u3089\u64ae\u5f71\u3057\u3001OpenCV\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u4f7f\u3063\u3066\u3001\u6570\u5b57\u3092\u8a8d\u8b58\u3057\u307e\u3059\u3002<br>\u3000\u5927\u307e\u304b\u306a\u6d41\u308c\u3068\u3057\u3066\u306f\u3001\u5148\u305a\u3001\u659c\u3081\u4e0a\u304b\u3089\u64ae\u5f71\u3057\u305f\u753b\u50cf\u5bfe\u8c61\u9818\u57df\u3092\u6b63\u9762\u304b\u3089\u898b\u305f\u69d8\u306a\u753b\u50cf\u306b\u5c04\u5f71\u5909\u63db\u3057\u3001\u4e8c\u5024\u5316\u51e6\u7406\u3057\u307e\u3059\u3002<br>\u3000\u4e88\u3081\u30d7\u30ed\u30b0\u30e9\u30e0\u4e0a\u3067\u8a2d\u5b9a\u3057\u3066\u3044\u308b\u5168\uff18\u6587\u5b57\u306e\u5404\u691c\u7d22\u9818\u57df\u3092\uff11\u7b87\u6240\u3065\u3064\u9806\u756a\u306b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\u3067\u3001[0]\uff5e[9] \u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u753b\u50cf\u3068\u7167\u5408\u3057\u3066\u3001\u6700\u3082\u30b9\u30b3\u30a2\u306e\u9ad8\u3044\u6570\u5b57\u3092\u3001\u5404\u9818\u57df\u306b\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u6570\u5b57\u3068\u5224\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002<br>\u3000\u4e0b\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\u6642\u306b\u8868\u793a\u3059\u308b\u30d5\u30a9\u30fc\u30e0\u306b\u306f\u3001\u64ae\u5f71\u753b\u50cf\u306e\u4e0a\u306b\u5c04\u5f71\u5909\u63db\u30fb\u4e8c\u5024\u5316\u51e6\u7406\u753b\u50cf\u3001\u6700\u7d42\u5909\u63db\u7d50\u679c\u3001\u5404\u6587\u5b57\u691c\u7d22\u9818\u57df\u306e\u5224\u5b9a\u6642\u306e\u30b9\u30b3\u30a2\u5024\u3001\u5c04\u5f71\u5909\u63db\u5bfe\u8c61\u9818\u57df\u67a0\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002<br>\u3000\u30b9\u30b3\u30a2\u5024\u304c\u3042\u307e\u308a\u306b\u4f4e\u3044\u5834\u5408\u3084\u4ed6\u6570\u5b57\u3068\u30b9\u30b3\u30a2\u5024\u304c\u8fd1\u3044\u5834\u5408\u306a\u3069\u306f\u5224\u5b9a\u304c\u8aa4\u3063\u3066\u3044\u308b\u53ef\u80fd\u6027\u3082\u3042\u308b\u306e\u3067\u5224\u5b9a\u6761\u4ef6\u306b\u8003\u91cf\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"619\" height=\"604\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/001.png\" alt=\"\" class=\"wp-image-4359\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/001.png 619w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/001-300x293.png 300w\" sizes=\"(max-width: 619px) 100vw, 619px\" \/><\/figure>\n\n\n\n<p>\u3000\u6b21\u306e\u5199\u771f\u306f\u5bfe\u8c61\u9818\u57df\u3092\u5c04\u5f71\u5909\u63db\u3057\u305f\u76f4\u5f8c\u306e\u753b\u50cf\u3067\u3059\u3002\u4e0a\u65b9\u304b\u3089\u64ae\u5f71\u3057\u305f\u753b\u50cf\u306f\u4e0b\u90e8\uff08\u30ab\u30e1\u30e9\u304b\u3089\u898b\u3066\u9060\u3044\u4f4d\u7f6e\uff09\u306f\u72ed\u304f\u306a\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u5c04\u5f71\u5909\u63db\u5f8c\u306f\u88dc\u6b63\u3055\u308c\u3066\u3044\u307e\u3059\u3002<br>\u3000\u4eca\u56de\u306e\u76ee\u7684\u3067\u306f\u5fc5\u305a\u3057\u3082\u5c04\u5f71\u5909\u63db\u306f\u5fc5\u8981\u306a\u304b\u3063\u305f\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u500b\u4eba\u7684\u306b\u306f\u52c9\u5f37\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" width=\"376\" height=\"304\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-03-21-45-24.png\" alt=\"\" class=\"wp-image-4362\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-03-21-45-24.png 376w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-03-21-45-24-300x243.png 300w\" sizes=\"(max-width: 376px) 100vw, 376px\" \/><\/figure>\n\n\n\n<p>\u3000\u4e0b\u56f3\u306f\u5bfe\u8c61\u9818\u57df\u3092\u9650\u5b9a\u3057\u3001\u4e8c\u5024\u5316\u51e6\u7406\u5f8c\u306e\u753b\u50cf\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" width=\"300\" height=\"98\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/003-300x98.png\" alt=\"\" class=\"wp-image-4363\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/003-300x98.png 300w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/003.png 409w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/figure>\n\n\n\n<p>\u3000\u4eca\u56de\u306e\u78ba\u8a8d\u306eUSB\u30ab\u30e1\u30e9\u3068\uff17\u30bb\u30b0LED\u306e\u4f4d\u7f6e\u95a2\u4fc2\u3067\u3059\u3002<br>\u3000\uff17\u30bb\u30b0LED\u306f\u3082\u3068\u3082\u3068\u4eba\u304c\u78ba\u8a8d\u3059\u308b\u70ba\u306e\u3082\u306e\u306a\u306e\u3067\u3001\u4eba\u306e\u8996\u7dda\u3092\u51fa\u6765\u308b\u3060\u3051\u906e\u3089\u306a\u3044\u69d8\u306b\u3068\u601d\u3044\u3001\u4e0a\u65b9\u304b\u3089\u64ae\u5f71\u3057\u307e\u3059\u3002\u4e0b\u56f3\u3067\u306f\u4e09\u811a\u304c\u8996\u7dda\u3092\u906e\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u5b9f\u9a13\u3067\u3059\u306e\u3067\u3054\u4e86\u627f\u4e0b\u3055\u3044\u3002<br>\u3000\u4e0a\u65b9\u304b\u3089\u64ae\u5f71\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u3001\u5ba4\u5185\u5149\u7b49\u306b\u3088\u308b\u5149\u306e\u53cd\u5c04\u306e\u5f71\u97ff\u3092\u53d7\u3051\u306b\u304f\u304f\u3059\u308b\u52b9\u679c\u304c\u3042\u308b\u3068\u611f\u3058\u307e\u3057\u305f\u3002\u307e\u305f\u3001LED\u524d\u306b\u6709\u8272\u900f\u660e\u30d7\u30e9\u30b9\u30c1\u30c3\u30af\u677f\u3067\u30ab\u30d0\u30fc\u3059\u308b\u3068\u6587\u5b57\u304c\u9bae\u660e\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"642\" height=\"625\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/005.png\" alt=\"\" class=\"wp-image-4364\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/005.png 642w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/005-300x292.png 300w\" sizes=\"(max-width: 642px) 100vw, 642px\" \/><\/figure>\n\n\n\n<p>\u3000 [0]\uff5e[9] \u306e \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u753b\u50cf\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/template.png\" alt=\"\" class=\"wp-image-4369\" width=\"528\" height=\"284\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/template.png 528w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/template-300x161.png 300w\" sizes=\"(max-width: 528px) 100vw, 528px\" \/><figcaption><br><br><\/figcaption><\/figure>\n\n\n\n<!-- START MoshimoAffiliateEasyLink -->\n<script type=\"text\/javascript\">\n(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;\nb[a]=b[a]||function(){arguments.currentScript=c.currentScript\n||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};\nc.getElementById(a)||(d=c.createElement(f),d.src=g,\nd.id=a,e=c.getElementsByTagName(\"body\")[0],e.appendChild(d))})\n(window,document,\"script\",\"\/\/dn.msmstatic.com\/site\/cardlink\/bundle.js?20210203\",\"msmaflink\");\nmsmaflink({\"n\":\"LABISTS Raspberry Pi 4 4B-32GB\uff08\u6280\u9069\u30de\u30fc\u30af\u5165\uff09MicroSDHC\u30ab\u30fc\u30c932G\\\/NOOBS\u30b7\u30b9\u30c6\u30e0\u30d7\u30ea\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\\\/\u30ab\u30fc\u30c9\u30ea\u30fc\u30c0 \\\/5.1V\\\/3A Type-C \u30b9\u30a4\u30c3\u30c1\u4ed8\u96fb\u6e90\\\/MicroHDMI-to-HDMI\u30b1\u30fc\u30d6\u30eb\u30e9\u30a4\u30f3\\\/\u4e09\u3064\u30d2\u30fc\u30c8\u30b7\u30f3\u30af\\\/\u7c21\u5358\u306b\u53d6\u308a\u4ed8\u3051\u30b1\u30fc\u30b9\\\/\u65e5\u672c\u8a9e\u53d6\u6271\u8aac\u660e\u66f8\\\/\uff12\uff14\u30f6\u6708\u4fdd\u8a3c\",\"b\":\"LABISTS\",\"t\":\"Ras-4B-4GB-JP\",\"d\":\"https:\\\/\\\/m.media-amazon.com\",\"c_p\":\"\\\/images\\\/I\",\"p\":[\"\\\/51yb9HfX7xL._SL500_.jpg\",\"\\\/51fce-L9HHL._SL500_.jpg\",\"\\\/51XQT5IIfaL._SL500_.jpg\",\"\\\/5138BQYoRqL._SL500_.jpg\",\"\\\/51SPaXAArwL._SL500_.jpg\",\"\\\/41tl9GHJSdL._SL500_.jpg\",\"\\\/5124+v+JwvL._SL500_.jpg\",\"\\\/411GNQKg9LL._SL500_.jpg\",\"\\\/51ar4osZpgL._SL500_.jpg\"],\"u\":{\"u\":\"https:\\\/\\\/www.amazon.co.jp\\\/dp\\\/B084WT4G3P\",\"t\":\"amazon\",\"r_v\":\"\"},\"v\":\"2.1\",\"b_l\":[{\"id\":1,\"u_tx\":\"Amazon\u3067\u898b\u308b\",\"u_bc\":\"#f79256\",\"u_url\":\"https:\\\/\\\/www.amazon.co.jp\\\/dp\\\/B084WT4G3P\",\"a_id\":1848374,\"p_id\":170,\"pl_id\":27060,\"pc_id\":185,\"s_n\":\"amazon\",\"u_so\":1}],\"eid\":\"fKWSf\",\"s\":\"s\"});\n<\/script>\n<div id=\"msmaflink-fKWSf\">\u30ea\u30f3\u30af<\/div>\n<!-- MoshimoAffiliateEasyLink END -->\n\n\n\n<h2 class=\"has-text-color\" style=\"color:#0000ff\">\u30d7\u30ed\u30b0\u30e9\u30e0<\/h2>\n\n\n\n<h4>\u2460\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4f5c\u6210\u30d7\u30ed\u30b0\u30e9\u30e0<\/h4>\n\n\n\n<p>\u3000\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u753b\u50cf\u4f5c\u6210\u7528\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3059\u3002\u5bfe\u8c61\u6570\u5b57\u3092\u30d7\u30ed\u30b0\u30e9\u30e0\u5185\u3067\u5909\u66f4\u3057\u3066\u3001  [0]\uff5e[9] \u306e \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u753b\u50cf \u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"height-set:true height:300 lang:python decode:true\" title=\"raspi_7seg_create_template.py\">import numpy as np\nimport cv2\nimport serial\nimport time\n\ndef DISP_7SEG( disp_str ):\n    ser = serial.Serial('\/dev\/ttyUSB0',9600)\n    for i in range(8):\n        ser.write(bytes( disp_str , \"UTF-8\" ))\n\n    ser.write(b\"\\r\")\n    time.sleep(0.1)\n    ser.close\n    \n    \n# \u5909\u6570\u8a2d\u5b9a\ndst_w = 374                 # \u5909\u63db\u5e45 1120\ndst_h = 226                 # \u5909\u63db\u9ad8 680\n\nP_LU=[100,220]              # [\u5de6\u4e0a]\u3000\u5c04\u5f71\u5909\u63db\nP_RU=[530,220]              # [\u53f3\u4e0a]\u3000\u5c04\u5f71\u5909\u63db\nP_LD=[150,332]              # [\u5de6\u4e0b]  \u5c04\u5f71\u5909\u63db\nP_RD=[493,334]              # [\u53f3\u4e0b]  \u5c04\u5f71\u5909\u63db\n\nSEG_X=30                    # X : SEG-LOCATION-X\nSEG_Y=21                    # Y : SEG-LOCATION-Y\nSEG_W=29                    # W : SEG-WIDTH\nSEG_H=50                    # H : SEG-HEIGHT\nS_S_X=30.2                  # SEG_SPAN_X\nS_S_Y=0.8                   # SEG_SPAN_Y\n\nDISP_CHR=\"8\"\nfile_name = \"std_\" + DISP_CHR + \".jpg\"\nDISP_7SEG( DISP_CHR )       # 7SEG\u8868\u793a\n\ncapture=cv2.VideoCapture(0)\n\nwhile(True):\n    ret,img = capture.read()\n    \n    pts = np.array([P_LU,P_RU,P_RD,P_LD])\n    pts = pts.reshape((-1,1,2))\n    cv2.polylines(img,[pts],True,(0,0,255),2)\n\n    cv2.namedWindow('1_img_org', cv2.WINDOW_NORMAL)\n    cv2.imshow('1_img_org', img)\n    \n    # \u5c04\u5f71\u5909\u63db\u5ea7\u6a19\u3000[[\u5de6\u4e0a],[\u53f3\u4e0a],[\u5de6\u4e0b],[\u53f3\u4e0b]]\n    pts_src = np.float32([ P_LU , P_RU , P_LD , P_RD ])\n    pts_dst = np.float32([[0,0],[dst_w,0],[0,dst_h],[dst_w,dst_h]])\n\n    # \u5c04\u5f71\u5909\u63db\n    M = cv2.getPerspectiveTransform( pts_src , pts_dst )\n    img_trn = cv2.warpPerspective( img , M , ( dst_w , dst_h ))\n    cv2.namedWindow('2_img_trn', cv2.WINDOW_AUTOSIZE)\n    cv2.imshow('2_img_trn',img_trn)\n    \n    # \u5bfe\u8c61\u9818\u57df\u3092\u7d5e\u308a\u8fbc\u3080\n    img_crp = img_trn[ 100 : 200 , 80 : 400]\n    img_gry = cv2.cvtColor(img_crp, cv2.COLOR_BGR2GRAY)\n    ret, img_bin = cv2.threshold(img_gry , 130 , 255 , cv2.THRESH_BINARY_INV )\n    \n    # \u30bb\u30b0\u30e1\u30f3\u30c8\u9818\u57df\u51e6\u7406\n    for i in range(8):\n        tmp_X = int(SEG_X + i * S_S_X)\n        tmp_Y = int(SEG_Y + i * S_S_Y)\n\n        if i==4:\n            tmp_img = img_bin[ tmp_Y : tmp_Y + SEG_H , tmp_X : tmp_X+SEG_W ]\n            cv2.imwrite(\".\/template_7seg\/\"+file_name,tmp_img)\n\n        cv2.rectangle(img_bin, (tmp_X, tmp_Y), (tmp_X + SEG_W , tmp_Y + SEG_H), (0, 0, 255))\n\n    cv2.namedWindow('3_img_bin', cv2.WINDOW_AUTOSIZE)\n    cv2.imshow('3_img_bin',img_bin)    \n    \n    k = cv2.waitKey(1)\n    if k == 27:\n        break\n    \ncapture.release()\ncv2.destroyAllWindows()<\/pre>\n<p><\/p>\n\n\n<h4>\u2461\u6570\u5b57\u5224\u5b9a\u30d7\u30ed\u30b0\u30e9\u30e0<\/h4>\n\n\n\n<p>\u3000\u6570\u5b57\u5224\u5b9a\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3059\u3002\u5c04\u5f71\u5909\u63db\u3084\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\u9818\u57df\u7b49\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u5185\u3067\u5ea7\u6a19\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002<br>\u3000\u521d\u671f\u8a2d\u5b9a\u3068\u3057\u3066\u3001\u30ab\u30e1\u30e9\u3068\uff17\u30bb\u30b0LED\u306e\u4f4d\u7f6e\u8abf\u6574\u3084\u30d7\u30ed\u30b0\u30e9\u30e0\u5185\u3067\u306e\u5ea7\u6a19\u8abf\u6574\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n<pre class=\"height-set:true height:300 lang:python decode:true \" title=\"raspi_7seg_template_matching.py\">import numpy as np\nimport cv2\nimport serial\nimport time\nimport random\n\ndef DISP_7SEG( disp_str ):\n    ser = serial.Serial('\/dev\/ttyUSB0',9600)\n    for i in range(8):\n        ser.write(bytes( disp_str , \"UTF-8\" ))\n\n    ser.write(b\"\\r\")\n    time.sleep(0.1)\n    ser.close\n    \ndef DISP_7SEG_RANDAM():\n    ser = serial.Serial(\"\/dev\/ttyUSB0\", 9600)\n    for i in range(8):\n        tmp = random.randint(0, 9)\n        ser.write(bytes(str(tmp), \"UTF-8\"))\n    ser.write(b\"\\r\")\n    time.sleep(0.3)\n    ser.close\n    \n    \n# \u5909\u6570\u8a2d\u5b9a\ndst_w = 374                 # \u5909\u63db\u5e45 1120\ndst_h = 226                 # \u5909\u63db\u9ad8 680\n\nP_LU=[100,220]              # [\u5de6\u4e0a]\u3000\u5c04\u5f71\u5909\u63db\nP_RU=[530,220]              # [\u53f3\u4e0a]\u3000\u5c04\u5f71\u5909\u63db\nP_LD=[150,332]              # [\u5de6\u4e0b]  \u5c04\u5f71\u5909\u63db\nP_RD=[493,334]              # [\u53f3\u4e0b]  \u5c04\u5f71\u5909\u63db\n\nSEG_X=30                    # X : SEG-LOCATION-X\nSEG_Y=21                    # Y : SEG-LOCATION-Y\nSEG_W=29                    # W : SEG-WIDTH\nSEG_H=50                    # H : SEG-HEIGHT\nS_S_X=30.2                  # SEG_SPAN_X\nS_S_Y=0.8                   # SEG_SPAN_Y\ns_mgn=20                    # \u30de\u30fc\u30b8\u30f3\n\nDISP_7SEG_RANDAM()       # 7SEG\u8868\u793a\n\ncapture=cv2.VideoCapture(0)\n\nwhile(True):\n    ret,img = capture.read()\n    \n    pts = np.array([P_LU,P_RU,P_RD,P_LD])\n    pts = pts.reshape((-1,1,2))\n    cv2.polylines(img,[pts],True,(0,0,255),2)\n\n    cv2.namedWindow('1_img_org', cv2.WINDOW_NORMAL)\n    cv2.imshow('1_img_org', img)\n    \n    # \u5c04\u5f71\u5909\u63db\u5ea7\u6a19\u3000[[\u5de6\u4e0a],[\u53f3\u4e0a],[\u5de6\u4e0b],[\u53f3\u4e0b]]\n    pts_src = np.float32([ P_LU , P_RU , P_LD , P_RD ])\n    pts_dst = np.float32([[0,0],[dst_w,0],[0,dst_h],[dst_w,dst_h]])\n\n    # \u5c04\u5f71\u5909\u63db\n    M = cv2.getPerspectiveTransform( pts_src , pts_dst )\n    img_trn = cv2.warpPerspective( img , M , ( dst_w , dst_h ))\n    cv2.namedWindow('2_img_trn', cv2.WINDOW_AUTOSIZE)\n    cv2.imshow('2_img_trn',img_trn)\n    \n    # \u5bfe\u8c61\u9818\u57df\u3092\u7d5e\u308a\u8fbc\u3080\n    crp_X=80\n    crp_Y=100\n    crp_W=294\n    crp_H=100\n    img_crp = img_trn[ crp_Y : crp_Y + crp_H , crp_X : crp_X+crp_W ]\n    img_gry = cv2.cvtColor(img_crp, cv2.COLOR_BGR2GRAY)\n    ret, img_bin = cv2.threshold(img_gry , 130 , 255 , cv2.THRESH_BINARY_INV )\n    \n    getVal = [ \"*\", \"*\", \"*\", \"*\", \"*\", \"*\", \"*\", \"*\" ]\n    getScr = [\"*\", \"*\", \"*\", \"*\", \"*\", \"*\", \"*\", \"*\"]\n\n    # \u30bb\u30b0\u30e1\u30f3\u30c8\u9818\u57df\u51e6\u7406\n    for i in range(8):\n        tmp_X = int(SEG_X + i * S_S_X)\n        tmp_Y = int(SEG_Y + i * S_S_Y)\n        tmp_img = img_bin[tmp_Y-s_mgn: tmp_Y + SEG_H+s_mgn , tmp_X - s_mgn: tmp_X + SEG_W + s_mgn]\n\n        maxVal_All = 0.4\n        num_dsp = -1\n\n        # cv2.imshow('tmp_img', tmp_img)\n        for j in range(10):\n            i_tmpl=cv2.imread(\".\/template_7seg\/std_\" + str(j) + \".jpg\",0)\n            result = cv2.matchTemplate(tmp_img,i_tmpl,cv2.TM_CCOEFF_NORMED)\n            min_val , max_val , min_loc , max_loc = cv2.minMaxLoc(result)\n            # print(str(j)+\" : \"+str(max_val))\n\n            if max_val &gt; maxVal_All:\n                num_dsp = j\n                maxVal_All = max_val\n\n                getVal[i] = str(num_dsp)\n                getScr[i] = \"P\" + str(i)+\": \"+str(int(100*max_val))+\" %\"\n        \n        if i&lt;4:\n            cv2.putText(img, getScr[i] , (20, 370+i*30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 1, cv2.LINE_AA)\n        else:\n            cv2.putText(img, getScr[i] , (220, 370+(i-4)*30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 1, cv2.LINE_AA)   \n\n    img[ 0 : crp_H , 0 : crp_W] = cv2.cvtColor(img_bin, cv2.COLOR_GRAY2BGR)\n\n    dspText = getVal[0]+getVal[1]+getVal[2]+getVal[3]+getVal[4]+getVal[5]+getVal[6]+getVal[7]\n    cv2.putText(img,dspText,(80,200),cv2.FONT_HERSHEY_SIMPLEX,3,(0,0,255),5,cv2.LINE_AA)\n    cv2.namedWindow('1_img_org', cv2.WINDOW_NORMAL)\n    cv2.imshow('1_img_org', img)\n    # cv2.namedWindow('3_img_bin', cv2.WINDOW_NORMAL)\n    # cv2.imshow('3_img_bin', img_bin)\n        \n    print(dspText)\n    time.sleep(0.3)\n        \n    k = cv2.waitKey(1)\n    if k == 27:\n        break\n    elif k==ord('c'):\n        DISP_7SEG_RANDAM()\n    \ncapture.release()\ncv2.destroyAllWindows()<\/pre>\n<p><\/p>\n\n\n<h2 class=\"has-text-color\" style=\"color:#0000ff\">\u307e\u3068\u3081<\/h2>\n\n\n\n<p>\u3000\u4eca\u56de\u5bfe\u8c61\u306b\u3057\u3066\u3044\u308b\u8d64\u8272\u306e\uff17\u30bb\u30b0LED\u3068\u306f\u5225\u306b\u9ec4\u8272\u306e\uff17\u30bb\u30b0LED\u3082\u8a55\u4fa1\u3057\u3066\u3044\u307e\u3059\u3002\u8d64\u8272\u306e\u65b9\u306f\u6bd4\u8f03\u7684\u5b89\u5b9a\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u9ec4\u8272\u306e\u65b9\u306f\u5468\u56f2\u306e\u7167\u660e\uff0c\u81ea\u7136\u5149\u7b49\u306e\u3061\u3087\u3063\u3068\u3057\u305f\u5909\u5316\u306b\u5f71\u97ff\u3055\u308c\u975e\u5e38\u306b\u4e0d\u5b89\u5b9a\u306a\u306e\u3067\u3001\u8a55\u4fa1\u3092\u4e2d\u65ad\u3057\u3066\u3044\u307e\u3059\u3002<br>\u3000\u30e9\u30ba\u30d1\u30a4\u3067\u306f\u3001\u4e00\u5fdc\u9023\u7d9a\u7684\u306b\u52d5\u4f5c\u3057\u307e\u3059\u304c\u3001\u7d50\u69cb\u91cd\u305f\u3044\u611f\u3058\u3067\u3059\u3002\u201cc\u201d \u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u8868\u793a\u5185\u5bb9\u3092\u5207\u308a\u63db\u3048\u3059\u308b\u69d8\u306b\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u5e73\u5747\uff11\uff5e\uff12\u79d2\u304f\u3089\u3044\u3001\u9577\u3044\u5834\u5408\u306f\uff11\uff10\u79d2\u7a0b\u5ea6\u5f85\u3064\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<br>\u3000\u4e00\u65b9\u3001\uff17\u30bb\u30b0LED\u306b\u63a5\u7d9a\u3057\u3066\u3044\u308b\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u540d\u3092\u5909\u66f4\u3059\u308c\u3070\u3001\u540c\u3058\u30d7\u30ed\u30b0\u30e9\u30e0\u3067 python + OpenCV \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305fWindows10 PC\u4e0a\u3067\u52d5\u4f5c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u305f\u3002\u3082\u3068\u3082\u3068\u79c1\u306e\u30d1\u30bd\u30b3\u30f3\u306f\u4eca\u56de\u306e\u69d8\u306a\u5b9f\u9a13\u3092\u884c\u3046\u306b\u306f\u975e\u529b\u3068\u5e38\u3005\u611f\u3058\u3066\u3044\u308b\u306e\u3067\u3059\u304c\u3001\u611f\u899a\u7684\u306b\u5c11\u3057\u9045\u308c\u308b\u3068\u611f\u3058\u308b\u7a0b\u5ea6\u3067\u52d5\u4f5c\u3057\u3066\u3044\u307e\u3059\u3002<br><br><br><\/p>\n\n\n\n<p><br>\u3000\u3000<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6a5f\u80fd \u3000\u30e9\u30ba\u30d1\u30a4\u306b\u63a5\u7d9a\u3057\u305fUSB\u30ab\u30e1\u30e9\u3067\u3001\uff17\u30bb\u30b0LED\u3092\u659c\u3081\u4e0a\u65b9\u5411\u304b\u3089\u64ae\u5f71\u3057\u3001OpenCV\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u4f7f\u3063\u3066\u3001\u6570\u5b57\u3092\u8a8d\u8b58\u3057\u307e\u3059\u3002\u3000\u5927\u307e\u304b\u306a\u6d41\u308c\u3068\u3057\u3066\u306f\u3001\u5148\u305a\u3001\u659c\u3081\u4e0a\u304b\u3089\u64ae\u5f71\u3057\u305f\u753b\u50cf\u5bfe\u8c61\u9818\u57df\u3092\u6b63\u9762\u304b\u3089\u898b\u305f\u69d8\u306a &hellip; <a href=\"https:\/\/kats-eye.net\/info\/2020\/06\/04\/template-matching\/\" class=\"more-link\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"screen-reader-text\">\u30e9\u30ba\u30d1\u30a4\uff14 \uff17\u30bb\u30b0\uff2c\uff25\uff24\u6570\u5b57\u3092\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\u3067\u5224\u5b9a<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":4361,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[110],"tags":[130,119,116,118],"_links":{"self":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts\/4355"}],"collection":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/comments?post=4355"}],"version-history":[{"count":30,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts\/4355\/revisions"}],"predecessor-version":[{"id":5991,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts\/4355\/revisions\/5991"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/media\/4361"}],"wp:attachment":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/media?parent=4355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/categories?post=4355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/tags?post=4355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}