RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于iMX6ULL處理器的監(jiān)控平臺體驗--米爾MYD-Y6ULX-V2開發(fā)板

米爾電子 ? 2023-05-25 10:49 ? 次閱讀

本篇測評由電子發(fā)燒友的優(yōu)秀測評者“HonestQiao”提供。

01.

評測規(guī)劃


米爾MYD-Y6ULX-V2開發(fā)板上帶有SIM卡的插槽,于是結(jié)合我之前的使用米爾板子的經(jīng)驗,想制作一個遠(yuǎn)程監(jiān)控的平臺。
不過通過硬件手冊了解到,板子自身不帶有LTE模塊,需要安裝一個Mini PCI-E接口的LTE 模塊才能夠使用4G網(wǎng)絡(luò),且僅支持僅支持移遠(yuǎn)EC20型號。
而手頭暫時沒有這個型號的LTE模塊,于是退而且其次,使用有線網(wǎng)絡(luò)來進(jìn)行數(shù)據(jù)的傳輸。
這塊板子的full鏡像,提供了通過V4L對USB攝像頭的支持,直接插接上USB攝像頭就能使用了。
最終,具體的評測規(guī)劃如下:

使用米爾MYD-Y6ULX-V2開發(fā)板提供攝像頭監(jiān)控數(shù)據(jù)

使用OLED呈現(xiàn)開發(fā)板的設(shè)備負(fù)載、IP地址和服務(wù)信息

使用PyQT5開發(fā)監(jiān)控顯示界面

使用opencv進(jìn)行人臉識別檢測

02.

硬件準(zhǔn)備

使用USB連接的攝像頭即可

  • SSD1306 OLED

MYD-Y6ULX-V2開發(fā)板支持IIC和SPI通訊,我手頭正好有合適的IIC通訊的SSD1306 OLED用上556c655a-fa8f-11ed-ba01-dac502259ad0.jpg?

  • USB2TTL

開始使用MYD-Y6ULX-V2開發(fā)板的時候,需要使用串口連接做一些基礎(chǔ)的設(shè)置55a5b13e-fa8f-11ed-ba01-dac502259ad0.jpg?

  • 米爾MYD-Y6ULX-V2開發(fā)板

將以上設(shè)備都連接到開發(fā)板以后,具體如下:55d6337c-fa8f-11ed-ba01-dac502259ad0.jpg 具體的配置連線,后續(xù)會進(jìn)行說明;具體的接口分布如下:56062f46-fa8f-11ed-ba01-dac502259ad0.png MYD-Y6ULX-V2開發(fā)板默認(rèn)已經(jīng)少錄了系統(tǒng),但是屬于較老的版本,我們需要自己燒錄為最新的版本。
根據(jù)使用手冊,選用如下的鏡像,并按照手冊設(shè)定好啟動方式,進(jìn)行燒錄更新。

  • 鏡像類型:

FullEMMC5644cd5a-fa8f-11ed-ba01-dac502259ad0.png?

  • 燒錄方式:

述鏡像需要先解壓,然后使用官方提供的Win32 Disk Imager燒錄到SD卡,然后接到開發(fā)板上5677c9e4-fa8f-11ed-ba01-dac502259ad0.jpg?

  • 撥碼開關(guān)

MYD-Y6ULX-V2開發(fā)板有幾個不同的子型號,以及設(shè)置不同的啟動方式的時候,需要通過板載的撥碼開關(guān)來控制。我評測的開發(fā)板,為eMMC版本,所以更新選擇TF Card啟動(eMMC版本)模式,具體如下:56ae8984-fa8f-11ed-ba01-dac502259ad0.png?

  • 連接調(diào)試串口:

參考之前的接口分布,使用USB2TTL連接開發(fā)板的調(diào)試串口和電腦56cf0c22-fa8f-11ed-ba01-dac502259ad0.png 在電腦端,使用串口終端工具進(jìn)行連接:Windows系統(tǒng)可以視同使用Putty或者mobaxterm,Linux和macOS系統(tǒng)可以使用minicom或者picocom我用的是macOS,所以使用picocom連接:56f21f3c-fa8f-11ed-ba01-dac502259ad0.png?

  • 燒錄:

關(guān)機(jī)裝狀態(tài)下,插好SD卡后,重新上電開機(jī),就會自動啟動,并進(jìn)刷機(jī)狀態(tài),并輸出正在升級的提示信息。升級需要一段時間,請耐心等待。

  • 驗證:

更新成功后,斷電,然后將撥碼開關(guān)設(shè)置回eMMC啟動模式,重啟上電開機(jī),最終會看到如下的啟動信息,其中NXP i.MX Release Distro 5.10-gatesgarth表示已經(jīng)更新到了當(dāng)前系統(tǒng):5729f876-fa8f-11ed-ba01-dac502259ad0.png?

在更新完畢后,需要對開發(fā)板進(jìn)行一些基礎(chǔ)的設(shè)置,以方便后續(xù)進(jìn)一步操作。

  • eth0、eth1的IP設(shè)置:

參考:7.2. 通用網(wǎng)絡(luò)配置

使用vi修改文件:/etc/systemd/network/10-static-eth0.network使用vi修改文件:/etc/systemd/network/11-static-eth1.network靜態(tài)配置示例如下:

[Match]Name=eth0[Network]Address=192.168.1.177/24Gateway=192.168.1.1DNS=192.168.1.1

動態(tài)配置示例如下:

[Match]Name=eth0
[Network]DHCP=yesEOF

配置后,可以重啟網(wǎng)絡(luò)服務(wù),然后查看結(jié)果:

service systemd-networkd restartifconfig

5757c922-fa8f-11ed-ba01-dac502259ad0.png?

時區(qū)設(shè)置:

參考:ntpd時鐘同步服務(wù)使用vi修改:/etc/sysconfig/clock

ZONE="Asia/Shanghai"UTC=trueARC=false

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ntpd對時設(shè)置

參考:ntpd時鐘同步服務(wù)使用vi修改:/etc/sysconfig/ntpd

# Drop root to id 'ntp:ntp' by default.OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"# Set to 'yes' to sync hw clock after successful ntpdateSYNC_HWCLOCK=yes #make no into yes; BIOS的時間也會跟著修改# Additional options for ntpdateNTPDATE_OPTIONS=""

使用vi修改:/etc/ntp.conf

重啟服務(wù)生效:

service ntpd restart
date

查看結(jié)果:

578d6d20-fa8f-11ed-ba01-dac502259ad0.png?

遠(yuǎn)程連接:

以上設(shè)置完成后,就可以在其他電腦上,使用ssh遠(yuǎn)程連接,來連接開發(fā)板了。然后,在其他電腦上,使用ssh工具進(jìn)行遠(yuǎn)程連接:

Windows系統(tǒng)可以視同使用Putty或者mobaxterm,Linux和macOS系統(tǒng)可以直接使用ssh命令



米爾為MYD-Y6ULX-V2開發(fā)板提供了詳細(xì)的開發(fā)環(huán)境建立的指導(dǎo),參考《MYD-Y6ULX_Linux軟件開發(fā)指南.pdf》即可完成所需要的工作。

開發(fā)環(huán)境需要在一個Ubuntu環(huán)境下建立,而不是開發(fā)板自身的系統(tǒng)上。

Ubuntu開發(fā)環(huán)境建立

從開發(fā)板的資料包頁面,下載光盤鏡像:http://down.myir-tech.com/MYD-Y6ULX/,也可以從百度網(wǎng)盤下載相應(yīng)的資料包。

首先安裝基礎(chǔ)工具包,并進(jìn)行工作目錄的構(gòu)建:

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev
mkdir -p ~/MYD-Y6ULX-develexport DEV_ROOT=~/MYD-Y6ULX-devel
sudo mkdir /media/cdimagesudo mount -o loop ~/Downloads/MYD-Y6ULX_L5.10.9_20220826.iso /media/cdimagecp -r /mnt/cdimage/02_Images $DEV_ROOT/cp -r /mnt/cdimage/03_Tools $DEV_ROOT/cp -r /mnt/cdimage/04_Sources $DEV_ROOT/

安裝編譯鏈編譯鏈:根據(jù)手冊的說明,使用full系統(tǒng)的應(yīng)用工具鏈,以便進(jìn)行應(yīng)用的交叉編譯

57b4fdb8-fa8f-11ed-ba01-dac502259ad0.png

cd $DEV_ROOT/03_Tools/Tools_chain/bash fsl-imx-fb-glibc-x86_64-myir-image-full-cortexa7t2hf-neon-myd-y6ull14x14-toolchain-5.10-gatesgarth.sh
. /opt/test5.10/environment-setup-cortexa7t2hf-neon-poky-linux-gnueabi$CC -v

安裝編譯工具鏈時的提示:安裝到/opt/test5.10目錄

57e91ab2-fa8f-11ed-ba01-dac502259ad0.png

安裝完成后的驗證:

5803f454-fa8f-11ed-ba01-dac502259ad0.png


要使用到攝像頭,并對外提供監(jiān)控數(shù)據(jù),使用mjpg_streamer最合適了。

在網(wǎng)上也有不少 iMX6移植原版mjpeg-streamer的文章可供參考,不過我查看后大受誤導(dǎo)。

直接使用我之前的版本,進(jìn)過簡單的修改,就能使用MYD-Y6ULX-V2開發(fā)板的編譯工具鏈進(jìn)行成功編譯了。

mjpg_streamer分支版本:https://github.com/jacksonliam/mjpg-streamer

下載地址:https://github.com/jacksonliam/mjpg-streamer/archive/refs/heads/master.zip

交叉編譯:

完成編譯后,結(jié)果如下:

588ecade-fa8f-11ed-ba01-dac502259ad0.png?

  • 帶so文件部署

使用scp將以上文件拷貝到開發(fā)板

ssh root@192.168.1.177 "mkdir ~/mjpeg_server/"scp mjpg_streamer root@192.168.1.177:~/mjpeg_server/scp *.so root@192.168.1.177:~/mjpeg_server/


  • mjpeg_streamer測試

將mjpg_streamer部署到開發(fā)板上以后,就可以遠(yuǎn)程連接到開發(fā)板進(jìn)行測試了。

查看攝像頭設(shè)備

查看設(shè)備指令:v4l2-ctl --list-devices

58ce7ad0-fa8f-11ed-ba01-dac502259ad0.png

從上圖可以看出,識別到了連接的USB攝像頭HIK 720P Camera,對應(yīng)的第一個設(shè)備地址/dev/video2可以被mjpg_streamer調(diào)用。


  • 啟動mjpg_streamer測試:

cd ~/mjpeg_server./mjpg_streamer -i "input_uvc.so -d /dev/video2 -n -r 640x480 -f 10" -o "output_http.so -w ./"

默認(rèn)啟動的mjpg_streamer是可以任意訪問的,這很危險。但可以使用-c 用戶名:密碼來設(shè)置一個訪問密碼,可以參考下圖中的指令:

58f1c800-fa8f-11ed-ba01-dac502259ad0.png?

  • 訪問測試:

現(xiàn)在在其他電腦上,可以直接通過瀏覽器訪問開發(fā)板上提供的攝像頭數(shù)據(jù)流在我的環(huán)境下,訪問地址為:http://192.168.1.177:8080/?action=stream

591d3166-fa8f-11ed-ba01-dac502259ad0.png

我所使用的SSD1306 OLED使用IIC通訊的,之前我也使用過一個Linux環(huán)境下的ssd1306工具。
經(jīng)過嘗試,這個工具可以使用MYD-Y6ULX-V2開發(fā)板的編譯工具鏈進(jìn)行編譯和使用。

  • 下載地址:https://github.com/armlabs/ssd1306_linux/archive/refs/heads/master.zip
  • 交叉編譯

修改配置文件 Makefile,具體修改如下:

59aa49e8-fa8f-11ed-ba01-dac502259ad0.png

修改完成后,進(jìn)行編譯,編譯完成后,部署ssd1306_bin一個文件即可

makels -l ssd1306_bin
# 部署文件到開發(fā)板scp ssd1306_bin root@192.168.1.177:~/mjpeg_server/

  • 硬件連接

參考手冊上的說明,進(jìn)行硬件的連接。我所使用的OLED使用到了VDD_5V、DGND、I2C2_SCL、I2C2_SDA。務(wù)必要注意所使用的OLED的電壓,有的只能使用3.3V,使用5V會完蛋。

56062f46-fa8f-11ed-ba01-dac502259ad0.png

5a27e5ec-fa8f-11ed-ba01-dac502259ad0.png

5a569c20-fa8f-11ed-ba01-dac502259ad0.jpg

OLED顯示測試

上述硬件連接完成后,就可以遠(yuǎn)程連接到開發(fā)板,進(jìn)行測試了。

查看OLED設(shè)備是否成功硬件連接,通常IIC地址為3c:i2cdetect -y -a 1

5a880bf2-fa8f-11ed-ba01-dac502259ad0.png

然后,進(jìn)行顯示測試

cd ~/mjpeg_server./ssd1306_bin -n 1 -I 128x64./ssd1306_bin -n 1 -c./ssd1306_bin -n 1 -r 0./ssd1306_bin -n 1 -x 0 -y -0 -m "Hello World!\n\nI'm MYD-Y6ULX-V2."

5aaaac3e-fa8f-11ed-ba01-dac502259ad0.jpg

完成以上兩項工作,開發(fā)板部分的基礎(chǔ)工作就完成了,可以寫一個啟動腳本來進(jìn)行控制,具體如下:
為了安全訪問,在腳本中設(shè)置了訪問的用戶名和密碼,可以根據(jù)實際需要進(jìn)行修改。
以下的操作,都需要遠(yuǎn)程連接到開發(fā)板上進(jìn)行。

服務(wù)啟動腳本:~/mjpeg_server/mjpeg_server_start.sh

#!/bin/bash
cd "${0%/*}"
killall mjpg_streamer >/dev/nul 2>&1device=$(v4l2-ctl --list-devices | grep 'Camera' -A1 | grep /dev/video | head -1 | awk '{print $NF}')./mjpg_streamer -i "input_uvc.so -d $device -n -r 640x480 -f 10" -o "output_http.so -w ./ -c test:test123" &
./ssd1306_bin -n 1 -I 128x64./ssd1306_bin -n 1 -r 0
let count=0while truedo nowdate="$(date '+%Y-%m-%d %H:%M:%S')" load="$(w | head -1 | sed -e 's/^.*average: //' | cut -d ',' -f 1)" temp=$(echo "scale=1;$(cat /sys/devices/virtual/thermal/thermal_zone0/temp)/1000" | bc) ipstr=" ${nowdate}\n L:${load} T:${temp}" if [[ $count -gt 0 ]];then ./ssd1306_bin -n 1 -x 0 -y 0 -m "${ipstr}" else ./ssd1306_bin -n 1 -c ipstr="${ipstr}\n**-*-IP Address-*-**" i=0 for ip in $(ip addr show | grep -v "127.0.0.1" | awk -F'[ /]+' '{if($0 ~ / inet /) print $3;}') do let i=i+1 ipstr="${ipstr}\nIP${i}: ${ip}" done
ipstr="${ipstr}\nSRV: ip:8080/?action" ipstr="${ipstr}\n =stream"
echo -e "${ipstr}" ./ssd1306_bin -n 1 -x 0 -y 0 -m "${ipstr}" fi let count=count+1 if [[ $count -gt 15 ]];then let count=0 fi sleep 1done

開機(jī)啟動:

screen-Smjpeg_server/home/root/mjpeg_server/mjpeg_server_start.sh

配置完成后,就可以重新啟動開發(fā)板,OLED顯示屏上會顯示對應(yīng)的信息:

5ae776a0-fa8f-11ed-ba01-dac502259ad0.jpg

然后在電腦上,打開之前的訪問地址,進(jìn)行測試了。

MYD-Y6ULX-V2開發(fā)板的full環(huán)境支持使用QT5進(jìn)行應(yīng)用開發(fā),但實際使用中,需要屏幕配合。
我手頭沒有對應(yīng)的屏幕,所以這一步的工作,就在電腦上進(jìn)行,并使用PyQT5進(jìn)行開發(fā)。
具體要做的工作如下:

操作界面開發(fā)

mjpeg流讀取顯示

人臉識別

其中人臉識別部分,參考了:* opencv快速入門人臉檢測與人臉識別

涉及到具體的代碼的開發(fā),我就直接上代碼了,感興趣的同學(xué),可以查看代碼進(jìn)行學(xué)習(xí)。

from PyQt5 import QtWidgetsfrom PyQt5.QtGui import QImage, QPixmap, QKeySequencefrom PyQt5.QtCore import QThreadimport sys, cv2, threading, random, signalimport numpy as npimport socketimport time, datetimeimport requestsfrom requests.auth import HTTPBasicAuth
# 0-攝像頭 1-socket 2-from remoteCAMERA_SOURCE = 2CAMERA_LOCAL_INDEX = 0 # 如果使用本地攝像頭,則表示其videoN的NCAMERA_SOCKET_PORT = 8888 # 如果視同socket,設(shè)置端口# CAMERA_REMOTE_URL = "http://192.168.1.15:8080/live.mjpg"CAMERA_REMOTE_URL = "http://192.168.1.177:8080/?action=stream"CAMERA_SOURCE_NAME = ["USB攝像頭", "網(wǎng)絡(luò)圖像流", "米爾MYD-Y6ULX-V2攝像頭監(jiān)控"]AUTH_CONFIG = {"user":"test","pass":"test123"}FACE_DETECTION = True
if FACE_DETECTION == True: # https://blog.csdn.net/FontThrone/article/details/105314973 # https://github.com/FontTian/DS-Exhibitio face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') face_cascade.load('./haarcascades/haarcascade_frontalface_default.xml') face_box_colors = [ (255, 0, 0), (0, 255, 0), (0, 255, 0), (255, 255, 0), (255, 0, 255), (0, 255, 255), (255, 128, 128), (128, 255, 128), (128, 255, 128), (255, 255, 128), (255, 128, 255), (128, 255, 255) ]
# 應(yīng)用定義app = QtWidgets.QApplication(sys.argv)window_w, window_h = 640, 480 # 窗口寬度和高度scale = 0.58 # 視頻信息寬高比
# 界面定義Form = QtWidgets.QWidget()Form.setWindowTitle(CAMERA_SOURCE_NAME[CAMERA_SOURCE])Form.resize(window_w, window_h)
# 窗口大小改變時自動調(diào)整按鈕def windowResize(self): global window_w, window_h, scale window_w = Form.width() # 窗口寬度 window_h = Form.height() # 窗口高度 label.setGeometry(0,0, window_w, int(window_w*scale)) # 調(diào)整 QLabel 尺寸 btn1.setGeometry(10, window_h-40,70,30) # 調(diào)整按鈕位置 btn2.setGeometry(80, window_h-40,70,30) # 調(diào)整按鈕位置 btn3.setGeometry(window_w - 80, window_h-40,70,30) # 調(diào)整按鈕位置
Form.resizeEvent = windowResize # 設(shè)置窗口大小改變時觸發(fā)
# 關(guān)閉應(yīng)用時的處理ocv = True # 設(shè)置是否處理視頻def closeOpenCV(self): global ocv, output ocv = False # 關(guān)閉窗口時,停止處理視頻 print("關(guān)閉程序") try: output.release() # 關(guān)閉窗口時,釋放視頻處理資源 except: pass
Form.closeEvent = closeOpenCV # 窗口關(guān)閉時觸發(fā)
label = QtWidgets.QLabel(Form)label.setGeometry(0,0, window_w, int(window_w*scale)) # 設(shè)置 QLabel 的位置和大小
# 存儲文件時使用的文件名def rename(): # return str(random.random()*10).replace('.','') return datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
photo = False # 按下拍照按鈕時,設(shè)置處于拍照狀態(tài)
# 按下拍照按鈕時的處理def takePhoto(): global photo photo = True # 設(shè)定拍照狀態(tài)為True print("馬上拍照")
btn1 = QtWidgets.QPushButton(Form)btn1.setGeometry(10, window_h-40,70,30) # 設(shè)置拍照按鈕的位置和大小btn1.setText('拍照')btn1.clicked.connect(takePhoto) # 按下拍照按鈕時觸發(fā)
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 設(shè)置視頻中的存儲格式recorderType = False # 按下錄像按鈕時,設(shè)置處于錄像狀態(tài)
# 按下錄像按鈕時的處理def recordVideo(): global recorderType, output if recorderType == False: # 如果按下按鈕時沒有在錄像,則開始錄像 # 設(shè)定存儲的視頻信息 output = cv2.VideoWriter(f'videos/{rename()}.mp4', fourcc, 20.0, (window_w, int(window_w*scale))) recorderType = True # 設(shè)置正在錄制狀態(tài) btn2.setGeometry(80, window_h-40,200,30) # 根據(jù)顯示內(nèi)容設(shè)置大小 btn2.setText('錄像中,點擊停止保存') else: # 如果按下按鈕時正在在錄像,則停止錄像 output.release() # 釋放視頻存儲資源 recorderType = False # 設(shè)置非錄制狀態(tài) btn2.setGeometry(80, window_h-40,70,30) # 根據(jù)顯示內(nèi)容設(shè)置大小 btn2.setText('錄像')
btn2 = QtWidgets.QPushButton(Form)btn2.setGeometry(80, window_h-40,70,30) # 設(shè)置錄像按鈕的位置和大小btn2.setText('錄像')btn2.clicked.connect(recordVideo) # 按下錄像按鈕時觸發(fā)
# 按下退出按鈕時的處理def quitApp(): global video_server print("退出程序") closeOpenCV(False) app = QtWidgets.QApplication.instance() app.quit()
btn3 = QtWidgets.QPushButton(Form)btn3.setGeometry(window_w-80, window_h-40,70,30) # 設(shè)置退出按鈕的位置和大小btn3.setText('退出')btn3.clicked.connect(quitApp) # 按下退出按鈕時觸發(fā)
# 人臉識別處理def face_detection_process(frame): if FACE_DETECTION == True: face_count = 0 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x, y, w, h) in faces: color = face_box_colors[face_count % len(face_box_colors)] cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2) face_count+=1
# 此處省略本項目用不到的數(shù)百行...
# mjpeg數(shù)據(jù)流處理服務(wù)def mjpeg_remote_server(): global window_w, window_h, scale, photo, output, recorderType, ocv
r = requests.get(CAMERA_REMOTE_URL, auth=HTTPBasicAuth(AUTH_CONFIG["user"], AUTH_CONFIG["pass"]), stream=True) if(r.status_code != 200): print("Received unexpected status code {}".format(r.status_code)) return
count = 0 is_first = False recv_data_mjpeg = bytes() for recv_data in r.iter_content(chunk_size=1024): if not ocv: break
count+=1 if count % 10000 == 1: print("\trecv stream success") recv_data_mjpeg += recv_data
a = recv_data_mjpeg.find(b'\xff\xd8') b = recv_data_mjpeg.find(b'\xff\xd9') if not (a != -1 and b != -1): continue
mjpg_data_raw = recv_data_mjpeg[a:b+2] recv_data_mjpeg = recv_data_mjpeg[b+2:]
mjpeg_data = np.frombuffer(mjpg_data_raw, 'uint8') img = cv2.imdecode(mjpeg_data, cv2.IMREAD_COLOR) # cv2.imshow('stream', img)
if not is_first: is_first = True sp = img.shape sz1 = sp[0] #height(rows) of image sz2 = sp[1] #width(colums) of image sz3 = sp[2] #the pixels value is made up of three primary colors print('網(wǎng)絡(luò)圖像: width=%d \theight=%d \tnumber=%d' % (sz1, sz2, sz3)) scale = sz1/sz2
frame = cv2.resize(img, (window_w, int(window_w*scale))) # 改變幀大小 if photo == True: name = rename() # 設(shè)置文件名稱 name_save = f'photos/{name}.jpg' print("照片存儲:%s" % name_save) cv2.imwrite(name_save, frame) # 存儲圖片 photo = False # 拍照完,設(shè)置非拍照狀態(tài) if recorderType == True: output.write(frame) # 按下錄像按鈕時,輸出到存儲文件
face_detection_process(frame) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 設(shè)置為 RGB height, width, channel = frame.shape bytesPerline = channel * width img = QImage(frame, width, height, bytesPerline, QImage.Format_RGB888) label.setPixmap(QPixmap.fromImage(img)) # 顯示

if CAMERA_SOURCE == 2: video_server = QThread() video_server.run = mjpeg_remote_server video_server.start()
Form.show()sys.exit(app.exec_())

設(shè)置好開發(fā)板的MJPEG視頻地址,然后啟動上面的python程序,就能打開如下界面了:

5b272a02-fa8f-11ed-ba01-dac502259ad0.png?

如果畫面中有人臉,就會自動識別了:

5b837a3c-fa8f-11ed-ba01-dac502259ad0.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19259

    瀏覽量

    229651
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97371
收藏 人收藏

    評論

    相關(guān)推薦

    人臉疲勞檢測應(yīng)用-米爾基于RK3576核心/開發(fā)板

    本文將介紹基于米爾電子MYD-LR3576開發(fā)板米爾基于瑞芯微RK3576開發(fā)板)的人臉疲勞檢測方案測試。
    的頭像 發(fā)表于 12-20 08:06 ?120次閱讀
    人臉疲勞檢測應(yīng)用-<b class='flag-5'>米爾</b>基于RK3576核心<b class='flag-5'>板</b>/<b class='flag-5'>開發(fā)板</b>

    米爾RK3576開發(fā)板評測】+項目名稱【米爾RK3576開發(fā)板評測】一個視頻和你共同認(rèn)識一下米爾RK3576開發(fā)板

    收到米爾RK3576開發(fā)板后,也對米爾RK3576開發(fā)板進(jìn)行了了解,米爾這款開發(fā)板真的很不錯,下
    發(fā)表于 12-18 20:50

    如何用OpenCV進(jìn)行手勢識別--基于米爾全志T527開發(fā)板

    本文將介紹基于米爾電子MYD-LT527開發(fā)板米爾基于全志T527開發(fā)板)的OpenCV手勢識別方案測試。摘自優(yōu)秀創(chuàng)作者-小火苗
    的頭像 發(fā)表于 12-13 08:04 ?601次閱讀
    如何用OpenCV進(jìn)行手勢識別--基于<b class='flag-5'>米爾</b>全志T527<b class='flag-5'>開發(fā)板</b>

    ST×米爾STM32MP25x線下培訓(xùn)會

    STM32MP257D是ST推出的搭載了雙核Cortex-A35@1.5GHz和Cortex-M33@400MHz的微處理器。米爾電子基于STM32MP257D推出了MYD-LD25X開發(fā)板
    的頭像 發(fā)表于 12-06 01:00 ?204次閱讀
    ST×<b class='flag-5'>米爾</b>STM32MP25x線下培訓(xùn)會

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開發(fā)板對比

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開發(fā)板對比
    的頭像 發(fā)表于 11-28 14:31 ?318次閱讀
    【迅為電子】i.MX<b class='flag-5'>6</b>UL和i.MX<b class='flag-5'>6ULL</b>芯片區(qū)別與<b class='flag-5'>開發(fā)板</b>對比

    追加名額丨米爾瑞芯微RK3576開發(fā)板有獎試用

    米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3576應(yīng)用處理器MYD-LR3576開發(fā)板免費試用活動加碼啦~~米爾追加了
    的頭像 發(fā)表于 11-22 01:00 ?163次閱讀
    追加名額丨<b class='flag-5'>米爾</b>瑞芯微RK3576<b class='flag-5'>開發(fā)板</b>有獎試用

    【新品】i.MX6ULL工業(yè)嵌入式核心!NXP低功耗MPU,LCD顯示

    核心新品上市ECK20-6Y2XA系列核心是億佰特基于NXPCortex-A7內(nèi)核i.MX6ULL處理器精心設(shè)計的,采用郵票孔連接的低成
    的頭像 發(fā)表于 11-15 01:04 ?180次閱讀
    【新品】i.MX<b class='flag-5'>6ULL</b>工業(yè)嵌入式核心<b class='flag-5'>板</b>!NXP低功耗MPU,LCD顯示

    有獎丨米爾 瑞芯微RK3576開發(fā)板免費試用

    米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3576應(yīng)用處理器MYD-LR3576開發(fā)板免費試用活動來啦~~米爾提供了7塊價值849元的
    的頭像 發(fā)表于 11-12 01:00 ?300次閱讀
    有獎丨<b class='flag-5'>米爾</b> 瑞芯微RK3576<b class='flag-5'>開發(fā)板</b>免費試用

    米爾RK3576開發(fā)板特惠活動!

    近日,米爾電子發(fā)布基于瑞芯微RK3576核心開發(fā)板,RK3576作為國產(chǎn)熱門處理器,其高性能數(shù)據(jù)處理能力、領(lǐng)先的AI智能分析、強(qiáng)大的擴(kuò)展
    的頭像 發(fā)表于 11-12 01:00 ?253次閱讀
    <b class='flag-5'>米爾</b>RK3576<b class='flag-5'>開發(fā)板</b>特惠活動!

    米爾基于NXP iMX.93開發(fā)板的M33處理器應(yīng)用開發(fā)筆記

    資源MYD-LMX9X開發(fā)板米爾基于NXPiMX.93開發(fā)板)3.軟件資源Windows7及以上版本軟件:IAREmbeddedWorkbench4.板載固件調(diào)試
    的頭像 發(fā)表于 06-29 08:01 ?1341次閱讀
    <b class='flag-5'>米爾</b>基于NXP <b class='flag-5'>iMX</b>.93<b class='flag-5'>開發(fā)板</b>的M33<b class='flag-5'>處理器</b>應(yīng)用<b class='flag-5'>開發(fā)</b>筆記

    點擊參與米爾NXP i.MX 93開發(fā)板有獎試用

    米爾與NXP合作發(fā)布的新品基于NXPi.MX93應(yīng)用處理器MYD-LMX9X開發(fā)板免費試用活動來啦~~米爾提供了3塊價值678元的
    的頭像 發(fā)表于 06-13 08:02 ?523次閱讀
    點擊參與<b class='flag-5'>米爾</b>NXP i.MX 93<b class='flag-5'>開發(fā)板</b>有獎試用

    米爾NXP i.MX 93開發(fā)板的Qt開發(fā)指南

    1.概述Qt是一個跨平臺的圖形應(yīng)用開發(fā)框架,被應(yīng)用在不同尺寸設(shè)備和平臺上,同時提供不同版權(quán)版本供用戶選擇。米爾NXPi.MX93開發(fā)板
    的頭像 發(fā)表于 06-07 08:01 ?1730次閱讀
    <b class='flag-5'>米爾</b>NXP i.MX 93<b class='flag-5'>開發(fā)板</b>的Qt<b class='flag-5'>開發(fā)</b>指南

    免費!NXP i.MX 93開發(fā)板有獎試用

    米爾與NXP合作發(fā)布的新品基于NXPi.MX93應(yīng)用處理器MYD-LMX9X開發(fā)板免費試用活動來啦~~米爾提供了
    的頭像 發(fā)表于 05-23 08:01 ?721次閱讀
    免費!NXP i.MX 93<b class='flag-5'>開發(fā)板</b>有獎試用

    G2D圖像處理硬件調(diào)用和測試-基于米爾-全志T113-i開發(fā)板

    本篇測評由電子工程世界的優(yōu)秀測評者“jf_99374259”提供。本文將介紹基于米爾電子MYD-YT113i開發(fā)板的G2D圖像處理硬件調(diào)用和
    的頭像 發(fā)表于 04-12 08:01 ?664次閱讀
    G<b class='flag-5'>2</b>D圖像<b class='flag-5'>處理</b>硬件調(diào)用和測試-基于<b class='flag-5'>米爾</b>-全志T113-i<b class='flag-5'>開發(fā)板</b>

    ROS系統(tǒng)的智能車開發(fā)-基于米爾芯馳MYD-JD9X開發(fā)板

    本篇測評由電子工程世界的優(yōu)秀測評者“mameng”提供。本文將介紹基于米爾電子MYD-JD9X開發(fā)板的ROS系統(tǒng)智能車開發(fā)。目前實現(xiàn)ROS的方式主要有兩種:Ubuntu系統(tǒng)+ROS;U
    的頭像 發(fā)表于 01-26 08:01 ?919次閱讀
    ROS系統(tǒng)的智能車<b class='flag-5'>開發(fā)</b>-基于<b class='flag-5'>米爾</b>芯馳<b class='flag-5'>MYD</b>-JD9X<b class='flag-5'>開發(fā)板</b>
    RM新时代网站-首页