RaspberryPi笔记[1]-OpenCV边缘检测
摘要
使用树莓派进行基于OpenCV的图像边缘检测.
平台信息
- 开发机:macOS
- 执行机:RaspberryPi zero 2w
- 开发语言:Python
预装OpenCV的树莓派镜像
[https://github.com/Qengineering/RPi_64-bit_Zero-2-image]
[https://drive.google.com/file/d/1VPpalGylbriNlVggF35PeVApsVFXwlHv/view]
[https://www.ab62.cn/article/26106.html]
[https://www.cnblogs.com/zhangwenzhao/archive/2013/08/26/3282435.html]
要点:
- opencv
Flash the image on the SD-card with the Imager or balenaEtcher.
- 账户: pi
- 密码: 3.14
连接WIFI:
#启动配置界面
sudo raspi-config
关闭XWindow(桌面):
#扫描局域网设备
sudo nmap -sP -PI -PT 192.168.31.0/24
#打开boot设置界面
sudo raspi-config
直接在当前选中的 “1 System Options” 按回车,进入子页面:
选中 " S5 Boot / Auto Login ",进入下一级子页面:
这里有四个选项,上面两个就是没有图形界面,下面两个就是有图形的,我们选中 " B2 Console Autologin " 不要图形界面并且默认登录pi用户(免去每次进入都手动输入用户名密码),按回车。
退出(按ESC)设置界面,重启树莓派。
sudo reboot
图片边缘检测
[https://blog.csdn.net/woshicver/article/details/124938265]
- 从文件中读取图像
- 使用 SIFT & ORB 检测关键点
- 用不同颜色绘制关键点
- 画一个矩形
- 将图像转换为 ndarray(快速)
- 将 ndarray 转换为 image::RgbImage (用于测试我们上面的步骤按预期工作)
- 保存图片
实现
代码
import cv2
import numpy as np
from PIL import Image
# 图片位置
img_path = "./software/OpenCV/"
img_name = "pencil2.png"
# 读取图像
img = cv2.imread(img_path + img_name, cv2.IMREAD_COLOR)
# 创建ORB关键点检测器
orb = cv2.ORB_create(500, 1.2, 8, 31, 0, 2, cv2.ORB_HARRIS_SCORE, 31, 20)
orb_keypoints, orb_desc = orb.detectAndCompute(img, None)
# 绘制ORB关键点
dst_img = cv2.drawKeypoints(img, orb_keypoints, None, (0, 255, 0), cv2.DRAW_MATCHES_FLAGS_DEFAULT)
# 绘制矩形
cv2.rectangle(dst_img, (0, 0), (50, 50), (255, 0, 0), -1, cv2.LINE_8, 0)
# 使用SIFT
sift = cv2.SIFT_create(0, 3, 0.04, 10., 1.6)
sift_keypoints, sift_desc = sift.detectAndCompute(img, None)
# 绘制SIFT关键点
dst_img = cv2.drawKeypoints(dst_img, sift_keypoints, None, (0, 0, 255), cv2.DRAW_MATCHES_FLAGS_DEFAULT)
# 保存图像
cv2.imwrite("./tmp.png", dst_img)
# 转换为ndarray数组
a = np.array(dst_img)
# 转换为PIL图像
test_image = Image.fromarray(a)
# 保存图像
test_image.save(img_path + img_name + ".out.png")
运行
scp -r ./software pi@192.168.31.18:/home/pi
ssh pi@192.168.31.18
#3.14
python3 software/OpenCV/test4.py
效果
原图 | 处理后图像 |
---|---|
![]() |
![]() |