Select Page

2022年最新真正可以安裝 OpenCV 4 在 Raspberry Pi 4上(一鍵安裝)

講在前面,碰觸 OpenCV 已經快20年了,但每次碰每次都需要編譯,各個平台編譯和支援庫都不一樣,即便我已經做了 N 次,我每次要在不同平台導入,都要花上一整天才能編譯成功,老天爺太折磨人了,還好永遠都有大神幫忙協助,這一次靠著 Q-engineering 協助,終於可以成功在 Raspberry Pi 4 執行 OpenCV 4 了。

Raspberry Pi 4 上確認平台是 32 bit or 64bit

uname -a 

先執行 uname -a 確認輸出是否有關鍵字 armv7l , 有的話是 32-bit 版本,如果你有看到關鍵字是 aarch64 則是 64 位元的 OS,要注意 32 bit 和 64 bit 的安裝方法是不同的,以下先示範 32 bit 的安裝方法

OpenCV 版本介紹

現在要安裝的話,推薦都是要安裝 OpenCV 4 以上的版本,在去年 2021 年底推出了 4.5.5 ,完整的支援 DNN module.

OpenCV 安裝前更新 Raspberry Pi

sudo rpi-eeprom-update
sudo rpi-eeprom-update -a
sudo reboot

加大 Raspberry Pi 的 swapfile

開啟以及編輯 dphys-swapfile

sudo nano /etc/dphys-swapfile

找到 CONF_MAXSWAP ,將值調大超過最少 1024 以上,我自己是調到 4096 後,存檔後離開

CONF_MAXSWAP=4096

重新啟動服務

sudo systemctl restart dphys-swapfile

重頭戲,在 RPI 中一鍵安裝 OpenCV 4

# 檢查記憶體要有6.5GB以上再開始
free -m
# 取得 OpenCV-4-5-5.sh 執行檔
wget https://github.com/Qengineering/Install-OpenCV-Raspberry-Pi-32-bits/raw/main/OpenCV-4-5-5.sh
sudo chmod 755 ./OpenCV-4-5-5.sh
./OpenCV-4-5-5.sh

接下來只要你的前置作業無誤,等上約1.5小時就可以看到安裝 OpenCV 成功的訊息

不用一鍵安裝的可以按照順序輸入指令

#!/bin/bash
set -e
echo "Installing OpenCV 4.5.5 on your Raspberry Pi 32-bit OS"
echo "It will take minimal 2.0 hour !"
cd ~
# install the dependencies
sudo apt-get install -y build-essential cmake git unzip pkg-config
sudo apt-get install -y libjpeg-dev libtiff-dev libpng-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install -y libgtk2.0-dev libcanberra-gtk* libgtk-3-dev
sudo apt-get install -y libgstreamer1.0-dev gstreamer1.0-gtk3
sudo apt-get install -y libgstreamer-plugins-base1.0-dev gstreamer1.0-gl
sudo apt-get install -y libxvidcore-dev libx264-dev
sudo apt-get install -y python3-dev python3-numpy python3-pip
sudo apt-get install -y libtbb2 libtbb-dev libdc1394-22-dev
sudo apt-get install -y libv4l-dev v4l-utils
sudo apt-get install -y libopenblas-dev libatlas-base-dev libblas-dev
sudo apt-get install -y liblapack-dev gfortran libhdf5-dev
sudo apt-get install -y libprotobuf-dev libgoogle-glog-dev libgflags-dev
sudo apt-get install -y protobuf-compiler

# download the latest version
cd ~ 
sudo rm -rf opencv*
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip 
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.5.zip 
# unpack
unzip opencv.zip 
unzip opencv_contrib.zip 
# some administration to make live easier later on
mv opencv-4.5.5 opencv
mv opencv_contrib-4.5.5 opencv_contrib
# clean up the zip files
rm opencv.zip
rm opencv_contrib.zip

# set install dir
cd ~/opencv
mkdir build
cd build

# run cmake
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D WITH_OPENMP=ON \
-D WITH_OPENCL=OFF \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..

# run make
make -j4
sudo make install
sudo ldconfig

# cleaning (frees 300 MB)
make clean
sudo apt-get update

echo "Congratulations!"
echo "You've successfully installed OpenCV 4.5.5 on your Raspberry Pi 32-bit OS"

檢查 Raspberry Pi 是否有安裝 OpenCV 成功

Python3
import cv2

不藏私,來做人臉辨識吧!!

參考資料

https://qengineering.eu/install-opencv-4.5-on-raspberry-pi-4.html

https://qengineering.eu/install-opencv-4.5-on-raspberry-64-os.html

Pi-Hole – Raspberry Pi 上程式開發以及阻擋廣告用的 DNS SERVER

Pi-Hole – Raspberry Pi 上程式開發以及阻擋廣告用的 DNS SERVER

很多時候為了內部程式開發方便或是安裝 wordpress 時候會需要不同的 DNS 名稱,你也可以編修自己電腦中的 host 名單,讓你開發者可以利用 Domain 去安裝 wordpress,或是也可以自己架設一個 DNS SERVER 來處理這件事情,但現在有比較好的選擇,可以兼顧程式開發以及去除廣告的好處,設定又很容易,且還可以安裝在小巧的 Raspberry Pi 上,可以不用透過外面的 DNS 去做繁瑣的設定,非常的加分。

Pi-hole 安裝方法

Pi-hole的安裝很簡單,在 Raspberry Pi 中只要一行,其他的就看圖片精靈回答問題即可

curl -sL "https://install.pi-hole.net/" | sudo bash
初始安裝畫面
告訴你安裝了 Pi-hole 就可以幫你去除煩人的廣告
Pi-hole 別忘了,有能力的人要貢獻點小費,施比受有福
Pi-hole 選擇你上層的 DNS SERVER 台灣建議用 Google 即可
Pi-hole 選擇廣告阻擋清單的供應者,目前也只有一個可以選擇
Pi-hole 是否要安裝管理的介面,為了以後方便,預設把它裝起來吧
Pi-hole 這一段是問要不要安裝 lighttpd 和 PHP 模組,當然你也可以用自己的 web server ,但為了方便起見,用預設的 web server 即可,他不會佔用太多的硬碟空間。
Pi-hole 是否要有記錄檔,當然要囉
Pi-hole privacy mode , https://docs.pi-hole.net/ftldns/privacylevels/,用預設不隱藏任何東西,所有統計數據都可用即可
看到這個畫面就完成安裝,可以將電腦中的 DNS 指向畫面中的 IP ,需要進入管理介面的輸入 http://pi.hole/admin
國外網友超專業教學

Raspberry Pi 多種應用

PiHole官網 – https://pi-hole.net/

PiHole替代品 AdGuard,https://github.com/AdguardTeam/,AdGrard 安裝在 Raspberry Pi 上的說明,https://github.com/AdguardTeam/AdGuardHome/wiki/Raspberry-Pi

mmWave 毫米波 可以用 Raspberry Pi 遠端偵測你的心跳次數

mmWave 毫米波 可以用 Raspberry Pi 遠端偵測你的心跳次數

在一次由台灣 Raspberry Pi 的聚會上,看到了 mmWave 毫米波的神奇應用,不但可以偵測人流、車流,還可以用遠端,非接觸的方法去偵測你心跳的次數,基本的原理是利用波長低於1mm的毫米波,可以利用電波來偵測到毫米等級的精度,因為當我們在呼吸的時候,肺部會因為擴張,而帶動胸口起伏,這個微小的差異,一般肉眼我們是看不清楚的,一直看著別人胸口也不禮貌,但是用高頻且波長在毫米等級的方法,就可以在遠端察覺胸口起伏的距離範圍,轉換成每分鐘的呼吸次數,但因為資料量巨大,建議要用 Raspberry Pi 4 或是 Jetson 等級比較能處理大量的資訊。

mmWave 的應用

看看真實的 mmWave 毫米波偵測人流、車流、心跳的影片

Jobian mmWave 開發套件官網

http://www.joybien.com/

到蝦皮去買 mmWave 毫米波開發套件吧!

https://shopee.tw/THE-BATMAN-KIT-mmWave-Sensor-Evaluation-Solution(%E7%8F%BE%E8%B2%A8)-i.64632108.2120951208

開放原始碼

https://github.com/bigheadG/mmWave

RaspAP 讓樹莓派(Raspberry Pi)變成無線網路主機

RaspAP 讓樹莓派(Raspberry Pi)變成無線網路主機

一個支援 OpenVPN,內建去除廣告功能,可以拿來當作橋接器(Bridged),並且支援 802.11ac 5GHz,還可以自行客製化功能,以及顯示各種美麗好看實用的 WiFi AP , 現在要個好幾張小朋友吧,如果是實驗室,我自己很愛用 Raspberry Pi 來做各種應用,RaspAP是我推薦的好應用之一

RaspAP Dashboard

官網連結:https://raspap.com/

快速安裝指南

先確認自己的系統是用 Raspberry Pi OS,https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-32-bit,j然後先快速更新一下自己

 sudo apt-get update
 sudo apt-get full-upgrade
 sudo reboot

然後就可以使用指令下載並且安裝 RaspAP

curl -sL https://install.raspap.com | bash

安裝的過程中,可以修改路徑或是直接按照基本參數即可,安裝完畢後會重啟系統,就會自動運行

透過網頁設定 RaspAP

系統重新開機後,在瀏覽器中輸入 localhost ,並且打入預設的帳密, admin / secret ,即可以像是用一般 WIFI AP 一樣,去設定相關的參數了。

進階設定以及變成 Sponsors

如果你是別家 Linux 的系統,或是你需要另外安裝 php、dhcp套件,或是想要放在不同的 web 目錄的,都需要來這邊找尋一下答案

https://docs.raspap.com/manual/

https://github.com/sponsors/RaspAP

資料來源:樹莓派4變身5GHz多功能路由器RaspAP免費安裝及開啟802.11.ac技巧 Raspberry Pi 4【中文字幕】
Cov-19 疫情下的幼兒園,家長接送策略,導入AI的無接觸自動唱名系統

Cov-19 疫情下的幼兒園,家長接送策略,導入AI的無接觸自動唱名系統

翰科教育,夏恩國際幼兒園,開幕

最近接到一個很有意義的任務,一個大型幼兒園提出,最近Cov-19的疫情下,都不准家長進入幼兒園,也想要減少家長來接送小孩時候的接觸,不知道有沒有甚麼好的科技手段可以解決在Cov-19的疫情下,讓家長不用說話也不用接觸,並且來接小孩的時候,幼兒園就可以知道,是那位小朋友要出去?

分析問題如下:

  • Cov-19的疫情下,不希望過多的接觸
  • 最好可以家長免下車,幼兒園就可以知道那位小朋友的家長來接送了
  • 成本要低,並且不要為了解決一個家長接送的問題,搞得幼兒園需要處理很多事情,讓流程反而複雜化了

解方如下:

  • 利用家長卡(RFID)可以不用接觸,就可以得知是那位孩童的家長到了
  • 利用AI語音合成,當家長卡靠卡的時候,利用Microsoft的語音合成服務,提供自然且流暢的語音,提醒幼兒園那位小朋友的家長來了

家長接送樁,相關硬體準備如下:

廣播主機,家長接送區的靠卡行動樁,以及家長卡,蜂鳴器(喇叭)、NFC讀卡機

家長接送樁,相關軟體規畫如下:

  • Google 合成語音
  • Microsoft 合成語音
  • 訊飛 合成語音
  • Web Server 接收指令
  • Web Client 發送指令
  • 資料庫 家長與學生的資料庫

家長接送樁,作法如下:

  1. 建立家長與學童的資料庫,建立其對應關係
  2. 將學童的呼叫語音,透由AI程式預先合成自然且流暢的語音,並且放於廣播主機中
  3. 撰寫家長接送樁的RFID(NFC)的讀卡程式,並且透過內部網路,發送讀取到的卡片資訊傳送到廣播主機上頭
  4. 廣播主機對應資訊,並且透過音響廣播到教室區

採用家長接送樁主機的好處:

  • 全程不用下車,也不用接觸物品,人員,靠卡就可以呼叫小朋友出來
  • 節省人力,無論是刮風下雨、大熱天、颱風天等等,都可以讓家長接送樁,來幫忙家長服務
  • 可靠性佳,不用怕認錯人,也不用怕小朋友被壞人接走
  • 成本低,一套設備下來,包含備援,準備兩組設備也不到一個人的月薪

夏恩英語FB

夏恩幼兒園 林口翰科旗艦校 最具世界競爭高度的國際級幼兒園

翰科教育林口國際幼兒園

妳也可以用小米手環呼叫小朋友

怎麼把門禁卡變手環

Raspberry pi 如何使用 ACR122U NFC Reader

Raspberry pi 如何使用 ACR122U NFC Reader

ACS-ACR122U-NFC-Reader

最近更新 ACR122 NFC Reader 到了 ACR122U NFC Reader (A9) 最新版本,發現之前的 Driver 不能使用了,所以重新記錄一下,如何在 Raspberry Pi 的 Raspbian OS 上頭安裝 ACR122U 的驅動程式(Driver),先決條件要是 Raspberry Pi model 2B 以上,以及 2015 Debian Wheezy, kernel 3.18 以上。

我這一次的專案是需要用在幼兒園的家長接送的情境上,身為家長一定都覺得老師的記憶力超好,不管是幼幼班、幼兒園還是國小低年級學生,老師都需要負責學生的接送,但我個人上了年紀後能記得的只有自己的名字,所以就協助我本次的業主,設計了一套幼兒園放學時的自動廣播系統,當然最酷的是可以使用我的小米手環5 NFC或是小米手環6 NFC版本,請參考小米手環6 NFC版本,解放了我的口袋以及雙手,這個幼兒園廣播系統其流程如下

  1. 免下車,可以直接靠卡感應
  2. 透過 Wifi 連結幼兒園的主機
  3. 透過 AI 合成語音,並且廣播學生的回家的資訊
  4. 老師聽到後,帶領學生到接送區域

接下來我們就直接進行安裝的指令,首先進行更新

sudo apt-get update
sudo apt-get upgrade

安裝周邊的依賴

sudo apt-get -y install subversion autoconf debhelper flex libusb-dev libpcsclite-dev libpcsclite1 libccid pcscd pcsc-tools libpcsc-perl libusb-1.0-0-dev libtool libssl-dev cmake checkinstall

到 github.com 去下載 libnfc 程式碼安裝

wget https://github.com/nfc-tools/libnfc/releases/download/libnfc-1.7.0-rc7/libnfc-1.7.0-rc7.tar.gz

解壓縮

tar -xvzf libnfc-1.7.0-rc7.tar.gz
cd libnfc-1.7.0-rc7

設定環境以及開始安裝 libnfc

./configure --with-drivers=acr122_usb
make
sudo make install

到了這邊就安裝完成了,接下來可以利用 nfc-list 檢查一下,不過要先安裝好 nfc-list ,指令如下

sudo sh -c "echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf"
sudo ldconfig
sudo nfc-list

參考資料
ACR122U NFC USB READER ON A RASPBERRY PI