既然你熟悉了Socket编程,也可以另外再写一个类似的简易服务器客户端程序。树莓派仍然作为服务器,电脑仍然作为客户端。只不过现在是树莓派发送,电脑接收。这时的数据不再是控制指令,而是树莓派USB摄像头获得的图像数据。(通过Opencv和python-imaging库实现)这个程序可以与上一篇的程序同时运行,只需要用两个独立的端口就行。

程序的基本实现方式是通过opencv的库把摄像头获取到的每一幅图像转化为String,再利用python-imaging的压缩为jpeg格式,然后用socket发出去。电脑收到每一小段数据后再把每一段的String转为一桢图像,并显示在窗口中。(你所看到的视频,其实就是不停运动着的照片)。

如果熟悉Opencv的话,可以在这里对图像进行处理,比如用haarcascade做一下图像识别(人脸识别、人体识别),既可以在发送前,在树莓派上就处理图像,也可以发送后在电脑上进行处理。

由于本项目的最终要求是机器人要独立运行,因此建议大部分处理在树莓派上做,这样就要考虑性能问题。树莓派虽然能用haarcascade做人脸识别或者人体识别(上半身),但是性能还不够,能达到的帧率较低,所以最终还是采用了颜色识别。实际运行效果更流畅,这个后面会详细讲到。

运行在小车树莓派上的代码:

#!/usr/bin/python
import socket, time
import cv
import cv2
import Image, StringIO#capture = cv.CaptureFromCAM(0)
#cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, 320)
#cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, 240)
cap=cv2.VideoCapture(0)
ret=cap.set(3,320)
ret=cap.set(4,240)sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(("0.0.0.0", 9996))
sock.listen(2)dst, dst_addr = sock.accept()
print "Destination Connected by", dst_addrwhile True:#img = cv.QueryFrame(capture)ret, frame = cap.read()img=cv.fromarray(frame)pi = Image.fromstring("RGB", cv.GetSize(img), img.tostring())buf = StringIO.StringIO()pi.save(buf, format = "JPEG")jpeg = buf.getvalue()buf.close()transfer = jpeg.replace("\n", "\-n")#print len(transfer), transfer[-1]try:dst.sendall(transfer + "\n")time.sleep(0.04)except Exception as ex:dst, dst_addr = sock.accept()print "Destination Connected Again By", dst_addrexcept KeyboardInterrupt:print "Interrupted"breakdst.close()
sock.close()

运行在电脑上的代码:

#!/usr/bin/python
import cv2.cv as cv
import cv2
import socket, time, Image, StringIO
import numpy as np HOST, PORT = "10.0.1.13", 9996
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
f = sock.makefile()  cv.NamedWindow("camera_server")  while True:  msg = f.readline()  if not msg:  break jpeg = msg.replace("\-n", "\n")  buf = StringIO.StringIO(jpeg[0:-1])  buf.seek(0)  pi = Image.open(buf)  img = cv.CreateImageHeader((320, 240), cv.IPL_DEPTH_8U, 3)  cv.SetData(img, pi.tostring())  buf.close()  frame_cvmat=cv.GetMat(img)frame=np.asarray(frame_cvmat)cv2.imshow('frame',frame)if cv2.waitKey(1)&0xFF ==ord('q'):break#cv.ShowImage("camera_server", img)  #if cv.WaitKey(10) == 27:  #    break  sock.close()
cv.DestroyAllWindows()  

自动跟随机器人教程(五)软件部分 树莓派+电脑 摄像头图像回传相关推荐

  1. 自动跟随机器人教程(六)软件部分 树莓派 声源定位

    接下来的部分比较有趣,是本项目提出的机器人和市场上大多数机器人不同的地方.它除了能够通过摄像头图像和超声波数据来做一些自动控制外,还使用了Respeaker的4通道麦克风阵列.使用这个模块的好处是,在 ...

  2. 自动跟随机器人教程(四)软件部分 树莓派+电脑 控制小车移动

    接下来可以说是本教程的核心内容了,不可能在一篇文章中讲完,首先讲一个比较初级的程序.树莓派可以接收同一个局域网上电脑的连接,并且电脑键盘上发出的前后左右的控制信号通过网络发向树莓派后,树莓派再经过串口 ...

  3. 自动跟随机器人:一种简易的自动跟随方案,自动跟随小车、自动跟随平衡小车、STM32、基于超声波的自动跟随小车

    目的:一种廉价的跟随方案,让大家都能够参与进来,技术难度不大,一些人也能够DIY一些属于自己的"跟随"机器人!并不是要做工业应用什么的.只是做出来玩玩~ / 1 / 介绍 先看视频 ...

  4. 树莓派自动跟随机器人

    YetiBorg v2 - 示例 - 跟我来 由ModMyPi LTD 在Build,YetiBorg撰写 - 建 于2017年10月25日. 与你的YetiBorg v2一起追逐 机器人可以制作非常 ...

  5. 【论文】ROS系统的无人小车自动跟随方案研究

    这个专栏是专注于入了职场之后,对写论文能力要求和技巧经验的一些总结. 在职场不同于在学习等科研院所,更多要求的是发出论文,而不是发高水平论文. 文章列表: [程序员读论文]为什么要读论文? [程序员读 ...

  6. ccd视觉定位教程_什么是CCD视觉定位自动焊锡机器人?

    全方位CCD视觉定位自动焊锡机器人,可迅速自动找到焊点,节省单点定位编程时间. 全景视觉焊锡机系统,可监控整个焊接过程. 支持三色光源自动调节,能够满足各种类型PCB板焊接. 激光光斑大小可自动调节, ...

  7. 一款可以适应于拼多多淘宝等店铺虚拟商品自动核销百度网盘自动发货机器人软件助手

    前言: 看到很多开虚拟店的小伙伴找不到合适的网盘自动发货机器人软件助手,我也开发了一款,功能很多,先截个图: 1.可以对好友增加\删除\发送消息等操作. 2.可以对群组增加成员\删除成员\发送消息\创 ...

  8. 【STM32】标准库与HAL库对照学习教程十三--软件IIC控制AT24C02

    [STM32]标准库与HAL库对照学习教程十三--软件IIC控制AT24C02 一.前言 二.准备工作 三.AT24C02(EEPROM)介绍 1.AT24C02简介 2.引脚功能 3.设备地址 四. ...

  9. 五.软件相关(各种各样的手机和电脑软件, 急速提升你使用手机和电脑的效率, 大大方便你的生活)

    本文是众多使用技巧中其中的一篇, 全部使用技巧点击链接查看, , 或直接查看本专栏其他文章, 保证你收获满满 我主页中的思维导图中内容大多从我的笔记中整理而来,相应技巧可在笔记中查找原题, 有兴趣的可 ...

最新文章

  1. 模糊搜索时搜索结果中关键词变为不同颜色
  2. JavaScript易错知识点整理
  3. C#黔驴技巧之去重(Distinct)
  4. mysql集群重启offline_mysql集群搭建问题及解决方法集锦
  5. 智联招聘简历如何导出html,如何将拉勾网(智联招聘)的预览简历导出来
  6. 【文章】你和自己聊过吗?你很重要
  7. 【算法分析与设计】DFS与BFS的区别
  8. sql去重、or、in、and、groupby的使用
  9. 安卓真机测试遇到的检测不到安卓设备的问题
  10. A/B Testing
  11. 国开计算机网络作业,国家开放大学 计算机网络 形考作业1 答案
  12. pyhanlp常用功能简单总结
  13. python scapy抓取http报文内容
  14. 关于阿里云ACP认证的那些事儿
  15. 【POJ P3311】【状压DP】Hie with the Pie
  16. 经典SQL语句大全:http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html
  17. Actor模型和CSP模型的区别
  18. Kali Linux 安装搜狗拼音输入法
  19. c语言报错(二)expected initializer before “int“
  20. 神经网络和深度神经网络,深度神经网络类型包括

热门文章

  1. 数据分析里面的 aha 时刻
  2. 数据仓库主题一(宽表模型设计)
  3. 【Unity3d游戏开发】Unity3D中常用的物理学公式
  4. AI算法课堂笔记20210913
  5. 【μC/OS-Ⅲ】μC/OS-Ⅲ OSTaskCreate()函数
  6. 基于scrapy的分布式爬虫抓取新浪微博个人信息和微博内容存入MySQL
  7. AIGC的未来展望和发展方向
  8. 【农业发展】趋势与历史机遇
  9. c语言装逼编程,教你用C语言写一个好玩的万年历,必备的装逼神器
  10. 一大波特斯拉人形机器人上线,马斯克震撼官宣2款新车!