ROV采集与通信系统之上位机设计

本文详细介绍ROV水下机器人采集高清图像与传感器数据的通信系统设计,涵盖UDP数据接收、图像显示及传感器数据的可视化分析,使用Python与matplotlib实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

时间一晃,我已经是一名即将步入研三的老学长,趁着这个假期抓紧时间把毕业设计的大体框架完成,后续细节的优化工作再慢慢处理。毕设的课题是ROV采集与通信系统,简单来说就是ROV水下实时采集高清图像信息及各种传感器数据,通过光纤传输至水上经DDR3进行缓存,最后通过千兆以太网上传至上位机进行数据的可视化操作。整体的工作量相对来说还是比较大的,硬件部分设计会在之后的博客进行更新,今天主要来谈一下上位机设计,主要介绍udp数据的接收、图像数据的显示、传感器数据的可视化分析三部分。

UDP数据的接收

udp—–数据报文协议,是一个无连接的简单的面向数据报的运输层协议,UDP不提供可靠性,他只是将应用程序传送给IP层的数据报文发送出去,并不保证能否达到目的地。由于UDP在传输的过程中不需要和服务器建立链接。且没有超时重发的的机制。故而传输速率较快,非常适合作为图像传输的方式。
udp数据的接收部分代码相对固定化,下面直接上代码:

 def udp_connect(self):
 	 # 创建套接字
	 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
	 #local_addr = ('192.168.0.3', 8080)
	 # 绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配,下面是从pyqt5的文本框中获取ip地址 和端口号
	 local_addr = (str(self.ui.lineEdit_2.text()), int(self.ui.lineEdit.text()))
	 udp_socket.bind(local_addr)
	 #关闭套接字
	 udp_socket.close()

图像数据的显示

图像的显示此部分比较闹心,当时查阅资料并没有发现有关与RGB格式的图像数据流接收显示这部分内容,有的大多是服务器和客户端都采用Python实现,传输的视频流格式多是JPIE。由于传输数据是二进制流数据,所以客户端把需要传输的数据编码成二进制码流,服务器接收到再解码进行显示。
那么我的这个设计该怎么实现的图像显示呢???

  1. 像素点摆放
    按像素点顺序一个像素一个像素摆放,当一帧图像的像素全部摆放完成,那么这帧数据也就成功显示出来。首先进行测试的是RGB565格式的图像数据,一个udp数据包传输一行图像数据,开头两字节为图像的行号。代码如下所示:

    for y in range(480): 					# 接收一帧图像数据
        data, addr = udp_socket.recvfrom(1282) 
        data_list[y] = data
    # 创建一个三维数组,填充图像数据后准备成像    
    picture = np.zeros((480, 640, 3), dtype=np.uint8)
    
    for y in range(480):
    	linenumber = (data_list[y][0] << 8) + data_list[y][1]
            for x in range(640):
            	# 由于上传图像数据格式为RGB565,即两个字节表示一个像素值,所以需要进行通道分离,这里运用到RGB568——RGB888的方法:采用移位方式实现高位对齐;低位补零。
                picture [linenumber, x] = [((data_list[y][2*x+2])& 0xF8), ((((data_list[y][2*x+2])& 0x07) <<3) + (data_list[y][2*x+3]& 0xE0) >> 5)<<2, ((data_list[y][2*x+3])& 0x1F)<<3]         
    # 调用Image将数组转换为图像
    img = Image.fromarray(data5, 'RGB')
    # 显示图像
    img.imshow()  
    

    按像素点实现还有一种函数可采用,上代码:

    def draw_picture(self):
        self.image = QtGui.QImage()
        self.im = Image.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值