{"id":4553,"date":"2020-06-27T22:18:03","date_gmt":"2020-06-27T13:18:03","guid":{"rendered":"http:\/\/kats-eye.net\/info\/?p=4553"},"modified":"2020-06-27T22:46:13","modified_gmt":"2020-06-27T13:46:13","slug":"cameras-connect","status":"publish","type":"post","link":"https:\/\/kats-eye.net\/info\/2020\/06\/27\/cameras-connect\/","title":{"rendered":"\uff12CAMERA\u64ae\u5f71\u3057\u305f\u753b\u50cf\u3092\u9023\u7d50\u3059\u308b\uff08python+OPEN CV\uff09"},"content":{"rendered":"\n<h2 class=\"has-text-color\" style=\"color:#0000ff\">\u6982\u8981<\/h2>\n\n\n\n<p>\u3000\uff11\u3064\u306e\u5bfe\u8c61\u7269\u3092\u7570\u306a\u308b\u89d2\u5ea6\u304b\u3089\u64ae\u5f71\u3057\u305f\u308a\u3001\u8907\u6570\u306e\u5bfe\u8c61\u7269\u3092\u540c\u6642\u64ae\u5f71\u3057\u305f\u3044\u5834\u5408\u306b\u5229\u7528\u3059\u308b\u70ba\u306b\u3001\uff12\u30ab\u30e1\u30e9\u64ae\u5f71\u5f8c\u3001\u64ae\u5f71\u753b\u50cf\u3092\u9023\u7d50\u3059\u308b python \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u306e\u3067\u8a18\u8f09\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4>\u25c6\u691c\u8a3c\u74b0\u5883\u25c6<\/h4>\n\n\n\n<p>  \u2460 OS\u3000\uff1a\u3000Windows10  64bit<br>  \u2461 \u8a00\u8a9e  \uff1a     python + OpenCV + pypylon<br>  \u2462 \u88c5\u7f6e  \uff1a     Basler   acA2500-14um(USB3)\u3000\u203b 2\u53f0<br>\u3000\u3000\u3000\u3000\u3000\u3000<\/p>\n\n\n\n<h2 class=\"has-text-color\" style=\"color:#0000ff\">\u7d50\u679c<\/h2>\n\n\n\n<p>\u3000(\uff13) (\uff14)\u306b\u30ab\u30e1\u30e9\uff11\uff0c\uff12\u306e\u5358\u4f53\u753b\u50cf\u3092\u793a\u3057\u307e\u3059\u3002(\uff11) (\uff12) \u306f\u5358\u4f53\u753b\u50cf\u3092\u6a2a\u65b9\u5411\u30fb\u7e26\u65b9\u5411\u306b\u9023\u7d50\u3057\u305f\u7d50\u679c\u3067\u3059\u3002<\/p>\n\n\n\n<p>\uff08\uff11\uff09\u6a2a\u65b9\u5411\u9023\u7d50\uff08\u30ab\u30e1\u30e9\uff11\u30fb\uff12\u9023\u7d50\u753b\u50cf\uff09<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"613\" height=\"313\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/001-1.png\" alt=\"\" class=\"wp-image-4554\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/001-1.png 613w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/001-1-300x153.png 300w\" sizes=\"(max-width: 613px) 100vw, 613px\" \/><\/figure>\n\n\n\n<p>\uff08\uff12\uff09\u7e26\u65b9\u5411\u9023\u7d50\uff08\u30ab\u30e1\u30e9\uff11\u30fb\uff12\u9023\u7d50\u753b\u50cf\uff09<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" width=\"155\" height=\"300\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/004-1-155x300.png\" alt=\"\" class=\"wp-image-4563\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/004-1-155x300.png 155w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/004-1.png 306w\" sizes=\"(max-width: 155px) 100vw, 155px\" \/><\/figure>\n\n\n\n<p>\uff08\uff13\uff09\u30ab\u30e1\u30e9\uff11\u753b\u50cf<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" width=\"293\" height=\"300\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/002-2-293x300.png\" alt=\"\" class=\"wp-image-4564\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/002-2-293x300.png 293w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/002-2.png 306w\" sizes=\"(max-width: 293px) 100vw, 293px\" \/><\/figure>\n\n\n\n<p>\uff08\uff14\uff09\u30ab\u30e1\u30e9\uff12\u753b\u50cf<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" width=\"293\" height=\"300\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/003-2-293x300.png\" alt=\"\" class=\"wp-image-4565\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/003-2-293x300.png 293w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2020\/06\/003-2.png 306w\" sizes=\"(max-width: 293px) 100vw, 293px\" \/><\/figure>\n\n\n\n<p>\u3000\u3000<\/p>\n\n\n\n<h2 class=\"has-text-color\" style=\"color:#0000ff\">\u30d7\u30ed\u30b0\u30e9\u30e0\u2460 \uff08\u57fa\u672c\uff09<\/h2>\n\n\n\n<p>\u3000\u3053\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u79c1\u306b\u3068\u3063\u3066\u306e\u30dd\u30a4\u30f3\u30c8\u306f\u3001\u30ab\u30e1\u30e9\u672c\u4f53\u8a18\u8f09\u306e\u30b7\u30ea\u30a2\u30eb\u756a\u53f7\uff08S\/N\uff09\u3067\u3001\u5bfe\u8c61\u30ab\u30e1\u30e9\u3092\u6307\u5b9a\u3067\u304d\u308b\u3053\u3068\u3067\u3059\u3002\u884c\u756a11\uff5e12\u3067\u30ab\u30e1\u30e9\uff11\u306e\u30b7\u30ea\u30a2\u30eb\u756a\u53f7\u3092\u8a2d\u5b9a\u3057\u3001\u884c\u756a13\u3067\u30ab\u30e1\u30e9\uff11\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3057\u307e\u3059\u3002\u3000\u540c\u69d8\u306b\u884c\u756a17\uff5e19\u3067\u30ab\u30e1\u30e9\uff12\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3057\u3066\u3044\u307e\u3059\u3002<br>\u3000\u4ee5\u5f8c\u3001GitHub\u306b\u3042\u308b\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\uff08opencv.py\uff09\u3092\u53c2\u8003\u306b\uff12\u30ab\u30e1\u30e9\u5bfe\u5fdc\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<br>\u3000\uff12\u30ab\u30e1\u30e9\u753b\u50cf\u306e\u9023\u7d50\u306f\u3001\u6a2a\u65b9\u5411\u9023\u7d50\u306f\u753b\u50cf\u9ad8\u3055\u304c\u540c\u3058\u3067\u3042\u308b\u3053\u3068\u3002\u7e26\u65b9\u5411\u9023\u7d50\u306f\u753b\u50cf\u5e45\u304c\u540c\u3058\u3067\u3042\u308b\u3053\u3068\u304c\u6761\u4ef6\u3067\u3059\u3002\u3053\u306e\u6761\u4ef6\u3092\u6e80\u305f\u305b\u3070\u9023\u7d50\u306f\u7c21\u5358\u3067\u3001\u884c\u756a62\uff08\u6a2a\u9023\u7d50\uff09\uff0c\u884c\u756a68\uff08\u7e26\u9023\u7d50\uff09\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"height-set:true lang:python decode:true \" title=\"opencv_try_get_two_cmr_01.py\"># Basler acA2500-14um (USB3)   \u753b\u50cf\u5e45\u30fb\u9ad8\u3055\uff081944X2592\uff09\n\nfrom pypylon import pylon\nimport cv2\n# import numpy as np\n\ns_n_1 = \"********\"\ns_n_2 = \"********\"\n\n# \uff7c\uff98\uff71\uff99\uff85\uff9d\uff8a\uff9e\uff70\u6307\u5b9a\u306b\u3088\u308b\uff83\uff9e\uff8a\uff9e\uff72\uff7d\u8d77\u52d51\ninf1 = pylon.DeviceInfo()\ninf1.SetSerialNumber(s_n_1)\ncmr1 = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice(inf1))\ncmr1.StartGrabbing(pylon.GrabStrategy_LatestImageOnly) \n\n# \uff7c\uff98\uff71\uff99\uff85\uff9d\uff8a\uff9e\uff70\u6307\u5b9a\u306b\u3088\u308b\uff83\uff9e\uff8a\uff9e\uff72\uff7d\u8d77\u52d52\ninf2 = pylon.DeviceInfo()\ninf2.SetSerialNumber(s_n_2)\ncmr2 = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice(inf2))\ncmr2.StartGrabbing(pylon.GrabStrategy_LatestImageOnly) \n\n# \u53d6\u5f97\uff83\uff9e\uff70\uff80\uff7a\uff9d\uff8a\uff9e\uff70\uff80\u8a2d\u5b9a\uff08opencv bgr format\uff09\nconverter = pylon.ImageFormatConverter()\nconverter.OutputPixelFormat = pylon.PixelType_BGR8packed\nconverter.OutputBitAlignment = pylon.OutputBitAlignment_MsbAligned\n\n# \u9023\u7d9a\u64ae\u5f71\nwhile cmr1.IsGrabbing() and cmr2.IsGrabbing():\n\n    # \u30ab\u30e1\u30e9\uff11\n    img_1 = None\n    g_Rslt1 = cmr1.RetrieveResult(5000, pylon.TimeoutHandling_ThrowException)\n    if g_Rslt1.GrabSucceeded():\n        image_1 = converter.Convert(g_Rslt1)\n        img_1 = image_1.GetArray()\n        \n    g_Rslt1.Release()\n\n    # \u30ab\u30e1\u30e9\uff12\n    img_2 = None\n    g_Rslt2 = cmr2.RetrieveResult(5000, pylon.TimeoutHandling_ThrowException)\n    if g_Rslt2.GrabSucceeded():\n        image_2 = converter.Convert(g_Rslt2)\n        img_2 = image_2.GetArray()\n        \n    g_Rslt2.Release()\n\n\n    # \u30ab\u30e1\u30e9\uff11\u30fb\uff12\u753b\u50cf\u5408\u6210\n    if (not img_1 is None) and (not img_2 is None) :\n        \n        # cv2.namedWindow('camera_1', cv2.WINDOW_NORMAL)\n        # cv2.imshow('camera_1', img_1)\n        # cv2.namedWindow('camera_2', cv2.WINDOW_NORMAL)\n        # cv2.imshow('camera_2', img_2)\n     \n        h1, w1, c1 = img_1.shape    # \u753b\u50cf\u5e45\u30fb\u9ad8\u3055\u53d6\u5f97\n        h2, w2, c2 = img_2.shape    # \u753b\u50cf\u5e45\u30fb\u9ad8\u3055\u53d6\u5f97\n\n        # \u6a2a\u65b9\u5411\u5408\u6210\n        if h1 == h2:\n            img_merge_v = cv2.hconcat([img_1, img_2])\n            cv2.namedWindow('img_mrg_v', cv2.WINDOW_NORMAL)\n            cv2.imshow('img_mrg_v', img_merge_v)\n\n        # \u7e26\u65b9\u5411\u5408\u6210\n        # if w1 == w2:\n        #     img_merge_h = cv2.vconcat([img_1, img_2])\n        #     cv2.namedWindow('img_mrg_h', cv2.WINDOW_NORMAL)\n        #     cv2.imshow('img_mrg_h', img_merge_h)\n\n    k = cv2.waitKey(1)\n    if k == 27:\n        break\n\n# \uff83\uff9e\uff8a\uff9e\uff72\uff7d\u958b\u653e  \ncmr1.StopGrabbing()\ncmr2.StopGrabbing()\n\ncv2.destroyAllWindows()\n<\/pre>\n<p>\u00a0<\/p>\n\n\n<h2 class=\"has-text-color\" style=\"color:#0000ff\">\u30d7\u30ed\u30b0\u30e9\u30e0\u2461 \uff08\u767a\u5c55\uff09<\/h2>\n\n\n\n<p> \u3000\u57fa\u672c\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u306f\u3001 \u30ab\u30e1\u30e9\u672c\u4f53\u8a18\u8f09\u306e\u30b7\u30ea\u30a2\u30eb\u756a\u53f7\uff08S\/N\uff09 \u3092\u30d7\u30ed\u30b0\u30e9\u30e0\u5185\u306b\u76f4\u63a5\u8a18\u8f09\u3057\u307e\u3057\u305f\u304c\u3001\u3053\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u306f\u63a5\u7d9a\u3055\u308c\u3066\u3044\u308b\u30ab\u30e1\u30e9\u3092\u81ea\u52d5\u8a8d\u8b58\u30fb\u64ae\u5f71\u3057\u307e\u3059\u3002\u540c\u3058\u89e3\u50cf\u5ea6\u306e\u30ab\u30e1\u30e9\u3067\u3042\u308c\u3070\u3001\u63a5\u7d9a\u6570\u306b\u3088\u3063\u3066\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u304d\u63db\u3048\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n<pre class=\"height-set:true lang:python decode:true\" title=\"opencv_try_get_two_cmr_12.py\"># Basler acA2500-14um (USB3)   \u753b\u50cf\u5e45\u30fb\u9ad8\u3055\uff081944X2592\uff09\n\nfrom pypylon import pylon\nimport cv2\n\n\n# \u64ae\u5f71\u4e2d\u30c1\u30a7\u30c3\u30af\u7528\ndef CAMERA_IsGrabbing(CAMERA_ARY):\n    chk_rslt = True  \n    for CMR in CAMERA_ARY :\n        if not CMR.IsGrabbing() :\n            chk_rslt = False\n    return chk_rslt\n\n# \u64ae\u5f71\u505c\u6b62\ndef CAMERA_StopGrabbing(CAMERA_ARY):\n    for CMR in CAMERA_ARY :\n        CMR.StopGrabbing()\n\n\ntlFactory = pylon.TlFactory.GetInstance()\ndevices = tlFactory.EnumerateDevices()\ncameras = pylon.InstantCameraArray(len(devices))\n\nMDL_ARY = []\nS_N_ARY = []\nCMR_ARY = []\n\n# \u64ae\u5f71\u958b\u59cb\nfor i, cam in enumerate(cameras):\n    # \u4e0b\u8a18 4\u884c\u306f\u53c2\u8003\u3002\u672c\u30d7\u30ed\u30b0\u30e9\u30e0\u6a5f\u80fd\u4e0a\u306f\u4e0d\u8981\u3002\n    cam.Attach(tlFactory.CreateDevice(devices[i]))\n    MDL_ARY.append(cam.GetDeviceInfo().GetModelName())      # GET DEVICE MODEL\n    S_N_ARY.append(cam.GetDeviceInfo().GetSerialNumber())   # GET DEVICE Serial Number\n    # print(\"No\", i ,\" ,  Model: \", MDL_ARY[i] , \"  ,  S\/N: \", S_N_ARY[i])\n\n    # \u64ae\u5f71\u958b\u59cb\n    CMR_ARY.append(pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateDevice(devices[i])))\n    CMR_ARY[i].StartGrabbing(pylon.GrabStrategy_LatestImageOnly)                  \n\n# \u53d6\u5f97\uff83\uff9e\uff70\uff80\uff7a\uff9d\uff8a\uff9e\uff70\uff80\u8a2d\u5b9a\uff08opencv bgr format\uff09\nconverter = pylon.ImageFormatConverter()\nconverter.OutputPixelFormat = pylon.PixelType_BGR8packed\nconverter.OutputBitAlignment = pylon.OutputBitAlignment_MsbAligned\n\n# \u9023\u7d9a\u64ae\u5f71\nwhile CAMERA_IsGrabbing(CMR_ARY) :\n    IMG_ARY = []\n    # cnt_grab_success = 0\n\n    # \u30ab\u30e1\u30e9\u753b\u50cf\u53d6\u5f97\n    for idx in range(len(CMR_ARY)):\n        IMG_ARY.append(None)\n\n        tmp_Rslt = CMR_ARY[idx].RetrieveResult(5000, pylon.TimeoutHandling_ThrowException)\n\n        if tmp_Rslt.GrabSucceeded():\n            tmp_img = converter.Convert(tmp_Rslt)\n            IMG_ARY[idx] = tmp_img.GetArray()\n            # cnt_grab_success += 1\n        \n        tmp_Rslt.Release()\n\n    # \u753b\u50cf\u30de\u30fc\u30b8\u5b9f\u884c(\u5168\u30ab\u30e1\u30e9\u753b\u50cf\u53d6\u5f97\u6210\u529f\u6642)\n    # \u5168\u753b\u50cf\u9ad8\u3055\u304c\u540c\u3058\u3067\u3042\u308b\u3053\u3068\n    if len(CMR_ARY) == len(IMG_ARY) :\n        for idx in range(len(IMG_ARY)):\n            if idx == 0 :\n                img_merged = IMG_ARY[idx]\n            else :\n                img_merged = cv2.hconcat([img_merged, IMG_ARY[idx]])\n\n        cv2.namedWindow('img_merged', cv2.WINDOW_NORMAL)\n        cv2.imshow('img_merged', img_merged)\n\n\n    k = cv2.waitKey(1)\n    if k == 27:\n        break\n\nCAMERA_StopGrabbing(CMR_ARY)        # \uff83\uff9e\uff8a\uff9e\uff72\uff7d\u89e3\u653e\ncv2.destroyAllWindows()\n<\/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\u5c11\u3057\u96e2\u308c\u305f\u3068\u3053\u308d\u306b\u3042\u308b\u8907\u6570\u306e\uff17\u30bb\u30b0LED\u89e3\u6790\u3092\uff11\u3064\u306e\u30d1\u30bd\u30b3\u30f3\u3067\u884c\u3044\u305f\u304b\u3063\u305f\u306e\u3067\u3001\u4eca\u56de\u306e\u691c\u8a0e\u3092\u3057\u3066\u3044\u307e\u3059\u3002<br>\u3000\u307e\u305f\u3001\u540c\u3058\u5bfe\u8c61\u7269\u3067\u3082\u7570\u306a\u308b\u89d2\u5ea6\u304b\u3089\u8907\u5408\u7684\u306b\u89e3\u6790\u3059\u308b\u3053\u3068\u3067\u3001\u7cbe\u5ea6\u5411\u4e0a\u7b49\u306b\u6d3b\u7528\u51fa\u6765\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6982\u8981 \u3000\uff11\u3064\u306e\u5bfe\u8c61\u7269\u3092\u7570\u306a\u308b\u89d2\u5ea6\u304b\u3089\u64ae\u5f71\u3057\u305f\u308a\u3001\u8907\u6570\u306e\u5bfe\u8c61\u7269\u3092\u540c\u6642\u64ae\u5f71\u3057\u305f\u3044\u5834\u5408\u306b\u5229\u7528\u3059\u308b\u70ba\u306b\u3001\uff12\u30ab\u30e1\u30e9\u64ae\u5f71\u5f8c\u3001\u64ae\u5f71\u753b\u50cf\u3092\u9023\u7d50\u3059\u308b python \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u306e\u3067\u8a18\u8f09\u3057\u307e\u3059\u3002 \u25c6\u691c\u8a3c\u74b0\u5883\u25c6 \u2460 OS\u3000\uff1a\u3000Wi &hellip; <a href=\"https:\/\/kats-eye.net\/info\/2020\/06\/27\/cameras-connect\/\" class=\"more-link\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"screen-reader-text\">\uff12CAMERA\u64ae\u5f71\u3057\u305f\u753b\u50cf\u3092\u9023\u7d50\u3059\u308b\uff08python+OPEN CV\uff09<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":4558,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[75],"tags":[119,116],"_links":{"self":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts\/4553"}],"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=4553"}],"version-history":[{"count":17,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts\/4553\/revisions"}],"predecessor-version":[{"id":4578,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts\/4553\/revisions\/4578"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/media\/4558"}],"wp:attachment":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/media?parent=4553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/categories?post=4553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/tags?post=4553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}