{"id":6248,"date":"2025-02-03T13:22:58","date_gmt":"2025-02-03T04:22:58","guid":{"rendered":"https:\/\/blog.smartlight.co.jp\/?p=6248"},"modified":"2025-02-03T13:22:59","modified_gmt":"2025-02-03T04:22:59","slug":"python%e3%81%a7%e3%82%ab%e3%83%a1%e3%83%a9%e6%98%a0%e5%83%8f%e3%82%92%e5%8f%96%e5%be%97%e3%81%97%e9%aa%a8%e6%a0%bc%e6%8e%a8%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f","status":"publish","type":"post","link":"https:\/\/blog.smartlight.co.jp\/?p=6248","title":{"rendered":"Python\u3067\u30ab\u30e1\u30e9\u6620\u50cf\u3092\u53d6\u5f97\u3057\u9aa8\u683c\u63a8\u5b9a\u3057\u3066\u307f\u305f"},"content":{"rendered":"\n<p>Pythonde\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u308a\u3001\u53d6\u5f97\u3057\u305f\u30ab\u30e1\u30e9\u6620\u50cf\u3067\u9aa8\u683c\u63a8\u5b9a\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Python\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u6e96\u5099<\/h2>\n\n\n\n<p>\u4eca\u56de\u306f\u3001\u300cVisual Studio Code\u300d\u3092\u4f7f\u3063\u3066Python\u3092\u52d5\u304b\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"523\" height=\"255\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-1.png\" alt=\"\" class=\"wp-image-6250\"\/><\/figure>\n\n\n\n<p>PC\u306b\u5165\u3063\u3066\u3044\u306a\u3044\u65b9\u306f\u3001\u4e0b\u8a18URL\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/code.visualstudio.com\">https:\/\/code.visualstudio.com<\/a><\/p>\n\n\n\n<p>\u307e\u305a\u3001\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u2015\u304b\u3089OS\u5185\u306b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"541\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_37_54-OS-C_-\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc-1024x541.png\" alt=\"\" class=\"wp-image-6251\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_37_54-OS-C_-\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc-1024x541.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_37_54-OS-C_-\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc-300x159.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_37_54-OS-C_-\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc-768x406.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_37_54-OS-C_-\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc.png 1510w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_37_54-OS-C_-\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc-1024x541.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Visual Studio Code\u3092\u958b\u304d\u3001\u5148\u307b\u3069\u4f5c\u3063\u305f\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"550\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_38_54--1024x550.png\" alt=\"\" class=\"wp-image-6252\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_38_54--1024x550.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_38_54--300x161.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_38_54--768x413.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_38_54--1536x826.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_38_54-.png 1920w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_38_54--1024x550.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"749\" height=\"473\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_39_12-\u3088\u3046\u3053\u305d-test-Visual-Studio-Code.png\" alt=\"\" class=\"wp-image-6253\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_39_25--1024x551.png\" alt=\"\" class=\"wp-image-6254\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_39_25--1024x551.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_39_25--300x161.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_39_25--768x413.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_39_25--1536x826.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_39_25-.png 1920w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_39_25--1024x551.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u3082\u3057\u304b\u3057\u305f\u3089\u3001\u4fe1\u983c\u3057\u307e\u3059\u304b\uff1f\u306a\u3069\u304c\u51fa\u3066\u304f\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u3053\u3061\u3089\u306f\u4fe1\u983c\u3059\u308b\u3001\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br>\u6b21\u306b\u5de6\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u540d\u30ab\u30fc\u30bd\u30eb\u3092\u5408\u308f\u305b\u308b\u3068\u3001\u30a2\u30a4\u30b3\u30f3\u304c\u51fa\u3066\u304d\u307e\u3059\u306e\u3067\u3001\u3053\u3053\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"553\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_40_53--1024x553.png\" alt=\"\" class=\"wp-image-6255\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_40_53--1024x553.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_40_53--300x162.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_40_53--768x414.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_40_53--1536x829.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_40_53-.png 1920w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_40_53--1024x553.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u540d\u306f\u4f55\u3067\u3082\u3044\u3044\u3067\u3059\u304c\u3001\u62e1\u5f35\u5b50\u306f\u300c.py\u300d\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"919\" height=\"542\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-2.png\" alt=\"\" class=\"wp-image-6256\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-2.png 919w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-2-300x177.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-2-768x453.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-2.png 856w\" sizes=\"auto, (max-width: 919px) 100vw, 919px\" \/><\/figure>\n\n\n\n<p>\u53f3\u4e0a\u306e\u5206\u5272\u30de\u30fc\u30af\u304b\u3089\u3001\u4e0b\u306e\u5206\u5272\u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"549\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_21--1024x549.png\" alt=\"\" class=\"wp-image-6257\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_21--1024x549.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_21--300x161.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_21--768x412.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_21--1536x824.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_21-.png 1920w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_21--1024x549.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"550\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_40--1024x550.png\" alt=\"\" class=\"wp-image-6258\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_40--1024x550.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_40--300x161.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_40--768x413.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_40--1536x826.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_40-.png 1920w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-12_45_40--1024x550.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u3053\u3053\u304b\u3089Python\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Python\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h2>\n\n\n\n<p>\u4e0b\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u304b\u3089\u3001\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">python -m venv venv\n.\/venv\/Scripts\/Activate<\/code><\/span><\/pre>\n\n\n<p>\u3053\u3061\u3089\u3067\u4eee\u60f3\u74b0\u5883\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<br>\u6b21\u306b\u3001\u3053\u306e\u4eee\u60f3\u74b0\u5883\u5185\u306b\u30e2\u30c7\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">pip install opencv-python numpy\npip install torch torchvision yolov5<\/code><\/span><\/pre>\n\n\n<p>\u3053\u3053\u307e\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3057\u305f\u3089\u3001\u307e\u305a\u306f\u30ab\u30e1\u30e9\u6620\u50cf\u304c\u53d6\u5f97\u3067\u304d\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">import cv2\n \ncap = cv2.VideoCapture(<span class=\"hljs-number\">0<\/span>)  <span class=\"hljs-comment\"># USB\u30ab\u30e1\u30e9\u3092\u9078\u629e<\/span>\n<span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\n    ret, frame = cap.read()\n    <span class=\"hljs-keyword\">if<\/span> not ret:\n        <span class=\"hljs-keyword\">break<\/span>\n    cv2.imshow(<span class=\"hljs-string\">'Camera'<\/span>, frame)\n    <span class=\"hljs-keyword\">if<\/span> cv2.waitKey(<span class=\"hljs-number\">1<\/span>) &amp; <span class=\"hljs-number\">0xFF<\/span> == ord(<span class=\"hljs-string\">'q'<\/span>):  <span class=\"hljs-comment\"># 'q'\u3067\u7d42\u4e86<\/span>\n        <span class=\"hljs-keyword\">break<\/span>\ncap.release()\ncv2.destroyAllWindows()<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u3053\u3061\u3089\u306e\u30b3\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u3001\u4fdd\u5b58\u3057\u307e\u3059\u3002<br>\u4e0b\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u304b\u3089<br>python .\/\u30d5\u30a1\u30a4\u30eb\u540d.py<br>\u3067\u30ab\u30e1\u30e9\u3092\u8d77\u52d5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"552\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-3-1024x552.png\" alt=\"\" class=\"wp-image-6259\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-3-1024x552.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-3-300x162.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-3-768x414.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-3-1536x828.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-3.png 1919w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-3-1024x552.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u9aa8\u683c\u63a8\u5b9a\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h2>\n\n\n\n<p>\u30ab\u30e1\u30e9\u306e\u8d77\u52d5\u304c\u78ba\u8a8d\u51fa\u6765\u305f\u3089\u3001\u9aa8\u683c\u3092\u5224\u5b9a\u3059\u308b\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">pip install opencv-python mediapipe numpy matplotlib<\/code><\/span><\/pre>\n\n\n<p>\u3053\u3061\u3089\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001RTSP\u3067\u30ab\u30e1\u30e9\u6620\u50cf\u3092\u8aad\u307f\u53d6\u308a\u307e\u3059\u3002<br>\u65b0\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u306b\u4e0b\u8a18\u3092\u633f\u5165\u3057\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">import cv2\nimport mediapipe <span class=\"hljs-keyword\">as<\/span> mp\n \n<span class=\"hljs-comment\"># MediaPipe Pose\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7<\/span>\nmp_pose = mp.solutions.pose\npose = mp_pose.Pose()\nmp_draw = mp.solutions.drawing_utils\n \n<span class=\"hljs-comment\"># RTSP\u30b9\u30c8\u30ea\u30fc\u30e0\u306eURL<\/span>\nrtsp_url = <span class=\"hljs-string\">\"rtsp:\/\/username:password@ip_address:port\/stream1\"<\/span>\n<span class=\"hljs-comment\"># WIDTH = 640<\/span>\n<span class=\"hljs-comment\"># HEIGHT = 480<\/span>\n\n<span class=\"hljs-comment\"># RTSP\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u30ad\u30e3\u30d7\u30c1\u30e3<\/span>\ncap = cv2.VideoCapture(rtsp_url)\n \n<span class=\"hljs-keyword\">if<\/span> not cap.isOpened():\n    <span class=\"hljs-keyword\">print<\/span>(<span class=\"hljs-string\">\"Error: Could not open RTSP stream.\"<\/span>)\n    <span class=\"hljs-keyword\">exit<\/span>()\n\n    <span class=\"hljs-comment\"># cap.set(cv2.CAP_PROP_FRAME_WIDTH, WIDTH)<\/span>\n    <span class=\"hljs-comment\"># cap.set(cv2.CAP_PROP_FRAME_HEIGHT, HEIGHT)<\/span>\n \n<span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\n    ret, frame = cap.read()\n    <span class=\"hljs-keyword\">if<\/span> not ret:\n        <span class=\"hljs-keyword\">print<\/span>(<span class=\"hljs-string\">\"Error: Failed to read frame from RTSP stream.\"<\/span>)\n        <span class=\"hljs-keyword\">break<\/span>\n\n    <span class=\"hljs-comment\"># frame = cv2.resize(frame, (WIDTH, HEIGHT))<\/span>\n \n    <span class=\"hljs-comment\"># OpenCV\u306fBGR\u3001MediaPipe\u306fRGB\u306e\u305f\u3081\u5909\u63db<\/span>\n    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)\n     \n    <span class=\"hljs-comment\"># \u9aa8\u683c\u63a8\u5b9a<\/span>\n    result = pose.process(rgb_frame)\n \n    <span class=\"hljs-comment\"># \u7d50\u679c\u306e\u63cf\u753b<\/span>\n    <span class=\"hljs-keyword\">if<\/span> result.pose_landmarks:\n        mp_draw.draw_landmarks(frame, result.pose_landmarks, mp_pose.POSE_CONNECTIONS)\n \n        <span class=\"hljs-comment\"># \u53f3\u624b\u9996\u306e\u5ea7\u6a19\u3092\u53d6\u5f97\uff08MediaPipe\u306e\u30e9\u30f3\u30c9\u30de\u30fc\u30af\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 16\uff09<\/span>\n        right_wrist = result.pose_landmarks.landmark&#91;mp_pose.PoseLandmark.RIGHT_WRIST]\n        nose = result.pose_landmarks.landmark&#91;mp_pose.PoseLandmark.NOSE]  <span class=\"hljs-comment\"># \u9854\u306e\u4f4d\u7f6e\u3092\u53d6\u5f97<\/span>\n        h, w, _ = frame.shape  <span class=\"hljs-comment\"># \u30d5\u30ec\u30fc\u30e0\u306e\u30b5\u30a4\u30ba\u53d6\u5f97<\/span>\n        x, y = int(right_wrist.x * w), int(right_wrist.y * h)  <span class=\"hljs-comment\"># \u753b\u50cf\u5ea7\u6a19\u306b\u5909\u63db<\/span>\n        nose_x, nose_y = int(nose.x * w), int(nose.y * h)  <span class=\"hljs-comment\"># \u9854\u306e\u4e0a\u306b\u8868\u793a\u3059\u308b\u305f\u3081\u306e\u5ea7\u6a19\u53d6\u5f97<\/span>\n \n        <span class=\"hljs-comment\"># \u5ea7\u6a19\u3092\u9854\u306e\u4e0a\u306b\u8868\u793a<\/span>\n        cv2.putText(frame, f<span class=\"hljs-string\">'Right Wrist: ({x}, {y})'<\/span>, (nose_x, max(nose_y - <span class=\"hljs-number\">30<\/span>, <span class=\"hljs-number\">30<\/span>)),\n                    cv2.FONT_HERSHEY_SIMPLEX, <span class=\"hljs-number\">1<\/span>, (<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">255<\/span>, <span class=\"hljs-number\">0<\/span>), <span class=\"hljs-number\">2<\/span>, cv2.LINE_AA)\n \n    cv2.imshow(<span class=\"hljs-string\">'Pose Estimation'<\/span>, frame)\n \n    <span class=\"hljs-keyword\">if<\/span> cv2.waitKey(<span class=\"hljs-number\">1<\/span>) &amp; <span class=\"hljs-number\">0xFF<\/span> == ord(<span class=\"hljs-string\">'q'<\/span>):\n        <span class=\"hljs-keyword\">break<\/span>\n \ncap.release()\ncv2.destroyAllWindows()<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u3053\u3061\u3089\u3092\u633f\u5165\u3057\u305f\u3089\u3001RTSP\u306e\u90e8\u5206\u3092\u81ea\u8eab\u306e\u8aad\u307f\u8fbc\u307f\u305f\u3044\u30ab\u30e1\u30e9\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002<br>PC\u30ab\u30e1\u30e9\u3067\u884c\u3046\u5834\u5408\u306f\u4e0b\u8a18\u3092\u633f\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">import cv2\nimport mediapipe <span class=\"hljs-keyword\">as<\/span> mp\n \n<span class=\"hljs-comment\"># MediaPipe Pose\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7<\/span>\nmp_pose = mp.solutions.pose\npose = mp_pose.Pose()\nmp_draw = mp.solutions.drawing_utils\n \n<span class=\"hljs-comment\"># RTSP\u30b9\u30c8\u30ea\u30fc\u30e0\u306eURL<\/span>\nrtsp_url = <span class=\"hljs-string\">\"rtsp:\/\/admin:SmartLight197@192.168.1.102:554\/stream1\"<\/span>\n<span class=\"hljs-comment\"># WIDTH = 640<\/span>\n<span class=\"hljs-comment\"># HEIGHT = 480<\/span>\n\n<span class=\"hljs-comment\"># RTSP\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u30ad\u30e3\u30d7\u30c1\u30e3<\/span>\ncap = cv2.VideoCapture(rtsp_url)\n \n<span class=\"hljs-keyword\">if<\/span> not cap.isOpened():\n    <span class=\"hljs-keyword\">print<\/span>(<span class=\"hljs-string\">\"Error: Could not open RTSP stream.\"<\/span>)\n    <span class=\"hljs-keyword\">exit<\/span>()\n\n    <span class=\"hljs-comment\"># cap.set(cv2.CAP_PROP_FRAME_WIDTH, WIDTH)<\/span>\n    <span class=\"hljs-comment\"># cap.set(cv2.CAP_PROP_FRAME_HEIGHT, HEIGHT)<\/span>\n \n<span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-keyword\">True<\/span>:\n    ret, frame = cap.read()\n    <span class=\"hljs-keyword\">if<\/span> not ret:\n        <span class=\"hljs-keyword\">print<\/span>(<span class=\"hljs-string\">\"Error: Failed to read frame from RTSP stream.\"<\/span>)\n        <span class=\"hljs-keyword\">break<\/span>\n\n    <span class=\"hljs-comment\"># frame = cv2.resize(frame, (WIDTH, HEIGHT))<\/span>\n \n    <span class=\"hljs-comment\"># OpenCV\u306fBGR\u3001MediaPipe\u306fRGB\u306e\u305f\u3081\u5909\u63db<\/span>\n    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)\n     \n    <span class=\"hljs-comment\"># \u9aa8\u683c\u63a8\u5b9a<\/span>\n    result = pose.process(rgb_frame)\n \n    <span class=\"hljs-comment\"># \u7d50\u679c\u306e\u63cf\u753b<\/span>\n    <span class=\"hljs-keyword\">if<\/span> result.pose_landmarks:\n        mp_draw.draw_landmarks(frame, result.pose_landmarks, mp_pose.POSE_CONNECTIONS)\n \n        <span class=\"hljs-comment\"># \u53f3\u624b\u9996\u306e\u5ea7\u6a19\u3092\u53d6\u5f97\uff08MediaPipe\u306e\u30e9\u30f3\u30c9\u30de\u30fc\u30af\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 16\uff09<\/span>\n        right_wrist = result.pose_landmarks.landmark&#91;mp_pose.PoseLandmark.RIGHT_WRIST]\n        nose = result.pose_landmarks.landmark&#91;mp_pose.PoseLandmark.NOSE]  <span class=\"hljs-comment\"># \u9854\u306e\u4f4d\u7f6e\u3092\u53d6\u5f97<\/span>\n        h, w, _ = frame.shape  <span class=\"hljs-comment\"># \u30d5\u30ec\u30fc\u30e0\u306e\u30b5\u30a4\u30ba\u53d6\u5f97<\/span>\n        x, y = int(right_wrist.x * w), int(right_wrist.y * h)  <span class=\"hljs-comment\"># \u753b\u50cf\u5ea7\u6a19\u306b\u5909\u63db<\/span>\n        nose_x, nose_y = int(nose.x * w), int(nose.y * h)  <span class=\"hljs-comment\"># \u9854\u306e\u4e0a\u306b\u8868\u793a\u3059\u308b\u305f\u3081\u306e\u5ea7\u6a19\u53d6\u5f97<\/span>\n \n        <span class=\"hljs-comment\"># \u5ea7\u6a19\u3092\u9854\u306e\u4e0a\u306b\u8868\u793a<\/span>\n        cv2.putText(frame, f<span class=\"hljs-string\">'Right Wrist: ({x}, {y})'<\/span>, (nose_x, max(nose_y - <span class=\"hljs-number\">30<\/span>, <span class=\"hljs-number\">30<\/span>)),\n                    cv2.FONT_HERSHEY_SIMPLEX, <span class=\"hljs-number\">1<\/span>, (<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">255<\/span>, <span class=\"hljs-number\">0<\/span>), <span class=\"hljs-number\">2<\/span>, cv2.LINE_AA)\n \n    cv2.imshow(<span class=\"hljs-string\">'Pose Estimation'<\/span>, frame)\n \n    <span class=\"hljs-keyword\">if<\/span> cv2.waitKey(<span class=\"hljs-number\">1<\/span>) &amp; <span class=\"hljs-number\">0xFF<\/span> == ord(<span class=\"hljs-string\">'q'<\/span>):\n        <span class=\"hljs-keyword\">break<\/span>\n \ncap.release()\ncv2.destroyAllWindows()<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u305d\u3046\u3057\u307e\u3057\u305f\u3089\u3001\u4e0b\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u304b\u3089<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"546\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-4-1024x546.png\" alt=\"\" class=\"wp-image-6260\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-4-1024x546.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-4-300x160.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-4-768x410.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-4-1536x820.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-4.png 1917w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/image-4-1024x546.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>python .\/\u30d5\u30a1\u30a4\u30eb\u540d.py<br>\u3092\u5b9f\u884c\u3059\u308b\u3068\u6620\u50cf\u304c\u6620\u308a\u3001\u9aa8\u683c\u306e\u5224\u5b9a\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-13_22_15--1024x551.png\" alt=\"\" class=\"wp-image-6261\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-13_22_15--1024x551.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-13_22_15--300x162.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-13_22_15--768x414.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-13_22_15--1536x827.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-13_22_15-.png 1920w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-13_22_15--1024x551.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Pythonde\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u308a\u3001\u53d6\u5f97\u3057\u305f\u30ab\u30e1\u30e9\u6620\u50cf\u3067\u9aa8\u683c\u63a8\u5b9a\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002 Python\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u6e96\u5099 \u4eca\u56de\u306f\u3001\u300cVisual Studio Code\u300d\u3092\u4f7f\u3063\u3066Python\u3092\u52d5\u304b\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002 <\/p>\n","protected":false},"author":6,"featured_media":6261,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jin_ogp_image_url":"","_jin_last_featured_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-6248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-intern"],"jetpack_featured_media_url":"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2025\/02\/2025-02-03-13_22_15-.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/6248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6248"}],"version-history":[{"count":1,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/6248\/revisions"}],"predecessor-version":[{"id":6262,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/6248\/revisions\/6262"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/media\/6261"}],"wp:attachment":[{"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}