工业互联网备赛2021-01-25

学习目标:


一、第一课:硬件组装,镜像文件烧录,开机

  • 硬件安装
  • SD卡格式化(第二次要格式化,然后分区)
  • 镜像烧录
  • 软件更新,sudo apt-get update; sudo apt-get full-upgrade
  • 如何设置,可以避免输入密码

二、第二课:基本Linux指令学习(1)

1.打开Terminal

1. Ctrl+Alt+T
2. 屏幕右键

2.Linux 文件操作指令

1. ls 显示当前目录下的文件,其中蓝色是文件夹
2. cd Music 进入某目录
3. cd ..返回上层目录
4. cd / 是跳转到根目录,根目录是所有用户共享的目录
5. cd ~ 是跳转到当前用户的家目录.如果是root用户,cd ~ 相当于 cd /root.如果是普通用户,cd ~ 相当于cd /home/当前用户名
6. cd /home/nano 到当前登录用户下
7. clear 清除Terminal   
8. sudo apt-get install ****安装app
9. sudo apt-get remove ****删除app
10. pwd 显示当前工作目录 
11. mkdir scratch 创建文件夹
12. nano MyDogs.txt 创建文件
13. cat MyDogs.txt打开文件
14. Ctrl + C/D 是强制中断程序的执行,进程已经终止
15. python3 greeting.py 
16. mv cats.py Cats.py 移动 mv cats.py ../Music/Cats.py
17. cp Cats.py AAA.py 复制
18. rm ~/Music/Cats.py 删除文件
19. rmdir ***删除文件夹
20. mv *.txt ../textFiles 移动某一类文件

三、第三课:Linux指令学习(2)

1.Linux 操作指令

链接: Linux命令大全.

1. ls >myDir.txt 把当前文件名写入新文件
2. ls >>myDir.txt
3. sort scratch/myCars.txt 按字母先后顺序排列显示,并不改变原文件(-M, -r, -n)
4. find ~ -name "fever.txt"
5. grep -i audi myCars.txt
6. 查看操作系统版cat /proc/version
7. 查看主板版本  cat /proc/cpuinfo
8. 查看SD存储卡剩余空间 df -h
9. 查看ip地址 ifconfig
10. 压缩:tar –zcvf  filename.tar.gz dirname
11. 解压:tar –zxvf filename.tar.gz
12. sudo apt-get install xxx  安装软件
13. sudo apt-get update  更新软件列表
14. sudo apt-get upgrade 更新已安装软件
15. sudo apt-get remove xxx   删除软件       

四、第四课:远程登录及几个用到的软件

  • 无线网卡 IP地址:172.20.152.141
  • 远程登录:PuTTY、SecureCRT、VncViewer(相当于向日葵,会比较卡)
  • 交换文件:WinSCP
  • 安装Jupyter Lab: pip install jupyterlab
  • jupyter-lab指令浏览器自动打开Jupyter Lab
  • 链接: Jupyter Lab介绍.

五、第五课:

1.Python学习

Python语法和Matlab语法差不多
1.nano pythonPrint.py
2.Ctrl+D
3.Python3 pythonPrint.py
4.Print()
5.Input()
6.IF
7.For
8.Import numpy as np

六、第六课:Python IDE

1.安装Code-OSS(VSCode)

  • sudo apt-get install curl
  • 下载Code-OSS
  • curl -L https://github.com/toolboc/vscode/releases/download/1.32.3/code-oss_1.32.3-arm64.deb -o code-oss_1.32.3-arm64.deb
    在这里插入图片描述
  • sudo dpkg -i code-oss_1.32.3-arm64.deb 安装完毕,在程序搜索code可以看到
  • 或者在终端输入code-oss打开OSS
  • 在settings-》appearance-》behavior中设置工具栏
  • 安装python extension
  • Ctrl+shift+P搜索select interpreter,选择Python 3.6.9-64bit
  • 在file-》Preferences中可以设置主题,字体等信息
  • 新建文件夹,py文件,编程调试

七、第七课:Matplotlib/Pyplot/Numpy

– 处理数据的工具,类似matlab的数学函数和绘图函数

安装工具

  • sudo apt-get install python3-matplotlib
  • 测试安装:python3->import matplotlib.pyplot as plt->import numpy as np->np.version(两个下划线)

测试工具

  • 在OSS中测试,
    在这里插入图片描述
  • import numpy as np

八、第八课:OpenCV

安装OpenCV

如何获得最新OpenCV版本,先安装,然后remove,然后在import CV2

  • sudo apt-get install python3-opencv
  • python3-> import cv2->cv2.version
  • sudo apt-get remove python3-opencv
  • python3-> import cv2->cv2.version 重复一遍,得到最新版本opencv

测试OpenCV

- [ ] sudo apt-get install python3-opencv

九、第九课:调用摄像头

1、摄像头调用

注意camSet中的设置,尤其是framerate

import cv2
print(cv2.__version__)
dispW=320
dispH=240
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=15/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
while True:
   ret,frame=cam.read()
   cv2.imshow('piCam',frame)
   if cv2.waitKey(1)==ord('q'):
       break
cam.release()
cv2.destroyAllWindows()

安装libcanberra-gtk-module

sudo apt-get install libcanberra-gtk-module

切换摄像头WebCam,这里假设WebCam的地址是1

cam=cv2.VideoCapture(1)

2、OpenCV基本编程

  • 多图像窗口
  • 窗口移动
  • 彩色转黑白图像
  • 窗口大小 graysmall=cv2.resize(gray,(320,240))
  • 读写Video
  • 如何在图像上画圆、直线、矩形、写字、带箭头直线

(1)打开图像

import cv2
print(cv2.__version__)
dispW=320*1
dispH=240*1
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
while True:
    ret,frame=cam.read()
    cv2.imshow('piCam',frame)
    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()

(2)openCV2-moveWindow

import cv2
print(cv2.__version__)
dispW=320*1
dispH=240*1
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
while True:
    ret,frame=cam.read()
    cv2.imshow('nanoCam',frame)
    cv2.moveWindow('nanoCam',0,0)
    cv2.imshow('nanoCam2',frame)
    cv2.moveWindow('nanoCam2',300,0)


    gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    cv2.imshow('nanoCamGrey',gray)
    cv2.moveWindow('nanoCamGrey',0,400)
    cv2.imshow('nanoCamGrey2',gray)
    cv2.moveWindow('nanoCamGrey2',300,400)
    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()

(3)openCV3-resizeWindow

import cv2
print(cv2.__version__)
dispW=320*1
dispH=240*1
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
while True:
    ret,frame=cam.read()
    cv2.imshow('piCam',frame)
    frameBig=cv2.resize(frame,(640,480))
    cv2.imshow('piCamBig',frameBig)
    cv2.moveWindow('piCamBig',0,400)
    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()

(4)openCV4-drawing

import cv2
print(cv2.__version__)
dispW=320*2
dispH=240*2
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
while True:
    ret,frame=cam.read()
    frame = cv2.rectangle(frame,(140,100),(220,140),(0,255,0),4)
    frame = cv2.circle(frame,(340,100),80,(0,255,255),4)
    fnt = cv2.FONT_HERSHEY_DUPLEX
    frame=cv2.putText(frame,'My First Text',(100,100),fnt,1,(25,0,123),2)
    frame=cv2.line(frame,(10,10),(630,470),(0,0,0,),2)
    frame=cv2.arrowedLine(frame,(10,470),(630,10),(255,0,0),1)

    cv2.imshow('piCam',frame)
    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()

(5)saveRead

import cv2
print(cv2.__version__)
dispW=320*1
dispH=240*1
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
#cam=cv2.VideoCapture(camSet)
#outVid=cv2.VideoWriter('videos/myCam.avi',cv2.VideoWriter_fourcc(*'XVID'),21,(dispW,dispH))
cam=cv2.VideoCapture('videos/myCam.avi')
while True:
    ret,frame=cam.read()
    cv2.imshow('piCam',frame)
    #outVid.write(frame)
    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()

(6)图片显示移动框

import cv2
print(cv2.__version__)
dispW=320*2
dispH=240*2
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
dispW=int(cam.get(cv2.CAP_PROP_FRAME_WIDTH))
dispH=int(cam.get(cv2.CAP_PROP_FRAME_HEIGHT))
BW=int(0.15*dispW)
BH=int(0.25*dispH)
posX=10
posY=270
dx=2
dy=2

while True:
    ret,frame=cam.read()
    cv2.moveWindow('piCam',0,0)
    frame=cv2.rectangle(frame,(posX,posY),(posX+BW,posY+BH),(255,0,0),3)
    cv2.imshow('piCam',frame)
    posX=posX+dx
    posY=posY+dy
    if posX<=0 or (posX+BW)>dispW:
        dx=dx*(-1)
    if posY<=0 or (posY+BH)>dispH:
        dy=dy*(-1)

    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()

(7)鼠标操作

import cv2
import numpy as np

print(cv2.__version__)
evt=-1
coord = []
img=np.zeros((250,250,3),np.uint8)


def click(event,x,y,flags,params):
    global pnt
    global evt
    if event==cv2.EVENT_LBUTTONDOWN:
        print('Mouse Event was:',event)
        print(x,',',y)
        pnt=(x,y)
        evt=event
        coord.append(pnt)
        print(coord)
    if event==cv2.EVENT_RBUTTONDOWN:
        print(x,y)
        blue=frame[y,x,0]
        green=frame[y,x,1]
        red=frame[y,x,2]
        colorString=str(blue)+','+str(green)+','+str(red)
        img[:]=[blue,green,red]
        fnt=cv2.FONT_HERSHEY_PLAIN
        r=255-int(red)
        g=255-int(green)
        b=255-int(blue)
        tp=(b,g,r)
        cv2.putText(img,colorString,(10,25),fnt,1.5,tp,2)
        cv2.imshow('myColor',img)

dispW=320*2
dispH=240*2
flip=2
cv2.namedWindow('piCam')
cv2.setMouseCallback('piCam',click)
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
while True:
    ret,frame=cam.read()
  #  if evt==1:
  #      cv2.circle(frame,pnt,5,(0,0,255),-1)
  #      font=cv2.FONT_HERSHEY_PLAIN
 #       myStr=str(pnt)
 #       cv2.putText(frame,myStr,pnt,font,1.5,(255,0,0),2)
    for pnts in coord:
        cv2.circle(frame,pnts,5,(0,0,255),-1)
        font=cv2.FONT_HERSHEY_PLAIN
        myStr=str(pnts)
        cv2.putText(frame,myStr,pnts,font,1.5,(255,0,0),2)


    cv2.imshow('piCam',frame)
    cv2.moveWindow('piCam',0,0)
    keyEvent= cv2.waitKey(1)
    if keyEvent==ord('q'):
        break
    if keyEvent==ord('c'):
        coord=[]
cam.release()
cv2.destroyAllWindows()

(8) 参数条

import cv2
print(cv2.__version__)
dispW=320*2
dispH=240*2
flip=2
def nothing(x):
    pass


camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
cv2.namedWindow('piCam')
cv2.createTrackbar('xVal','piCam',25,dispW,nothing)
cv2.createTrackbar('yVal','piCam',25,dispH,nothing)

while True:
    ret,frame=cam.read()
    xVal=cv2.getTrackbarPos('xVal','piCam')
    yVal=cv2.getTrackbarPos('yVal','piCam')
    cv2.circle(frame,(xVal,yVal),10,(255,0,0),-1)

    cv2.imshow('piCam',frame)
    cv2.moveWindow('piCam',0,0)
    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()

(9)通过滑动条画矩形

import cv2
print(cv2.__version__)
dispW=320*2
dispH=240*2
flip=2

def nothing(x):
    pass


camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)

cv2.namedWindow('piCam')

cv2.createTrackbar('xVal','piCam',25,dispW,nothing)
cv2.createTrackbar('yVal','piCam',25,dispH,nothing)

while True:
    ret,frame=cam.read()
    xVal=cv2.getTrackbarPos('xVal','piCam')
    yVal=cv2.getTrackbarPos('yVal','piCam')
    cv2.circle(frame,(xVal,yVal),10,(255,0,0),-1)

    cv2.imshow('piCam',frame)
    cv2.moveWindow('piCam',0,0)
    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()

十、第十课:ROI(Region of Interest)in OpenCV

(1) 一个小例子 roi=frame[50:250,200:400].copy()
frame是YX,moveWindow是XY

import cv2
print(cv2.__version__)
dispW=320*2
dispH=240*2
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
while True:
  ret,frame=cam.read()
  roi=frame[50:250,200:400].copy()
  roiGray=cv2.cvtColor(roi,cv2.COLOR_BGR2GRAY)
  roiGray=cv2.cvtColor(roiGray,cv2.COLOR_GRAY2BGR)
  frame[50:250,200:400]=roiGray
  cv2.imshow('ROI',roi)
  cv2.moveWindow('ROI',0,600)

  
  cv2.imshow('GRAY',roiGray)
  cv2.moveWindow('GRAY',320,600)

  cv2.imshow('piCam',frame)
  cv2.moveWindow('piCam',0,0)



  if cv2.waitKey(1)==ord('q'):
      break
cam.release()
cv2.destroyAllWindows()

(2) 跳动窗口,窗口内彩色,其余黑白

import cv2
print(cv2.__version__)
dispW=320*2
dispH=240*2
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
BW=int(0.2*dispW)
BH=int(0.2*dispH)
posX=10
posY=270
dx=2
dy=2

while True:
   ret,frame=cam.read()
   roi=frame[posY:posY+BH,posX:posX+BW].copy()
   frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
   frame=cv2.cvtColor(frame,cv2.COLOR_GRAY2BGR)
   frame[posY:posY+BH,posX:posX+BW]=roi
   frame=cv2.rectangle(frame,(posX,posY),(posX+BW,posY+BH),(255,0,0),3)

   posX=posX+dx
   posY=posY+dy

   
   cv2.imshow('piCam',frame)
   cv2.moveWindow('piCam',0,0)
   
   if posX<=0 or (posX+BW)>dispW:
       dx=dx*(-1)
   if posY<=0 or (posY+BH)>dispH:
       dy=dy*(-1)
   if cv2.waitKey(1)==ord('q'):
       break
cam.release()
cv2.destroyAllWindows()

(3)鼠标框选

import cv2
print(cv2.__version__)
goFlag=0

def mouse_click(event,x,y,flags,params):
    global x1,y1,x2,y2
    global goFlag
    if event==cv2.EVENT_LBUTTONDOWN:
        x1=x
        y1=y
        glFlag=0
    if event==cv2.EVENT_LBUTTONUP:
        x2=x
        y2=y
        goFlag=1


cv2.namedWindow('piCam')
cv2.setMouseCallback('piCam',mouse_click)




dispW=320*2
dispH=240*2
flip=2
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam=cv2.VideoCapture(camSet)
while True:
    ret,frame=cam.read()
    if goFlag==1:
        frame=cv2.rectangle(frame,(x1,y1),(x2,y2),(255,0,0,),3)
        roi=frame[y1:y2,x1:x2]
        cv2.imshow('Copy ROI',roi)
        cv2.moveWindow('Copy ROI',705,0)



    
    cv2.imshow('piCam',frame)
    cv2.moveWindow('piCam',0,0)
    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值