国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【ROS】ROS 發(fā)布和訂閱壓縮圖像消息 CompressedImage

這篇具有很好參考價(jià)值的文章主要介紹了【ROS】ROS 發(fā)布和訂閱壓縮圖像消息 CompressedImage。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


使用 cv_bridge 發(fā)布/訂閱壓縮圖像

參考 cv_bridge 文檔

發(fā)送圖像

from sensor_msgs.msg import CompressedImage
from cv_bridge import CvBridge
# 創(chuàng)建 publisher
cimage_pub = rospy.Publisher("/image/compressed", CompressedImage, queue_size=1)
# 創(chuàng)建并發(fā)送壓縮圖像消息
compressed_msg = CvBridge().cv2_to_compressed_imgmsg(image, "jpg")
compressed_msg.header.stamp = rospy.Time.now()
cimage_pub.publish(compressed_msg)

其中 “jpg” 表示將圖像壓縮的目標(biāo)格式,還有很多其他參數(shù)可選,如下所示
但親測(cè) “jpg” 壓縮比最大,圖像傳輸占用的帶寬最少

bmp, dib
jpeg, jpg, jpe
jp2
png
pbm, pgm, ppm
sr, ras
tiff, tif

接收?qǐng)D像

from sensor_msgs.msg import CompressedImage
from cv_bridge import CvBridge
# 定義回調(diào)函數(shù)
def cvbridge_callback(self, data):
    image = CvBridge().compressed_imgmsg_to_cv2(data, "bgr8")
# 創(chuàng)建 subscriber
rospy.Subscriber("/image/compressed", CompressedImage, cvbridge_callback, queue_size=1)

其中 “bgr8” 表示將圖像解析為 “bgr8” 格式,也是 opencv 默認(rèn)的圖像格式

使用 opencv 手動(dòng)發(fā)布/訂閱

參考 rospy wiki 教程
參考 opencv 中 imencode 與 imdecode 文檔說(shuō)明

發(fā)送圖像

from sensor_msgs.msg import CompressedImage
import cv2
import numpy as np
# 創(chuàng)建 publisher
cimage_pub = rospy.Publisher("/image/compressed", CompressedImage, queue_size=1)
# 創(chuàng)建并發(fā)送壓縮圖像消息
compressed_msg = CompressedImage()
compressed_msg.header.stamp = rospy.Time.now()
compressed_msg.format = "jpg"
compressed_msg.data = np.array(cv2.imencode('.jpg', image)[1]).tobytes()
cimage_pub.publish(compressed_msg)

“jpg” 作用同上,需要手動(dòng)設(shè)置 compressed_msg.format 表示為壓縮格式(但親測(cè)不設(shè)置對(duì) rqt 顯示和解壓縮也沒(méi)啥影響)
此外,可以手動(dòng)調(diào)節(jié)壓縮圖像的相關(guān)參數(shù),如調(diào)整 jpg 圖像壓縮質(zhì)量為 5(默認(rèn)為 95)

# 創(chuàng)建并發(fā)送壓縮圖像消息
compressed_msg = CompressedImage()
compressed_msg.header.stamp = rospy.Time.now()
compressed_msg.format = "jpg"
compressed_msg.data = np.array(cv2.imencode('.jpg', image, [cv2.IMWRITE_JPEG_QUALITY, 5])[1]).tobytes()
cimage_pub.publish(compressed_msg)

接收?qǐng)D像

from sensor_msgs.msg import CompressedImage
import cv2
import numpy as np
# 定義回調(diào)函數(shù)
def cv2_callback(self, data):
    image = np.frombuffer(data.data, np.uint8)
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)
# 創(chuàng)建 subscriber
rospy.Subscriber("/image/compressed", CompressedImage, cv2_callback, queue_size=1)

使用 image_transport 將發(fā)送的圖像轉(zhuǎn)發(fā)為壓縮圖像

參考 image_transport wiki
如果不想寫程序?qū)D像進(jìn)行處理,可以使用 image_transport 包的命令行工具來(lái)將 Image 消息轉(zhuǎn)發(fā)為 CompressedImage 消息

rosrun image_transport republish raw in:=/image compressed out:=/image

該節(jié)點(diǎn)會(huì)自動(dòng)訂閱/image話題下的Image消息,并將CompressedImage格式的消息發(fā)送到/image/compressed話題下
壓縮的相關(guān)參數(shù)可以通過(guò) rqt 工具箱里的 Dynamic Reconfigure 工具箱進(jìn)行調(diào)整:

ros compressedimage,python,機(jī)器人

效果展示

ros compressedimage,python,機(jī)器人
如果 rqt 可視化過(guò)程中顯示錯(cuò)誤:Unable to load plugin for transport ‘cvbridge_compressed’
可參考 【ROS】rqt顯示壓縮圖像話題報(bào)錯(cuò):Unable to load plugin for transport ‘cvbridge_compressed’文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-853533.html

到了這里,關(guān)于【ROS】ROS 發(fā)布和訂閱壓縮圖像消息 CompressedImage的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ros中常見問(wèn)題處理:延遲問(wèn)題解決方法、訂閱的數(shù)據(jù)感覺(jué)比發(fā)布的數(shù)據(jù)要多;如果沒(méi)有正在接收消息,那么狀態(tài)如何獲???

    在ROS中,消息的發(fā)布和訂閱是異步的,也就是說(shuō),當(dāng)你調(diào)用pub.publish(output_msg)發(fā)布消息時(shí),該函數(shù)會(huì)立即返回,并不會(huì)等待所有訂閱者接收消息。因此,如果你的程序出現(xiàn)延遲,可能是由于某些原因?qū)е孪⒈欢氯騺G失。 以下是幾種可能導(dǎo)致延遲的原因和解決方法: 1,消

    2024年02月06日
    瀏覽(22)
  • ORB_SLAM3配置及修改——將圖像、點(diǎn)云用ROS消息發(fā)布(基于無(wú)人機(jī)仿真)

    ORB_SLAM3配置及修改——將圖像、點(diǎn)云用ROS消息發(fā)布(基于無(wú)人機(jī)仿真)

    ????????本文有點(diǎn)長(zhǎng),可以根據(jù)目錄跳轉(zhuǎn)到想看的部分。因?yàn)榉抡婧蛻?yīng)用環(huán)境不同,可能例程的運(yùn)行方式(輸入話題等)有所不同,但第三部分有關(guān)ORB_SLAM3相機(jī)仿真標(biāo)定、第四部分有關(guān)ORB_SLAM3源碼修改的部分是通用的。 目錄 一、仿真環(huán)境配置 1.雙系統(tǒng)安裝 ① 工具準(zhǔn)備 ②

    2024年04月10日
    瀏覽(167)
  • ROS學(xué)習(xí)筆記(二):ROS話題的發(fā)布與訂閱

    第十講 ?發(fā)布者Publisher的編程 1. 創(chuàng)建功能包 learning_topic? $ cd ~/test1/src? $ catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs turtlesim 2.執(zhí)行C++文件程序如下:放在創(chuàng)建的功能包的/learning_topic/src里 程序名為velocity_publisher.cpp 2.如何實(shí)現(xiàn)一個(gè)發(fā)布者(發(fā)布到ros自帶節(jié)點(diǎn) ) (1)初

    2024年02月04日
    瀏覽(32)
  • ROS實(shí)現(xiàn)一個(gè)節(jié)點(diǎn)同時(shí)發(fā)布訂閱多個(gè)話題(C++版)

    ??如果想在一個(gè)節(jié)點(diǎn)同時(shí)發(fā)布訂閱多個(gè)話題就要使用到多線程機(jī)制,在C++中如何使用多線程,在C++中開多線程模板已經(jīng)有了介紹,就是下面這個(gè): ?? 但是有一點(diǎn)需要注意的是,創(chuàng)建節(jié)點(diǎn)的涉及到一個(gè)主線程,如果想同時(shí)發(fā)布訂閱是不能使用主線程的(也就是不能主線程發(fā)

    2024年02月11日
    瀏覽(26)
  • Vue消息訂閱與發(fā)布

    Vue消息訂閱與發(fā)布

    ? 引入第三方庫(kù) pubsub.js: Student.vue School.vue TodoList案例使用消息訂閱實(shí)現(xiàn)刪除功能: App.vue : MyItem.vue: ?

    2024年02月15日
    瀏覽(20)
  • Redis 消息隊(duì)列和發(fā)布訂閱

    Redis 消息隊(duì)列和發(fā)布訂閱

    采用redis 三種方案: ● 生產(chǎn)者消費(fèi)者:一個(gè)消息只能有一個(gè)消費(fèi)者 ● 發(fā)布者訂閱者:一個(gè)消息可以被多個(gè)消費(fèi)者收到 ● stream模式:實(shí)現(xiàn)隊(duì)列和廣播模式 Producer調(diào)用redis的lpush往特定key里放消息,Consumer調(diào)用brpop去不斷監(jiān)聽key。 1、利用redis的鏈表,存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)隊(duì)列模式

    2024年01月18日
    瀏覽(22)
  • Redis消息傳遞:發(fā)布訂閱模式詳解

    Redis消息傳遞:發(fā)布訂閱模式詳解

    目錄 1.Redis發(fā)布訂閱簡(jiǎn)介 2.發(fā)布/訂閱使用 ? ?2.1?基于頻道(Channel)的發(fā)布/訂閱 ? ?2.2?基于模式(pattern)的發(fā)布/訂閱 3.深入理解Redis的訂閱發(fā)布機(jī)制 ? ?3.1?基于頻道(Channel)的發(fā)布/訂閱如何實(shí)現(xiàn)的? ? ?3.2?基于模式(Pattern)的發(fā)布/訂閱如何實(shí)現(xiàn)的? ? ?3.3?SpringBoot結(jié)合Redis發(fā)布

    2024年02月12日
    瀏覽(19)
  • vue進(jìn)階-消息的訂閱與發(fā)布

    vue進(jìn)階-消息的訂閱與發(fā)布

    ??vue基礎(chǔ)學(xué)習(xí)-組件 介紹了嵌套組件間父子組件通過(guò) props 屬性進(jìn)行傳參。子組件傳遞數(shù)據(jù)給父組件通過(guò) $emit() 返回自定義事件,父組件調(diào)用自定義事件接收子組件返回參數(shù)。 ??vue進(jìn)階-vue-route 介紹了路由組件傳參,兩種方式: params傳參 和 query 傳參 。 本章介紹組件間通信:

    2024年02月16日
    瀏覽(22)
  • Redis實(shí)現(xiàn)消息的發(fā)布和訂閱

    4.1 發(fā)送消息 4.2 接收消息

    2024年02月13日
    瀏覽(20)
  • C# 簡(jiǎn)單模擬 程序內(nèi)部 消息訂閱發(fā)布功能

    C# 簡(jiǎn)單模擬 程序內(nèi)部 消息訂閱發(fā)布功能

    我想做個(gè)簡(jiǎn)單的消息發(fā)布訂閱功能,但是發(fā)現(xiàn)好像沒(méi)有現(xiàn)成的工具類。要么就是Mqtt這種消息訂閱發(fā)布。但是我只想程序內(nèi)部進(jìn)行消息訂閱發(fā)布,進(jìn)行程序的解耦。那沒(méi)辦法了,只能自己上了 在Utils 的MessageHelper 這里我用了元祖來(lái)進(jìn)行臨時(shí)變量的傳值。元祖如何使用請(qǐng)看我的另

    2024年02月14日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包