{"id":18118,"date":"2024-05-20T20:35:54","date_gmt":"2024-05-20T11:35:54","guid":{"rendered":"https:\/\/www.bigriver.jp\/?p=18118"},"modified":"2024-05-20T20:36:35","modified_gmt":"2024-05-20T11:36:35","slug":"gemini-%e3%81%a7%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e5%ad%a6%e7%bf%92-5-opencv-%e3%81%a7web%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%8b%e3%82%89%e8%87%aa%e5%8b%95%e8%bb%8a","status":"publish","type":"post","link":"https:\/\/www.bigriver.jp\/?p=18118","title":{"rendered":"Gemini \u3067\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u5b66\u7fd2 #5 OpenCV \u3067Web\u30ab\u30e1\u30e9\u304b\u3089\u52d5\u4f53\u691c\u77e5"},"content":{"rendered":"\n<p>\u73fe\u5728\u3001Python\u3092\u52c9\u5f37\u4e2d\u3067\u3059\u3002\u3000\u307e\u305f\u3001\u751f\u6210AI\u3082\u7fd2\u3046\u3088\u308a\u6163\u308c\u3088\u3068\u51fa\u6765\u308b\u9650\u308a\u4f7f\u3063\u3066\u7d4c\u9a13\u5024\u3092\u9ad8\u3081\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u3000\u3068\u3044\u3046\u3053\u3068\u3067 Gemini \u3092\u6559\u5e2b\u3068\u3057\u3066 Python \u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u5b66\u7fd2\u3057\u3066\u3044\u304f\u904e\u7a0b\u3092\u30d6\u30ed\u30b0\u306b\u6b8b\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4eca\u56de\u306f\u524d\u56de\u306b\u5f15\u304d\u7d9a\u304d Web \u30ab\u30e1\u30e9\u306e\u6620\u50cf\u306e\u52d5\u4f53\u691c\u77e5\u3067\u3059\u3002\u3000<a href=\"https:\/\/www.bigriver.jp\/?p=18085\">\u524d\u56de\u306f<\/a>\u81ea\u52d5\u8eca\u691c\u77e5\u306e\u30ab\u30b9\u30b1\u30fc\u30c9\u5206\u985e\u6a5f\u3092\u4f5c\u308d\u3046\u3068\u3057\u305f\u306e\u3067\u3059\u304c\u30a4\u30de\u30a4\u30c1\u306a\u7d50\u679c\u3067\u3057\u305f\u3002\u3000\u4eca\u56de\u306f\u81ea\u52d5\u8eca\u306b\u9650\u5b9a\u3057\u306a\u3044\u52d5\u4f53\u691c\u77e5\u306e\u30c6\u30b9\u30c8\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"479\" src=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-79-1024x479.png\" alt=\"\" class=\"wp-image-18119\" srcset=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-79-1024x479.png 1024w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-79-300x140.png 300w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-79-768x360.png 768w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-79-940x440.png 940w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-79.png 1305w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/figure>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u76ee\u6b21<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a0077c1e3b99\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\" style='display:none' id=\"ez-toc-cssicon-toggle-item-6a0077c1e3b99\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.bigriver.jp\/?p=18118\/#Gemini_%E3%81%AB%E8%81%9E%E3%81%84%E3%81%A6%E3%81%BF%E3%82%8B\" >Gemini \u306b\u805e\u3044\u3066\u307f\u308b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.bigriver.jp\/?p=18118\/#%E3%82%B3%E3%83%BC%E3%83%89\" >\u30b3\u30fc\u30c9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.bigriver.jp\/?p=18118\/#%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E5%87%A6%E7%90%86%E3%82%92%E8%BF%BD%E5%8A%A0\" >\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u3092\u8ffd\u52a0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.bigriver.jp\/?p=18118\/#functions_have_different_types_the_output_array_type_must_be_explicitly_specified_in_function_%E2%80%98cv_arithm_op\" >functions have different types, the output array type must be explicitly specified in function &#8216;cv::arithm_op&#8217;<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-0\"><span class=\"ez-toc-section\" id=\"Gemini_%E3%81%AB%E8%81%9E%E3%81%84%E3%81%A6%E3%81%BF%E3%82%8B\"><\/span><span class=\"sgb-heading__inner sgb-heading--type2\" style=\"background-color:#d07119;border-color:transparent;font-size:1.2em\"><span class=\"sgb-heading__text\" style=\"color:#FFF\">Gemini \u306b\u805e\u3044\u3066\u307f\u308b<\/span><\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<div class=\"wp-block-sgb-say\"><div class=\"sgb-block-say sgb-block-say--left\"><div class=\"sgb-block-say-avatar\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2019\/08\/cropped-bigriver.png\" alt=\"bigriver.jp\" width=\"80\" height=\"80\" style=\"border-color:#eaedf2\"><div class=\"sgb-block-say-avatar__name\">bigriver.jp<\/div><\/div><div class=\"sgb-block-say-text\"><div class=\"sgb-block-say-text__content\" style=\"color:#333;border-color:#d5d5d5;background-color:#fff9e6\">\n<p>WebCV \u3067Web\u30ab\u30e1\u30e9\u306e\u6620\u50cf\u304b\u3089\u52d5\u304f\u3082\u306e\u306b\u77e9\u5f62\u3067\u56f2\u3044\u305f\u3044<\/p>\n<span class=\"sgb-block-say-text__before\" style=\"border-right-color:#d5d5d5\"><\/span><span class=\"sgb-block-say-text__after\" style=\"border-right-color:#fff9e6\"><\/span><\/div><\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-sgb-say\"><div class=\"sgb-block-say sgb-block-say--right\"><div class=\"sgb-block-say-avatar\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gravatar.com\/avatar\/?d=mm\" alt=\"Gemini\" width=\"80\" height=\"80\" style=\"border-color:#eaedf2\"><div class=\"sgb-block-say-avatar__name\">Gemini<\/div><\/div><div class=\"sgb-block-say-text\"><div class=\"sgb-block-say-text__content\" style=\"color:#333;border-color:#d5d5d5;background-color:whitesmoke\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"203\" src=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-80.png\" alt=\"\" class=\"wp-image-18120\" srcset=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-80.png 768w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-80-300x79.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\"><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"635\" height=\"1024\" src=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-81-635x1024.png\" alt=\"\" class=\"wp-image-18121\" srcset=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-81-635x1024.png 635w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-81-186x300.png 186w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-81.png 669w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\"><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"711\" height=\"1024\" src=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-82-711x1024.png\" alt=\"\" class=\"wp-image-18122\" srcset=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-82-711x1024.png 711w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-82-208x300.png 208w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-82.png 730w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\"><\/figure>\n<span class=\"sgb-block-say-text__before\" style=\"border-left-color:#d5d5d5\"><\/span><span class=\"sgb-block-say-text__after\" style=\"border-left-color:whitesmoke\"><\/span><\/div><\/div><\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>\u5b9f\u306f\u79c1\u306e\u6700\u521d\u306e\u4f9d\u983c\u6587\u7ae0\u3067\u201dOpenCV\u201d\u3092\u201dWebCV\u201d\u3068\u30ad\u30fc\u5165\u529b\u3092\u9593\u9055\u3048\u3066\u3044\u307e\u3059\u3002\u3000\u305d\u308c\u306b\u5bfe\u3057\u3066 Gemini \u306f<\/p>\n\n\n\n<p>\u300cWeb\u30ab\u30e1\u30e9\u306e\u6620\u50cf\u304b\u3089\u52d5\u304f\u3082\u306e\u3092\u691c\u51fa\u3057\u3001\u77e9\u5f62\u3067\u56f2\u3080\u306b\u306f\u3001OpenCV\u306e\u6a5f\u80fd\u3092\u4f7f\u3046\u306e\u304c\u4e00\u822c\u7684\u3067\u3059\u3002<strong>WebCV\u3068\u3044\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u5b58\u5728\u3057\u306a\u3044\u305f\u3081\u3001OpenCV\u3092\u7528\u3044\u305f\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/strong>\u300d<\/p>\n\n\n\n<p>\u3068\u3001WebCV\u3067\u306f\u306a\u304f OpenCV\u306e\u8a71\u3068\u3057\u3066\u8aac\u660e\u3057\u307e\u3059\u3068\u3061\u3083\u3093\u3068\u9593\u9055\u3044\u3092\u8a8d\u8b58\u3057\u3001\u672c\u5f53\u306f\u4f55\u3060\u3063\u305f\u306e\u304b\u985e\u63a8\u3057\u56de\u7b54\u3057\u3066\u304f\u308c\u3066\u3044\u307e\u3059\u3002\u3000\u79c1\u3082\u751f\u6210AI\u51fa\u59cb\u3081\u3067\u3042\u307e\u308a\u89e6\u3063\u3066\u3044\u306a\u304b\u3063\u305f\u3053\u308d\u306f\u751f\u6210AI\u306e\u6b63\u3057\u3044\u4f7f\u3044\u65b9\u307f\u305f\u3044\u306a\u60c5\u5831\u3092\u3082\u3068\u306b\u3069\u3093\u306a\u5f79\u5272\u3067\u3001\u3053\u3093\u306a\u72b6\u6cc1\u3067\u56de\u7b54\u306f\u3053\u3046\u3053\u3046\u307b\u3057\u3044\u3068\u8272\u3005\u5de5\u592b\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3068\u601d\u3063\u3066\u3044\u307e\u3057\u305f\u3002\u3000\u6700\u8fd1\u672c\u6765\u4f7f\u308f\u306a\u304f\u3066\u3082\u826f\u3044\u5834\u9762\u3067\u3082\u51fa\u6765\u308b\u9650\u308a Gemini \u306b\u805e\u3044\u3066\u3044\u308b\u306e\u3067\u3059\u304c\u304b\u306a\u308a\u96d1\u306b\u554f\u3044\u304b\u3051\u3066\u3082\u3061\u3083\u3093\u3068\u7b54\u3048\u304c\u8fd4\u3063\u3066\u304d\u307e\u3059\u3002\u3000\u611f\u899a\u3068\u3057\u3066\u306f10\u3042\u308b\u3046\u3061\u306e2~3\u306e\u96d1\u306aINPUT\u30677-10\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f10\u4ee5\u4e0a\u306e\u56de\u7b54\u304c\u8fd4\u3063\u3066\u304f\u308b\u611f\u3058\u3067\u3059\u3002\u3000\u3082\u3061\u308d\u3093\u56de\u7b54\u5185\u5bb9\u306e\u6b63\u8aa4\u306f\u3042\u308a\u307e\u3059\u304c\u305d\u3093\u306a\u611f\u89e6\u3067\u3059\u3002<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-1\"><span class=\"ez-toc-section\" id=\"%E3%82%B3%E3%83%BC%E3%83%89\"><\/span><span class=\"sgb-heading__inner sgb-heading--type2\" style=\"background-color:#d07119;border-color:transparent;font-size:1.2em\"><span class=\"sgb-heading__text\" style=\"color:#FFF\">\u30b3\u30fc\u30c9<\/span><\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u9014\u4e2d\u8272\u3005\u4fee\u6b63\u3057\u3066\u3044\u307e\u3059\u304c\u6700\u7d42\u7684\u306a\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2\nimport numpy as np\n\n# get background image\ncap = cv2.VideoCapture(0)\nret, frame = cap.read()\nif not ret:\n    print('Error: cannot capture')\n    cap.release()\n    cv2.destroyAllWindows()\n    exit()\nbg = frame.copy()\n\nwhile True:\n    # read a frame from the camera\n    ret, frame = cap.read()\n    if not ret:\n        break\n\n    # calculate the difference between the background and the frame\n    diff = cv2.absdiff(frame, bg)\n    diff_gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)\n\n    # threshold\n    _, thresh = cv2.threshold(diff_gray, 30, 255, cv2.THRESH_BINARY)\n\n    # find contours\n    contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)\n\n    # draw contours\n    for countour in contours:\n        if cv2.contourArea(countour) &lt; 250:\n            continue\n        x,y,w,h = cv2.boundingRect(countour)\n        cv2.rectangle(frame, (x,y), (x+w, y+h), (0, 255, 0), 2)\n\n    # show the frame\n    cv2.imshow('frame', frame)\n\n    # 'q' key is pressed\n    if cv2.waitKey(1) &amp; 0xFF == ord('q'):\n        break   \n\n# release the camera\ncap.release()\ncv2.destroyAllWindows()<\/code><\/pre>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>\u5b9f\u884c\u7d50\u679c\u306f\u3053\u3061\u3089\u3002\u3000\u5b9f\u969b\u306b\u306f\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306b\u52d5\u304f\u3082\u306e\uff08\u6620\u50cf\u306f\u4ea4\u5dee\u70b9\u306a\u306e\u3067\u4e3b\u306b\u81ea\u52d5\u8eca\uff09\u306b\u3064\u3044\u3066\u7dd1\u8272\u306e\u67a0\u304c\u8ffd\u968f\u3057\u3066\u3044\u304d\u307e\u3059\u3002\u3000<\/p>\n\n\n\n<p>\u307e\u305f\u3001\u4eca\u56de\u306f\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u306f\u3044\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3092\u4e00\u5ea6\u53d6\u5f97\u3057\u30e2\u30b6\u30a4\u30af\u3092\u624b\u52d5\u3067\u304b\u3051\u3066\u3044\u307e\u3059\u3002\u3000\u3053\u306e\u5f8c\u3001\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u3092\u8ffd\u52a0\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3082\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-sango-with-big-shadow\"><img loading=\"lazy\" decoding=\"async\" width=\"639\" height=\"507\" src=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-83.png\" alt=\"\" class=\"wp-image-18126\" srcset=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-83.png 639w, https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/image-83-300x238.png 300w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\"><\/figure>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-2\"><span class=\"ez-toc-section\" id=\"%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E5%87%A6%E7%90%86%E3%82%92%E8%BF%BD%E5%8A%A0\"><\/span><span class=\"sgb-heading__inner sgb-heading--type2\" style=\"background-color:#d07119;border-color:transparent;font-size:1.2em\"><span class=\"sgb-heading__text\" style=\"color:#FFF\">\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u3092\u8ffd\u52a0<\/span><\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u4e2d\u3067\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u3092\u8ffd\u52a0\u3057\u305f\u30b3\u30fc\u30c9\u306f\u3053\u3061\u3089\u3002\u3000\u592a\u6587\u5b57\u304c\u8ffd\u52a0\u90e8\u5206\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2\nimport numpy as np\n\n<strong>def mosaic(src, ratio=0.2):\n    small = cv2.resize(src, None, fx=ratio, fy=ratio, interpolation=cv2.INTER_NEAREST)\n    return cv2.resize(small, src.shape[:2][::-1], interpolation=cv2.INTER_NEAREST)<\/strong>\n\n# get background image\ncap = cv2.VideoCapture(0)\nret, frame = cap.read()\nif not ret:\n    print('Error: cannot capture')\n    cap.release()\n    cv2.destroyAllWindows()\n    exit()\nbg = frame.copy()\n\nwhile True:\n    # read a frame from the camera\n    ret, frame = cap.read()\n    if not ret:\n        break\n\n    # calculate the difference between the background and the frame\n    diff = cv2.absdiff(frame, bg)\n    diff_gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)\n\n    # threshold\n    _, thresh = cv2.threshold(diff_gray, 30, 255, cv2.THRESH_BINARY)\n\n    # find contours\n    contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)\n\n    # draw contours\n    for countour in contours:\n        if cv2.contourArea(countour) &lt; 200:\n            continue\n        x,y,w,h = cv2.boundingRect(countour)\n        cv2.rectangle(frame, (x,y), (x+w, y+h), (0, 255, 0), 2)\n\n<strong>    # mosaic the frame\n    frame = mosaic(frame)<\/strong>\n\n    # show the frame\n    cv2.imshow('frame', frame)\n\n    # 'q' key is pressed\n    if cv2.waitKey(1) &amp; 0xFF == ord('q'):\n        break   \n\n# release the camera\ncap.release()\ncv2.destroyAllWindows()<\/code><\/pre>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>\u5b9f\u884c\u7d50\u679c\u306f\u3053\u3061\u3089\u3002\u3000Windows\u306e\u6a5f\u80fd\u3067MPEG\u306b\u3057\u305f\u3082\u306e\u3092\u5225\u9014GIF\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u3000\u30b5\u30a4\u30ba\u3092\u5c0f\u3055\u304f\u3059\u308b\u305f\u3081\u306b\u4f4e\u753b\u8cea\u306b\u3057\u3066\u3044\u308b\u305f\u3081\u3061\u3087\u3063\u3068\u898b\u3065\u3089\u3044\u3067\u3059\u304c\u5404\u30d5\u30ec\u30fc\u30e0\u304c\u30e2\u30b6\u30a4\u30af\u51e6\u7406\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p><span style=\"font-size: revert; color: initial; font-family: var(--sgb-font-family);\"><\/span><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"194\" height=\"146\" src=\"https:\/\/www.bigriver.jp\/wp-content\/uploads\/2024\/05\/frame-2024-05-20-18-27-05-1.gif\" alt=\"\" class=\"wp-image-18133\"><\/figure>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-3\"><span class=\"sgb-heading__inner sgb-heading--type2\" style=\"background-color:#d07119;border-color:transparent;font-size:1.2em\"><span class=\"sgb-heading__text\" style=\"color:#FFF\">functions have different types, the output array type must be explicitly specified in function \u2018cv::arithm_op\u2019<\/span><\/span><\/h2>\n\n\n\n<p>Gemini\u304b\u3089\u306e\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u6642\u3001\u4e0b\u8a18\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Traceback (most recent call last):\n&nbsp;File \"c:\\Users\\XXXXXXX\\OneDrive - bigriver\\\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\\VSC_python\\opencv6.py\", line 21, in &lt;module&gt;\n&nbsp;&nbsp;diff = cv2.absdiff(frame, bg)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^^^^^^^^^^^^^^^^^^^^^\ncv2.error: OpenCV(4.9.0) D:\\a\\opencv-python\\opencv-python\\opencv\\modules\\core\\src\\arithm.cpp:674: error: (-5:Bad argument) When the input arrays in add\/subtract\/multiply\/divide functions have different types, the output array type must be explicitly specified in function 'cv::arithm_op'<\/code><\/pre>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>\u201dthe output array type must be explicitly specified in function \u2018cv::arithm_op\u2019\u201d\u304c\u30dd\u30a4\u30f3\u30c8\u3068\u306a\u308a\u305d\u3046\u3067\u3059\u3002\u3000\u5f93\u6765\u3067\u3059\u3068 OpenCV \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u78ba\u8a8d\u3057\u305f\u308a arithm_op \u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u78ba\u8a8d\u3057\u305f\u308a\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u901a\u308a array type \u3092\u660e\u793a\u7684\u306b(explicitly)\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4eca\u56de\u306f Gemini \u306b\u805e\u3044\u3066\u307f\u307e\u3059\u3002\u3000\u4e0a\u8a18\u306e\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u3092\u5f35\u308a\u4ed8\u3051\u308b\u3060\u3051\u3067\u7b54\u3048\u306f\u8fd4\u3063\u3066\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-say\"><div class=\"sgb-block-say sgb-block-say--right\"><div class=\"sgb-block-say-avatar\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gravatar.com\/avatar\/?d=mm\" alt=\"Gemini\" width=\"80\" height=\"80\" style=\"border-color:#eaedf2\"><div class=\"sgb-block-say-avatar__name\">Gemini<\/div><\/div><div class=\"sgb-block-say-text\"><div class=\"sgb-block-say-text__content\" style=\"color:#333;border-color:#d5d5d5;background-color:whitesmoke\">\n<p>\u3053\u306e\u30a8\u30e9\u30fc\u306f\u3001<code>cv2.absdiff<\/code> \u95a2\u6570\u3067\u6bd4\u8f03\u3059\u308b2\u3064\u306e\u753b\u50cf (<code>frame<\/code> \u3068 <code>bg<\/code>) \u306e\u30c7\u30fc\u30bf\u578b\u304c\u7570\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u306b\u767a\u751f\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u5177\u4f53\u7684\u306b\u306f\u3001<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>frame<\/code>: Web\u30ab\u30e1\u30e9\u304b\u3089\u8aad\u307f\u8fbc\u307e\u308c\u305f\u753b\u50cf\u3067\u3001\u901a\u5e38\u306f <code>uint8<\/code> (\u7b26\u53f7\u306a\u30578\u30d3\u30c3\u30c8\u6574\u6570) \u578b\u3067\u3059\u3002<\/li>\n\n\n\n<li><code>bg<\/code>: \u6700\u521d\u306e\u30d5\u30ec\u30fc\u30e0\u3092\u30b3\u30d4\u30fc\u3057\u305f\u3082\u306e\u3067\u3001<code>float32<\/code> (\u5358\u7cbe\u5ea6\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570) \u578b\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>OpenCV\u306e\u7b97\u8853\u6f14\u7b97\u95a2\u6570 (<code>cv2.absdiff<\/code>, <code>cv2.add<\/code>, <code>cv2.subtract<\/code> \u306a\u3069) \u3067\u306f\u3001\u5165\u529b\u753b\u50cf\u306e\u30c7\u30fc\u30bf\u578b\u304c\u7570\u306a\u308b\u5834\u5408\u3001\u51fa\u529b\u753b\u50cf\u306e\u30c7\u30fc\u30bf\u578b\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\u89e3\u6c7a\u65b9\u6cd5<\/strong><\/p>\n\n\n\n<p><code>bg<\/code> \u306e\u30c7\u30fc\u30bf\u578b\u3092 <code>uint8<\/code> \u306b\u5909\u63db\u3059\u308b\u304b\u3001<code>cv2.absdiff<\/code> \u306e\u51fa\u529b\u30c7\u30fc\u30bf\u578b\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\u89e3\u6c7a\u65b9\u6cd5<\/strong><\/p>\n\n\n\n<p><code>bg<\/code> \u306e\u30c7\u30fc\u30bf\u578b\u3092 <code>uint8<\/code> \u306b\u5909\u63db\u3059\u308b\u304b\u3001<code>cv2.absdiff<\/code> \u306e\u51fa\u529b\u30c7\u30fc\u30bf\u578b\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\uff08\u7701\u7565\uff09<\/p>\n\n\n\n<p><\/p>\n<span class=\"sgb-block-say-text__before\" style=\"border-left-color:#d5d5d5\"><\/span><span class=\"sgb-block-say-text__after\" style=\"border-left-color:whitesmoke\"><\/span><\/div><\/div><\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>\u4eca\u56de\u306f\u7701\u7565\u3057\u307e\u3057\u305f\u304c\u4fee\u6b63\u6e08\u306e\u30b3\u30fc\u30c9\u5168\u4f53\u3082\u63d0\u793a\u3057\u3066\u304f\u308c\u307e\u3059\u3002\u3000\u3042\u3089\u3086\u308b\u72b6\u6cc1\u306b\u5bfe\u5fdc\u51fa\u6765\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u3068\u601d\u3044\u307e\u3059\u304c\u521d\u5fc3\u8005\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u5148\u751f\u3068\u3057\u3066 Gemini \u306f\u5fc5\u8981\u5341\u5206\u4ee5\u4e0a\u306e\u529b\u3092\u3082\u3063\u3066\u3044\u308b\u306e\u304b\u306a\u3068\u611f\u3058\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u6700\u7d42\u7684\u306b\u306f\u4ee5\u4e0b\u306e\u90e8\u5206\u3092\u4fee\u6b63\u3057\u30a8\u30e9\u30fc\u304c\u89e3\u6d88\u3057\u3066\u3044\u307e\u3059\u3002 \u201c.astype(np.float32)\u201d \u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u4fee\u6b63\u524d\nbg = frame.copy().astype(np.float32)\n\n\n#\u4fee\u6b63\u5f8c\nbg = frame.copy() # \u2190\u4fee\u6b63\u7b87\u6240<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>\u4ee5\u4e0a<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u73fe\u5728\u3001Python\u3092\u52c9\u5f37\u4e2d\u3067\u3059\u3002\u3000\u307e\u305f\u3001\u751f\u6210AI\u3082\u7fd2\u3046\u3088\u308a\u6163\u308c\u3088\u3068\u51fa\u6765\u308b\u9650\u308a\u4f7f\u3063\u3066\u7d4c\u9a13\u5024\u3092\u9ad8\u3081\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u3000\u3068\u3044\u3046\u3053\u3068\u3067 Gemini \u3092\u6559\u5e2b\u3068\u3057\u3066 Python \u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u5b66\u7fd2\u3057\u3066\u3044\u304f\u904e\u7a0b\u3092\u30d6\u30ed\u30b0\u306b\u6b8b\u3057\u3066 &#8230; <\/p>\n","protected":false},"author":1,"featured_media":18133,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63,62],"tags":[],"class_list":{"0":"post-18118","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-gemini","8":"category-generative-ai","9":"entry"},"views":3226,"_links":{"self":[{"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=\/wp\/v2\/posts\/18118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18118"}],"version-history":[{"count":10,"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=\/wp\/v2\/posts\/18118\/revisions"}],"predecessor-version":[{"id":18142,"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=\/wp\/v2\/posts\/18118\/revisions\/18142"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=\/wp\/v2\/media\/18133"}],"wp:attachment":[{"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bigriver.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}