第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在沒有OpenCV的情況下通過ROS發(fā)布PIL鏡像二進(jìn)制文件?

如何在沒有OpenCV的情況下通過ROS發(fā)布PIL鏡像二進(jìn)制文件?

PHP
HUWWW 2023-11-09 14:54:45
我目前正在嘗試編寫一個(gè) ROS 發(fā)布者/訂閱者設(shè)置,該設(shè)置傳遞由 PIL 打開的圖像二進(jìn)制文件。由于操作限制,我希望不必使用 OpenCV,我想知道是否有辦法這樣做。這是我當(dāng)前的代碼:#!/usr/bin/env pythonimport rospyfrom PIL import Imagefrom sensor_msgs.msg import Image as sensorImagefrom rospy.numpy_msg import numpy_msgimport numpydef talker():    pub = rospy.Publisher('image_stream', numpy_msg(sensorImage), queue_size=10)    rospy.init_node('image_publisher', anonymous=False)    rate = rospy.Rate(0.5)    while not rospy.is_shutdown():        im = numpy.array(Image.open('test.jpg'))        pub.publish(im)        rate.sleep()if __name__ == '__main__'    try:        talker()    except ROSInterruptException:        pass在 pub.publish(im) 嘗試時(shí)拋出:TypeError: Invalid number of arguments, args should be ['header', 'height', 'width', 'encoding', 'is_bigendian', 'step', 'data'] args are (array([[[***array data here***]]], dtype=uint8),)如何將圖像轉(zhuǎn)換為正確的形式,或者是否有支持僅通過 ROS 連接發(fā)送原始二進(jìn)制文件的轉(zhuǎn)換方法/不同的消息類型?
查看完整描述

2 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

事實(shí)上:

#!/usr/bin/env python

import rospy

import urllib2? # for downloading an example image

from PIL import Image

from sensor_msgs.msg import Image as SensorImage

import numpy as np


if __name__ == '__main__':

? ? pub = rospy.Publisher('/image', SensorImage, queue_size=10)


? ? rospy.init_node('image_publisher')


? ? im = Image.open(urllib2.urlopen('https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png'))

? ? im = im.convert('RGB')


? ? msg = SensorImage()

? ? msg.header.stamp = rospy.Time.now()

? ? msg.height = im.height

? ? msg.width = im.width

? ? msg.encoding = "rgb8"

? ? msg.is_bigendian = False

? ? msg.step = 3 * im.width

? ? msg.data = np.array(im).tobytes()

? ? pub.publish(msg)


查看完整回答
反對 回復(fù) 2023-11-09
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

我對 ROS 一無所知,但我經(jīng)常使用?PIL,所以如果其他人知道得更好,請 ping 我,我會(huì)刪除這個(gè)“最佳猜測”答案。

所以,似乎你需要從 .因此,您需要:PIL Image

  • 'header',

  • '高度',

  • '寬度',

  • '編碼',

  • 'is_bigendian',

  • '步驟',

  • “數(shù)據(jù)”

因此,假設(shè)您這樣做:

im?=?Image.open('test.jpg')

您應(yīng)該能夠使用:

  • 你需要解決的事情

  • im.heightPIL Image

  • im.widthPIL Image

  • 可能const std::string RGB8 = "rgb8"

  • 可能無關(guān)緊要,因?yàn)閿?shù)據(jù)是 8 位的

  • 可能是因?yàn)樗敲肯袼?RGB 3 個(gè)字節(jié)im.width * 3

  • np.array(im).tobytes()

在任何人標(biāo)記這個(gè)答案之前,沒有人說答案必須是完整的——它們可以“希望有幫助”!

請注意,如果您的輸入圖像是PNG格式,則應(yīng)檢查,如果是(即調(diào)色板模式),請立即運(yùn)行:im.mode"P"

im?=?im.convert('RGB')

以確保它是 3 通道 RGB。

請注意,如果輸入圖像為 PNG 格式且包含 Alpha 通道,則應(yīng)將 to 和 set .encoding"rgba8"step = im.width * 4


查看完整回答
反對 回復(fù) 2023-11-09
  • 2 回答
  • 0 關(guān)注
  • 169 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)