树莓派4b安装python3.7+opencv4.4.0

python是自带的,不再赘述

正题
〇、设备

usb接口的树莓派摄像头+小车一台:)
在这里插入图片描述

一、换源
  1. 打开配置文件进行修改
sudo nano /etc/apt/sources.list
  1. 将原先的源注释掉,换上清华源
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
  1. 打开第二个配置文件
sudo nano /etc/apt/sources.list.d/raspi.list
  1. 将原先的源注释掉,换上清华源
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
二、安装依赖包
  1. 树莓派相关库安装
sudo apt-get update
sudo apt-get install libjpeg-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libpng12-dev
sudo apt-get install libqtgui4 libqt4-test
sudo apt-get install libjasper-dev
  1. opencv4.4.0安装
sudo pip3 install opencv-python
三、测试环境
  1. 终端输入python3进入编译环境
  2. 输入import cv2
  3. 输入print(cv2.__version__)
  4. 成功
  5. 调用测试代码(来自参考文章1)
    在这里插入图片描述
四、遇到问题
  • 问题一:无法获得锁
    拷贝自参考文章,遇到问题时忘记截图了
    原因:前一次安装环境忘记使用pip3而直接使用pip,所以直接ctrl+z结束了安装,导致进程被占用
    解决方法:使用ps -e|grep apt-get查看apt-get的进程号,并用kill 进程号杀死进程

  • 问题二:无法打开摄像头
    在这里插入图片描述
    原因:cap = cv2.VideoCapture(videoPort)函数需要用相关的端口才可以打开
    解决方法

    1. 不插摄像头打开终端输入ls /dev/video*查看现有的端口号
      在这里插入图片描述

    2. 插入摄像头再次输入上述命令
      在这里插入图片描述
      可以发现这里多出了两个端口,这就是摄像头对应的端口号

    3. 然后再放到函数中去,我这边用了video1,即videoPort=1,编译运行,成功!
      在这里插入图片描述

五、参考文章
  1. [开发技巧]·树莓派极简安装OpenCv
  2. 树莓派4 安装OPENCV3全过程(各种踩坑和报错)
  3. Linux下用apt-get安装软件时遇到“无法获得锁”的问题
### 树莓派4B GPIO Python 使用教程 #### 安装Python GPIO库 为了与GPIO引脚进行交互,可以安装`RPi.GPIO`库。这可以通过运行以下命令来完成: ```bash sudo apt-get update sudo apt-get install python3-rpi.gpio ``` 上述命令会更新软件包列表并安装适用于Python 3版本的GPIO库[^2]。 #### 编写简单的LED控制程序 下面展示了一个利用Python编写的简单例子,用于点亮连接到特定编号GPIO引脚上的LED灯泡。此代码片段展示了如何设置模式、配置引脚方向以及改变其状态。 ```python import RPi.GPIO as GPIO import time # 设置BCM编号方式 GPIO.setmode(GPIO.BCM) # 设定GPIO8为输出信号通道 led_pin = 8 GPIO.setup(led_pin, GPIO.OUT) try: while True: # 将GPIO8设为高电平 GPIO.output(led_pin, GPIO.HIGH) print("LED on") time.sleep(1) # 延迟一秒 # 将GPIO8设为低电平 GPIO.output(led_pin, GPIO.LOW) print("LED off") time.sleep(1) except KeyboardInterrupt: pass finally: GPIO.cleanup() # 清理资源 ``` 这段代码实现了每秒切换一次LED的状态,在终端打印相应的消息,并且当按下Ctrl+C时能够安全退出循环并清理所使用的GPIO端口。 #### 配置按钮输入读取功能 如果想要检测物理按键的动作,则需将另一个GPIO引脚设定成输入模式,并监听是否有电压变化发生。这里给出一段示范性的源码用来捕捉开关事件。 ```python button_pin = 7 # 设定GPIO7为输入信号通道,并启用内部上拉电阻 GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) while True: input_state = GPIO.input(button_pin) if not input_state: # 当按钮被按下的时候触发动作 print('Button Pressed') time.sleep(0.2) # 添加去抖动延时 ``` 以上实例说明了怎样通过编程手段获取外部硬件设备的信息反馈给计算机处理[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值