錄制mp4 rospy

ros 預覽攝像頭

#!/usr/bin/env python
import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
import cv2# 初始化 bridge
bridge = CvBridge()def image_callback(msg):# 將ROS圖像消息轉換為OpenCV圖像cv_image = bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')# 顯示圖像cv2.imshow("Camera View", cv_image)cv2.waitKey(1)if __name__ == '__main__':rospy.init_node('camera_viewer', anonymous=True)# 訂閱圖像話題//rospy.Subscriber('/camera_l/color/image_raw', Image, image_callback)rospy.Subscriber('/camera_f/color/image_raw', Image, image_callback)rospy.spin()cv2.destroyAllWindows()

view2.py

#!/usr/bin/env python
import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
import cv2import imageio
import os
import sys
current_dir = os.path.dirname(os.path.abspath(__file__))
current_dir_p=os.path.dirname(current_dir)
os.chdir(current_dir)
print('current_dir',current_dir)
paths = [current_dir,current_dir_p]
paths.append(os.path.join(current_dir, 'src'))for path in paths:sys.path.insert(0, path)os.environ['PYTHONPATH'] = (os.environ.get('PYTHONPATH', '') + ':' + path).strip(':')import time
class Time_Str:def __init__(self):self.last_time = ''self.counter = 0def get_time_sec(self):now_time = time.strftime("%m%d_%H%M_%S")  # 當前時間(精確到秒)self.counter += 1if now_time != self.last_time:self.last_time = now_timeself.counter = 0return f"{now_time}_{self.counter}"def get_time_mm(self):now_time = time.strftime("%m%d_%H%M")  # 當前時間(精確到秒)self.counter += 1if now_time != self.last_time:self.last_time = now_timeself.counter = 0return f"{now_time}_{self.counter}"# 初始化 bridge
bridge = CvBridge()time_str=Time_Str()
imgs = []
fps = 30
index = 0
count = 0
strat_record = Falseos.makedirs('record',exist_ok=True)def image_callback(msg):global strat_record,count,imgs,index# 將ROS圖像消息轉換為OpenCV圖像cv_image = bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')img = cv2.cvtColor(cv_image, cv2.COLOR_BGR2RGB)if strat_record:imgs.append(img)index += 1if index % 300 == 299 and strat_record:count += 1save_video_path = f'record/{time_str.get_time_mm()}.mp4'imageio.mimsave(save_video_path, imgs, fps=fps, macro_block_size=None)imgs = []# 顯示圖像cv2.imshow("Camera View", cv_image)key = cv2.waitKey(1) & 0xFFif key == ord('q'):returnelif key == ord('s'):strat_record = True print("start_record")elif key == ord('e'):strat_record = Falsesave_video_path = f'record/{time_str.get_time_mm()}.mp4'imageio.mimsave(save_video_path, imgs, fps=fps, macro_block_size=None)imgs = []print("end_record")if __name__ == '__main__':rospy.init_node('camera_viewer', anonymous=True)# 訂閱圖像話題# rospy.Subscriber('/camera_r/color/image_raw', Image, image_callback)rospy.Subscriber('/camera_f/color/image_raw', Image, image_callback)rospy.spin()cv2.destroyAllWindows()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84611.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

超簡單部署離線語音合成TTS和語音識別

一篇文章講清楚超簡單 離線語音合成TTS 和 離線語音識別 系統部署 本文只介紹兩個輕量級的 語音合成用piper, 語音識別用vosk 部署簡單,效果勉強 語音合成 推薦 piper (其他沒用過) 安裝 linux下安裝 pip install piper-tts下載模型(63M) 中文模型下載 zh_CN-huayan-medi…

【算力網】

一、算力網-DNS 1.1、核心架構設計 1.1.1 設計框架 基于SRv6的智能DNS算法設計框架,結合IPv6路由可編程性、動態路徑優化及業務感知能力,實現網絡性能與用戶體驗的雙重提升:? ?SRv6-DNS融合架構? ?控制平面?: DNS服務器集…

shell分析nginx日志的指令

shell指令 查看有多少個IP訪問: awk {print $1} log_file|sort|uniq|wc -l 查看某一個頁面被訪問的次數: grep "/index.php" log_file | wc -l 查看每一個IP訪問了多少個頁面: awk {S[$1]} END {for (a in S) print a,S[a]} …

CMS軟件以及常見分類

CMS(Content Management System,內容管理系統)是 讓非技術人員也能便捷創建、編輯、管理網站內容的軟件 ,核心是 分離 “內容” 和 “頁面設計”(內容存在數據庫,頁面用模板生成),無…

Spring @Value 典型用法

典型用法 注入常量值 Value("Hello World") private String message;注入配置文件中的屬性值(如 application.properties) // 假設你有如下配置: app.nameMyApp app.version1.0.0// Java 類中使用: Value("${ap…

golang -- map實現原理

目錄 一、前言二、結構1. hmap(map) 結構2. bmap(buckets) 結構 三、哈希沖突四、負載因子五、哈希函數六、擴容增量擴容等量擴容 一、前言 在現代編程語言中,map 是一種非常重要的數據結構,廣泛用于存儲和快速查找鍵值對。Go 語言中的 map 是一種高效且…

Vue2 Extends 繼承機制與組件復用實踐

extends在某些場景下依然發揮作用,如Options API。子組件將繼承父組件的屬性、方法、生命周期鉤子函數以及混合(mixins)等選項。 注意:子組件可以覆蓋、或繼承擴展父組件的選項。子組件的生命周期鉤子和父組件的鉤子一起執行。 &l…

openSUSE MicroOS不可變Linux

openSUSE MicroOS不可Linux 1、openSUSE MicroOS簡介安裝時可能遇到的問題 2、ssh登錄3、openSUSE MicroOS配置國內軟件源4、系統變更openSUSE MicroOS安裝軟件包方法1:進入事務性更新模式安裝軟件包方法2:繼續快照id基于這個快照進行增量安裝方法3&…

建站SEO優化之站點地圖sitemap

文章目錄 編寫規范小型網站站點地圖小型網站規范示例站點地圖說明 大型網站站點地圖大型網站規范示例以豆瓣站點地圖為例 近期文章: 個人建站做SEO網站外鏈這一點需要注意,做錯了可能受到Google懲罰一文搞懂SEO優化之站點robots.txt網頁常見水印實現方式…

Java分層開發必知:PO、BO、DTO、VO、POJO概念詳解

目錄 引言一、核心概念與定義1、PO(Persistent Object,持久化對象)2、BO(Business Object,業務對象)3、DTO(Data Transfer Object,數據傳輸對象)4、VO(View O…

Linux下OLLAMA安裝卡住怎么辦?

網絡環境不理想,經常在官方的linux安裝腳本執行時卡住,其實主要是下載文件卡住,于是我想到了是否可以把其中下載的過程顯化、分步,這樣更可控,于是修改了官方的install.sh #!/bin/sh # This script installs Ollama o…

C++面試(5)-----刪除鏈表中指定值的節點

操作系統:ubuntu22.04 IDE:Visual Studio Code 編程語言:C11 算法描述 給定一個單向鏈表的頭節點 head 和一個特定值 val,要求編寫一個函數來刪除鏈表中所有值等于 val 的節點,并返回修改后的鏈表頭節點。 示例: 輸…

如何用AI賦能學習

由于博主是大學生,今天花費了大量的時間去進行期末的復習,不過從復習中得到了一些學習的靈感,即:如何用AI賦能學習 當我們需要掌握一門新的技能的時候,我們很容易的想到三種辦法:買書自己學,報…

【threejs】每天一個小案例講解:常見材質

代碼倉 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone,無需安裝依賴,直接liver-server運行/直接打開chapter01中的html文件 運行效果圖 知識要點 1. MeshBasicMaterial(基礎網格材質) ? 特…

springboot后端與鴻蒙的結合

軟件:鴻蒙devceo3.1,springboot項目采用IDEA 目的: 1、結合springboot后端與鴻蒙的結合運用。 2、Log日志查看console語句的信息。 3、引入 import http from ohos.net.http。 4、調用springboot后端提供的鏈接發送post 5、TextInput的…

minio集群通過mc mirror命令進行定時備份,支持X86和arm兩種架構

文章目錄 前言一、思路二、使用步驟1.下載mc二進制文件2.手動測試備份命令3.配置定時任務4.成功截圖 總結 前言 通過mc mirror命令對minio集群進行定時備份。 一、思路 通過mc mirror命令配合crond定時任務進行周期性的備份 二、使用步驟 1.下載mc二進制文件 wget https:…

三大能力升級,為老項目重構開辟新路徑

在軟件技術飛速迭代的今天,老項目重構是開發者們繞不開的難題。接口實現缺失、業務邏輯矛盾、架構規劃偏離等問題如同攔路虎,讓重構工作舉步維艱。而傳統的 AI 輔助方式,因未充分關聯項目實際情況,猶如 “空中造樓”,難…

AES加密

AES加密算法詳解 AES(Advanced Encryption Standard)是一種對稱密鑰分組加密算法,用于保護電子數據的安全性。其核心特點是通過相同的密鑰進行加密和解密,屬于對稱加密體系。。以下從核心特性、加密流程及安全性三方面展開說明&a…

關于聯詠(Novatek )自動曝光中Lv值的計算方式實現猜想

目錄 一、常見Lv對應的實際場景 二、常見光圈值 三、最小二乘法計算SV中的系數K

[docker]鏡像操作:關于docker pull、save、load一些疑惑解答

在使用 Docker 的過程中,鏡像管理是極其重要的一環。無論是拉取、保存還是加載鏡像,每一個步驟都可能遇到一些疑問或者誤區。 本文將結合實際案例,對常見的 Docker 鏡像操作問題進行系統性總結,幫你更好地理解 Docker 鏡像的工作機…