树莓派可以做图像处理_树莓派做图像处理 - CSDN
  • 树莓派,想要进行图像处理,但网上的很多教程都用opencv,opencv在树莓派上安装很麻烦,那怎样进行图像处理呢? 代码如下: from picamera.array import PiRGBArray from picamera import PiCamera import time #...

    用树莓派,想要进行图像处理,但网上的很多教程都用opencv,opencv在树莓派上安装很麻烦,那怎样进行图像处理呢?
    代码如下:

    from picamera.array import PiRGBArray
    from picamera import PiCamera
    import time
    
    # 下面几行初始化,设置一下参数
    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.framerate = 32
    
    rawCapture = PiRGBArray(camera, size=(640,480))
    
    # 关键用capture_continuous()函数进行读取视频,然后 array 去除视频
    # image是numpy数组,就可以进行相关处理了
    
    for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port$
        image = frame.array
        print(image.shape)
        rawCapture.truncate(0)
    
    展开全文
  • 上周 TensorFlow 1.0 的发布使之成为最有前景的深度学习框架,也在中国 AI 社区中掀起了学习 TensorFlow 的热潮,不过光跑例子怎能脱颖而出?本文是数据科学公司(Silicon Valley Data Science)的数据工程师 Matt ...

    上周 TensorFlow 1.0 的发布使之成为最有前景的深度学习框架,也在中国 AI 社区中掀起了学习 TensorFlow 的热潮,不过光跑例子怎能脱颖而出?本文是数据科学公司(Silicon Valley Data Science)的数据工程师 Matt Rubashkin 的一篇实战派文章,介绍了他如何创造性的将深度学习与物联网结合起来解决一个实际问题的思路和过程,非常具有启发性。

    SVDS(Silicon Valley Data Science)曾使用过实时、公开的数据来优化对加州火车到达时间的预测。但是,加州火车的到站时间数据不可靠,因此难以准确预测。我们使用 Raspberry Pi 摄像头和 USB 麦克风,能够侦测到火车的经过及其速度和方向。当在 Mountain View 办公室里装配了一台新的 Raspberry Pi 时,我们遇到了一个棘手的问题:Pi 不单单侦测到了加州火车(true positive),也侦测到了太平洋联合货运的火车和 VTA 轻轨(false positive)。为了确保侦测到的是加州火车的延迟,我们不得不对不同的火车做个靠谱的分类。

    图片描述

    视频:https://youtu.be/n0lCPXzaxTg

    传统的背景图像分类技术是远远不够的,因为我们在整个加州火车系统的铁轨上——包括不同的距离,不同的方向,不同的高度——放满了 Raspberry Pi。而且我们的操作时间也很有限,没有足够的时间来为系统里每一个 RaspberryPi 手动选择模式和特征。

    用 TensorFlow 解围

    幸好是在2016年遇到这个图像分类问题,因为在这一年里很多深度学习相关的图像识别技术的代码被公开了。我们选择使用 Google 的 TensorFlow 卷积神经网络,因为它有简单易用的 Python 库和丰富的在线文档。我拜读过 Pete Warden 关于 TensorFlow 的博客——TensorFlow for Poets(https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0),这篇博客里介绍了如何在高性能的 Inception V3 模型上创建定制化图像分类器。而且,我可以用我的笔记本电脑来对这个新模型的增强版通宵进行训练。这样就不需要很贵的 GPU(显卡),也可以在未来对模型进行微调,非常有用。

    我是从 TensorFlow 教程页面中花的识别教程开始的。我使用命令行接口来分类数据集中的图片,也包括 Van Gough 的向日葵这样的定制图片。

    图片描述

    图像中的名称,从上到下依次雏菊,向日葵,蒲公英,郁金香,玫瑰。

    现在我有了用 TensorFlow 来创建图像分类器的经验,便希望建立一个稳健无偏的图像识别模型用来识别火车。虽然之前 Raspberry Pi 拍摄到的图片可以用于训练模型,但我还是选择了更大更多样的数据集。我也将小汽车和卡车包括进模型中,因为他们也可能在某些位置上经过 Raspberry Pi 的侦测点。为了得到这个汽车分类器的训练数据集,我用 Google 找了1000张图片,含:

    • 加州火车
    • 货运火车
    • 轻轨
    • 卡车
    • 小汽车

    测试及配置模型

    对模型训练了一个通宵,第二天一早,我回到办公桌来查看模型运行得怎么样。首先我测试了不包含在训练集里图片,并惊奇的发现,分类器似乎一直可以挑出正确的分类。这里面包括从 Google 上找到的训练集的图片,也包括从 Raspberry Pi 采集到的图片。

    图片描述

    图片中的名称,从上到下依次是:加州火车,运输火车,轻轨,汽车,卡车。

    我在 Raspberry Pi 上运行图片分类器,来保证这套设备用户是可以支付得起的。此外,由于不能保证网络连接的速度,我必须直接在设备上运行分类器以避免把图片发送到中心服务器所造成的延迟。

    Raspberry Pi3 马力(功率)充足,可以直接在设备上进行流处理,因此我们只需要用网络发送小容量的,处理过的数据流,并且这套设备也便宜。这个传感器整体的硬件成本是130美金,所有的代码都是用的开源库。我用 JupyterHub 对其进行了测试,以便控制多个位置上的 Raspberry Pi 设备。有了一个正常运行的车辆分类集,接下来我把模型加载到 Raspberry Pi 上,并在视听流架构下实现了它。

    图片描述

    为了能够在 Raspberry Pi 32Bit ARM芯片上编译,我使用的是来自SamAbraham 的 Pi-TensorFlow enthusiasts 小社区的指引(https://github.com/samjabrahams/tensorflow-on-raspberry-pi),同时也与 Pete Warden,Google 的 TensorFlow 团队进行了沟通。

    解决 TensorFlow 在 Raspberry Pi 上出现的问题

    虽然有好的文档记录如何在 Android 和其他小型计算设备上安装 TensorFlow,但大多数的例子都是单张图片识别或批处理,而非流媒体图片识别。在Pi上单张图片可以简单稳健地给出分数,如下面这个成功的分类所示:

    图片描述

    但是,把85MB的模型加载到内存里需要太长的时间了,因此需要把分类器图表加载到内存里。分类器图表加载到内存之后,Raspberry Pi 拥有总计1G的内存,在我们定制的火车侦测 Python 应用中,有足够的计算资源来处理连续运行的摄像头和麦克风。

    图片描述

    即便如此,用 TensorFlow 分析 PiCamera 拍摄到的每一张图片也是不可行的,因为这样 CPU 的使用率最终将达到100%,导致 Raspberry Pi 系统过热,因此只有运动物体的图片传送给了 Pi 上的图片分类器,并用 TensorFlow 识别不同类型车辆。

    结论

    如果你对使用物联网设备做实时图像分类感兴趣,请从这里开始:

    图片描述


    原文: TensorFlow Image Recognition on a Raspberry Pi
    作者: Matthew Rubashkin,目前是数据科学公司 Silicon Valley Data Science 的数据工程师,并且是UC Berkeley 博士,拥有光学物理和生物医学研究的背景,并且在软件开发,数据库工程和数据分析方面拥有广泛的经验。
    本文来源AI100公众号(rgznai100),授权CSDN发布。
    欢迎人工智能领域技术投稿、约稿、给文章纠错,请发送邮件至heyc@csdn.net


    图片描述图片描述


    SDCC 2017·上海站将于2017年3月17-19日登陆申城,三大技术峰会24位嘉宾,汇聚国内一线的互联网公司大牛,畅谈运维、数据库和架构的热门话题和技术热点,精益运维发起人&优维科技CEO王津银、MongoDB 大中华区首席架构师唐建法和华为软件API开放平台架构师李林锋等亲临现场。3月5日前门票八折优惠中,5人以上团购立减400元,详情点击注册参会

    展开全文
  • 树莓派-图像处理Python

    2020-04-05 14:26:09
    树莓派中进行图像处理-Python 代码: import cv2 #导入opencv库 import numpy as np #… #读取一张图片,地址不能带中文 ‘’’ 第二个参数,取值可为: cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha...

    树莓派中进行图像处理-Python

    代码:

    import cv2 #导入opencv库
    import numpy as np
    #…
    #读取一张图片,地址不能带中文
    ‘’’
    第二个参数,取值可为:
    cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
    cv2.IMREAD_GRAYSCALE:读入灰度图片
    cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道(png有,jpg无)
    ‘’’
    imgviewx=cv2.imread(“ha.png”,cv2.IMREAD_COLOR)
    #…
    #获取图片信息
    #一个像素有三个通道,BGR
    print(imgviewx.shape)#输出:(1080, 1920, 3) 高像素,宽像素,通道数
    print(imgviewx.size)# 120000 总通道数=高* 宽* 通道数
    print(imgviewx.dtype)# uint8 3个通道每个通道占的位数(8位,一个字节)
    #print(imgviewx) #输出效果视乎与下条相同
    #print(np.array(imgviewx)) #输出每个像素点的参数( B , G , R )
    #获取图片 B G R 各均值, #(204.46305102040816, 208.50832244897958, 217.29540408163263, 0.0) ,红色部分最多
    print(cv2.mean(imgviewx))
    #获取方差,也会打印均值,可用均值方差都为零判断图片无效
    #print(cv2.meanStdDev(imgviewx))
    #…
    #图片处理
    #备份图片
    imgviewx1=imgviewx.copy()
    #均值模糊,主要用于去除图片噪点
    #读取图片并实现图片的模糊效果,参数:(读取图片,(X轴方向模糊,Y轴方向模糊))
    #imgviewx=cv2.blur(imgviewx,(5,5))
    #中值模糊,主要用于去除椒盐(烧烤配料)噪点
    #参数:(图片信息,模糊值)
    #imgviewx=cv2.medianBlur(imgviewx,9)
    #普通高斯模糊
    #参数:(图片信息,参数1,参数2)参数1和参数2只能设置一个
    #imgviewx=cv2.GaussianBlur(imgviewx,(0,0),1)
    #保留边缘(像素差),高斯模糊
    #参数(图片信息,0,要用怎样的方式(越大则越细),空间复杂度(越大越复杂))
    imgviewx=cv2.bilateralFilter(imgviewx,0,50,6)
    #美颜,美白效果valuex值越大越白
    #valuex=50;
    #imgviewx=cv2.bilateralFilter(cv2.imread(“imgx/zcy.jpg”),valuex,valuex * 2,valuex / 2)
    #对比度和亮度调整
    #duix=0.5 #对比度
    #lightx=0 #亮度
    #imgviewx=cv2.addWeighted(imgviewx,duix,np.zeros(imgviewx.shape,imgviewx.dtype),1-duix,lightx)
    #显示文字
    #参数:图像,文字内容, 坐标( x , y ) ,字体,大小,颜色( B , G ,R ),字体厚度
    #颜色值为0-255
    font = cv2.FONT_HERSHEY_SIMPLEX # 定义字体
    imgviewx = cv2.putText(imgviewx,“hhh”,(10, 50), font, 1.2, (0, 0, 255), 5)
    #像素取反
    #imgviewx=cv2.bitwise_not(imgviewx)
    #遍历图片,效率低,不推荐使用
    def xgtp():
    global imgviewx
    gx,kx,tx=imgviewx.shape#得到像素高度,像素宽度,通道数
    for g in range(0,gx):
    for k in range(0,kx): #这里得到的是每个像素点,每个点由RGB三色构成
    if(k>0 and k<100):
    imgviewx[g,k,0]=0 # B
    imgviewx[g,k,1]=255 # G
    imgviewx[g,k,2]=255 # R
    else:
    imgviewx[g, k, 0] = imgviewx[g, k, 0] #获取到原来的值
    imgviewx[g, k, 1] = imgviewx[g, k, 1]
    imgviewx[g, k, 2] = imgviewx[g, k, 2]
    #创建一个图形,使用np,所以效率高
    def cjtx():
    # 初始化像素点值全为0 (rgb都为零,所以是黑色)
    #参数:([高,宽,通道数],每个通道占的位数(一个字节))
    imgx=np.zeros([400,600,3],np.uint8)
    #初始化像素点值为全为1
    #imgx[110:130,50:70,2]表示一个范围:[高度起始点:高度结束点,宽度起始点:宽度结束点,哪个通道],起始点均以左上角
    #imgx[:,:,0]=np.ones([400,600],np.uint8)*255 #最终结果为第一个通道(B)全为255,所以是蓝色
    imgx[110:130,50:70,1]=np.ones([20,20],np.uint8)255
    cv2.imshow(“第二个图形窗口”,imgx)
    #图片区域处理
    def pictureArea():
    global imgviewx
    #得到截图
    areax=imgviewx[110:529,778:1200]
    #将图片由RGB(3通道)转换为灰度(2通道)
    areax=cv2.cvtColor(areax,cv2.COLOR_BGR2GRAY)
    #将图片有2通道还原成3通道,但色彩不能还原
    areax2=cv2.cvtColor(areax,cv2.COLOR_GRAY2RGB)
    #处理后的区域写到原图上
    imgviewx[110:529, 778:1200]=areax2
    #显示截图
    cv2.imshow(“area”,areax)
    #泛洪填充,相似像素填充
    def fill_color():
    global imgviewx
    h,w,t=imgviewx.shape
    #必要参数
    maskx=np.zeros([h+2,w+2],np.uint8)
    #参数接收:(图片信息,必要参数,参考点位置坐标,填充的颜色,查找范围:最低像素(参考减所写),查找范围:最高像素(参考加所写),全部填充) cv2.floodFill(imgviewx,maskx,(100,100),(0,255,0),(100,100,100),(50,50,50),cv2.FLOODFILL_FIXED_RANGE)
    #通道分离与合并
    def tongdao():
    global imgviewx
    b,g,r=cv2.split(imgviewx)#通道分离
    cv2.imshow(“bb”,b)#通道图单独显示
    cv2.imshow(“gg”,g)
    cv2.imshow(“rr”,r)
    imgviewx[:,:,1]=135 #改变单个通道(0,1,2 => B,G,R)
    cv2.imshow("chang red ",imgviewx)
    imgviewx=cv2.merge([b,g,r])#合并通道
    #像素运算
    def pixel_operation():
    #读入两张大小和通道相同的图片
    img1=cv2.imread(“imgx/img1.jpg”)
    img2=cv2.imread(“imgx/img2.jpg”)
    print(img1.shape, “=====”, img2.shape)
    # 创建一个大小可调整的窗口
    cv2.namedWindow(“operation”, cv2.WINDOW_NORMAL)
    cv2.imshow(“img111”, img1)
    cv2.imshow(“img222”,img2)
    #处理图片
    #像素点相加,如0(黑色),255(白色),0+255=255(白色),超过255还是白色
    #imgoperation=cv2.add(img1,img2)
    #像素相减,如0(黑色),255(白色),0-255=-255=0(黑色)
    #imgoperation=cv2.subtract(img1,img2)
    #像素相乘,255(白色),0/255=0(黑色)
    #imgoperation=cv2.divide(img1,img2)
    #像素相乘,255(白色),0
    255=0(黑色)
    #imgoperation=cv2.multiply(img2,img1)
    #像素与,二进制与,如0与255为00000000&11111111=00000000
    imgoperation=cv2.bitwise_and(img1,img2)
    #像素或
    imgoperation=cv2.bitwise_or(img1,img2)
    #显示处理后的图片
    cv2.imshow(“operation”, imgoperation)
    #…
    #视频处理,视频无声音
    def vediox():
    ved=cv2.VideoCapture(“imgx/vv.mp4”)#打开视频
    while True:
    ret,tux=ved.read()
    if ret== False:#判断视频是否播放完毕
    break
    else:
    cv2.imshow(“wideo1111”,tux)#每帧显示
    hsv=cv2.cvtColor(tux,cv2.COLOR_BGR2HSV)#转换成HSV图片格式,对颜色敏感
    lowx=np.array([37,43,46])#表格在后面给出
    uppx=np.array([77,255,255])
    # 播放此输出的目标是白色
    tux2=cv2.inRange(hsv,lowx,uppx)#利用低指和高指匹配延时,所匹配的是绿色
    #播放此输出的目标是原色
    tux3 = cv2.bitwise_and(tux,tux, mask=tux2)

            cv2.imshow("video222",tux3)
    
            if 27==cv2.waitKey(20):#按键退出播放
                break
    

    #…
    #创建一个窗口,中文显示会出乱码,第一个参数为窗口唯一标识字符串
    #窗口大小可调整,默认参数为c v2.WINDOW_AUTOSIZE 根据图像大小自动创建大小
    #可建多个
    cv2.namedWindow(“hhh”,cv2.WINDOW_NORMAL)
    #…
    #创建鼠标点击事件回调函数,(事件,x轴位置,y轴位置,标记,属性)
    def drawxxx(event,x,y,flags,param):
    if eventcv2.EVENT_LBUTTONDOWN:
    print(“鼠标按下”,x,y)
    #elif event
    cv2.EVENT_MOUSEMOVE:
    # print(“鼠标滑动”)
    elif eventcv2.EVENT_LBUTTONUP:
    print(“鼠标抬起”)
    #注册鼠标监听事件(窗口,回调函数)
    cv2.setMouseCallback("hhh,drawxxx)
    #…
    t1=cv2.getTickCount()#利用cpu时间…
    #xgtp()#调用图片像素遍历函数
    #cjtx()#调用创建图形函数
    #vediox()#调用视频处理函数
    #tongdao()#通道处理
    #pixel_operation()#像素点的加减乘除等处理
    #pictureArea()#图片区域处理
    #fill_color()#泛洪填充,相似像素填充
    t2=cv2.getTickCount()
    timesx=(t2-t1)/cv2.getTickFrequency()
    print(“花费时间:%s 毫秒”%(timesx*1000))
    #显示图片,参数:(窗口唯一标识字符串,imread读入的图像)
    #可以不基于窗口,可建多个
    cv2.imshow(“hhh”,imgviewx)
    #…
    #将图片保存,写入到文件
    cv2.imwrite(“2.jpg”,imgviewx)
    #…
    #窗口退出
    #窗口等待任意键盘按键输入,0为一直等待,其他数字为毫秒数
    #等待时间到则返回-1,如有键盘按键按下则返回按键的ASCII码
    #可使用print(cv2.waitKey(0))获取该按键值
    keyx=cv2.waitKey(0)
    print(keyx)
    if keyx
    27:
    print(“你按下了键盘的:ESC键”
    #…
    #销毁窗口,退出程序
    cv2.destroyAllWindows()

    运行结果:

    该代码的功能是处理了每个像素,将图片美化和显示每个点的坐标值
    实验结果:图片更加清晰,美化了原始图片,同时图片左上方显示“hhhh”
    在这里插入图片描述

    展开全文
  • 树莓派是一种卡片计算机,拥有很高的运算能力,我们项目动物监测系统,要求能够传输视频数据,并将视频上传至服务器,当初我的想法是采用推流,将摄像头数据推流至服务器,然后使用电脑进行拉流并存至本地, ...

    (1) 能不能用树莓派同时控制多个摄像头进行拍照

    1. 方法(一)

    树莓派是一种卡片计算机,拥有很高的运算能力,我们项目做动物监测系统,要求能够传输视频数据,并将视频上传至服务器,当初我的想法是采用推流,将摄像头数据推流至服务器,然后使用电脑进行拉流并存至本地,

    在这里插入图片描述

    1. 在树莓派上编译ffmpeg源码,源码从http://ffmpeg.org/download.html下载,这个软件是开源的,任何人都可以免费下载,并修改,将源码下载下来并解压,在安装前要对它进行简单的配置并且需要下载依赖库
      sudo apt-get install aptitude
      sudo aptitude install libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libxext-dev libxfixes-dev

    依次执行上面的命令,但是我在安装过程中会出现 安装不了 libfaac 这个库,但是这个库的作用我搜了搜,是编码声音用的,我只是采集视频图像,并不需要这个库
    所以我在编译源码时并没有添加这个选项,直接将它禁用了,输入下面命令
    Configure./-enable-nonfree --disenable-libfaac --enable-gpl --enable-libx264 --disable-asm
    之后完成配置,然后输入 make 命令 进行编译, 之后在输入sudo make install 进行安装, libx264 这个库很重要,时进行视频编码用的,一定要将它编译进去,

    1. 要配置服务器端了,我是在本地使用虚拟机进行服务器搭建的,我用的是ubuntu 服务器版本,首先安装nginx 服务器, 输入
      sudo apt-get update
      #软件更新
      sudo apt-get -y install nginx
      #安装 nginx
      sudo apt-get -y remove nginx
      sudo apt-get clean
      #清空 nginx 的配置文件
      sudo rm -rf /etc/nginx/*
      #安装编译用的模块
      sudo apt-get install -y curl build-essential libpcre3 libpcre3-dev libpcre+±dev zlib1g-dev libcurl4-openssl-dev libssl-dev
      #创建存放网页的目录给 nginx 使用
      sudo mkdir -p /var/www
      #创建编译用的目录
      mkdir -p ~/nginx_src
      cd ~/nginx_src
      #下载 nginx 源码包
      wget http://nginx.org/download/nginx-1.11.8.tar.gz
      #下载 nginx-rtmp-module 源码包
      wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
      tar -zxvf nginx-1.11.8.tar.gz
      unzip master.zip
      cd nginx-1.11.8
      #设定编译参数
      ./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_ssl_module --without-http_proxy_module --add-module=/home/pi/nginx_src/nginx-rtmp-module-master
      #开始编译安装
      make
      sudo make install

    我按照上面步骤安装很顺利,并没有遇到各种各样的报错,接下里就是配置nginx服务器了,服务器配置文件在下面的路径/etc/nginx/,直接输入 vim /etc/nginx/nginx.conf
    进行编辑,然后在文件末尾 添加如下模块
    rtmp {
    server {
    listen 1900;
    chunk_size 4096;
    application live {
    live on;
    record off;
    }
    }
    }
    重启 nginx 服务。
    sudo service nginx start

    这些步骤都没有出现问题,按照流程安装就可以了,
    之后就开始进行推流将视频数据推流至服务器
    ffmpeg -ss 0 -t 10 -i /dev/video0 -f flv rtmp://rtmp server address:server port/project name/stream name
    rtmp server address 这个为服务器的ip地址,可以使用ifconfig 进行查看,
    port 端口,就是刚才服务器配置文件中的服务器端口 1935
    stream name 这个名称 是取名为 live
    之后就可以进行推流了,但是在推流过程中我遇到一个问题,就是当我使用电脑监控
    树莓派CPU时,竟然占用90%多,而且拉流过程中,视频严重卡顿,延迟率非常高
    我猜是树莓派进行视频编码占用非常高的CPU资源,所以视频很卡顿,根本没有使用价值,所以我放弃了这个方案,采用了第二种方案。

    第二种方案,我使用 MJPG-Streamer 进行推流,这个方案我也是参考其他资料的,
    偶然发现这个软件扩展性非常强,可以通过修改源码来实现想要的功能,其实它也是流转发的软件,但是这里的流其是是图片。

    进入树莓派终端安装依赖库
    sudo apt-get install subversion
    sudo apt-get install libjpeg8-dev
    sudo apt-get install imagemagick
    sudo apt-get install libv4l-dev
    sudo apt-get install cmake
    进行软件源码编译安装
    sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
    cd mjpg-streamer/mjpg-streamer-experimental
    make all
    sudo make install

    这个软件安装过程相比ffmpeg 就简单多了,
    输入 ./mjpg_streamer -i “./input_uvc.so” -o “./output_http.so -w ./www”
    然后直接在服务器端打开,我发现传输的视频相比ffmpeg 非常流畅,延时200毫秒
    左右,而且这个软件的源码结构也很清晰,他给用户很大的修改空间,其中 input_file, input_uvc, input_http, input_opencv, input_raspicam, input_ptp2 这几个源文件为输入程序,就是这几个文件获取摄像头数据的,output_http, output_file, output_udp,output_rtsp, 这几个为输出文件,是不是可以将opencv 用来处理摄像头采集的图像数据,并将其推流,这是我的设想,大概就是这个软件有好多插件,配合树莓派的话,应该该可以做硬件控制,在MJPG-streamer.h 文件有
    #include “plugins/input.h”
    #include “plugins/output.h”

    而其中的 input.h 就是输入 ,output.h 就是输出,于是我又打开了这个目录的头文件,哈哈,果然是这两个头文件负责管理输入插件,目录如下
    在这里插入图片描述

    进一步打开input.h,其实它里面就是 linux 下的 v4l2 编程,就是调用了linux 内核提供的摄像头接口,然后从摄像头获取采集数据,
    在这里插入图片描述

    这是使用免驱动摄像头就是USB摄像头 作为输入时的源码目录, usb摄像头
    采集的数据为yuyv格式,jpeg_utils.c中的一个函数之间大概就是将摄像头采集的yuyv格式转化为JPEG格式,如下图对函数作用的描述。
    在这里插入图片描述
    也就是说使用Opencv将转化好的JPEG格式图片进行处理,就成为很大的可能。
    接下来我要做的就是分析这个源码,我希望能将Opencv 加进去,进行图像处理,
    虽然这个源码我还好多地方不懂,我会继续查阅资料,争取将Opencv 加进去。

    展开全文
  • 树莓派_图像处理入门纪实(一)

    千次阅读 2016-02-09 00:38:51
    树莓派_图像处理入门纪实(一) 先声明一点,凡是以纪实为文章标题的博客都是在强调:我只是向老板/领导/老师/同事/同学证明,我确实干活了。等把纪实的任务完成,会整理出一篇总结,把纪实中涉及的内容,用类似于...
  • 一个基于树莓派的智能视频监控系统,能够实现动作捕捉,运动检测,后期还想实现机器学习模型训练,想知道树莓派的硬件支持这些吗?
  • 树莓派做图像处理数据延迟问题解决方法 很早之前(2018年左右)在一个当时风靡一时"跳一跳"小游戏的自动运行小工具时(树莓派通过摄像头获取手机屏幕图像,再驱动舵机云台去点击手机屏幕),就有发现树莓派做图像...
  • 2、插卡安装树莓派 3、进入linux系统更改root密码 sudo passwd root 4、开启ssh服务 树莓派登录raspi-config开启ssh服务 5、远程桌面: 在树莓派命令行下输入如下命令 安装tightvncserver sudo apt-get ...
  • 跟着网上的教程用树莓派装了opencv 然后也运行了一些简单的图像处理 识别分割啥的但是感觉效果都好差。。本科生想出去参加竞赛来着。机器人 拿树莓派做上位机再加上 跑opencv+cnn等等。。。 会不会arm根本忙不过来...
  • 树莓派+Opencv(一)图像处理

    万次阅读 2018-12-09 02:18:19
    OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库...它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
  • 树莓派zero w 图像传输

    千次阅读 热门讨论 2020-02-26 16:09:01
    RPi-Cam-Web-Interface(图像传输软件) Mobaxterm(串口访问软件) 硬件连接 软件安装过程中所有命令使用串口输入(使用串口之前,先使能树莓派串口) Mobaxterm 使用 New session 选择Serial,波特率115200,...
  • 图像的初步处理 彩色图片转灰度图 计算机对图片的处理,不同于生物的信息传递。 它的本质工作:对数据进行运算或处理 所以为了方便计算机处理,我们将图片进行简化(彩色图片转灰度) 引入numpy包 这里我用到了numpy...
  • 树莓派基于python循环处理树莓派拍摄图像集代码,本设计旨在改善车道偏离预警系统的整体性与造价性,以树莓派作为图像处理平台,实现了车道线的检测以及偏离预警功能。软件方面算法分为道路图像预处理、车道线的检测...
  • OpenCV简介:opencv是一个开源的计算机视觉库,是英特尔公司资助的两大图像处理利器之一。它为图像处理、模式识别、三维重建、物体跟踪、机器学习和线性代数提供了各种各样的算法。
  • 笔者最早接触Matlab是从2012版开始,对于算法处理,目前个人觉得单从计算方面来说,Matlab很不错。下面进入正文。 1 硬软件基础 Matlab 2019a 树莓派 3B+(matalb的镜像并不支持4B,但是并不...
  • 树莓派通过官方摄像头进行运动检测,当检测到有动作发生,将该帧图像通过tcp协议实时传输到pc端
  • 知道目标物体的坐标,根据目标物体的坐标。和目标车库的坐标。两个坐标位置进行判断。 根据小车要匀速行驶。根据小车移动的时间*速度来判断小车位置 小车先找到小铁块,吸上以后,将车头方向指向车库方向 ...
  • 树莓派搭建图像识别基站

    千次阅读 2018-06-29 17:19:21
    opencv识别赛道黑线
  • 树莓派定时采集图像上传到服务器

    千次阅读 2019-03-23 08:42:42
    这个系统之前,得先选择一个可以上传图片的服务器,当然,可以自己一个小服务器,但是我选择了七牛网,因为它是一个免费的云图库,而且我平时写MarkDown也可以用这个 先要注册登录,之后,如图操作 创建...
  • 基于Python的数字图像处理,离不开相关处理的第三方库函数。搜索网络资源,列出如下资源链接。 Python图像处理库到底用哪家 python计算机视觉编程——第一章(基本的图像操作和处理) Python各类图像库的图片...
1 2 3 4 5 ... 20
收藏数 2,610
精华内容 1,044
关键字:

树莓派可以做图像处理