模型部署完成后会出现下载SDK的按钮,点击按钮下载SDK并保存好SDK。
跟着教程,完成安装:点此链接
树莓派4b是Linux arm64的架构,点击对应的链接进行下载。
下载完成之后通过SecureFX软件将该压缩包传到树莓派并解压;解压完成后的目录结构如下所示:
├── easyedge-iec
├── easyedge-iec-setup.sh
├── etc
│ └── easyedge-iec.yml
└── readme.txt
解压完成后,通过终端进入该目录执行一下命令进行安装(前提是以root权限):
bash ./easyedge-iec-setup.sh install
安装完成之后就可以通过工程师站的浏览器访问边缘控制台。
登录进入控制台,就可以用之前下载的SDK发布服务了。
import time
import requests
import cv2
import pymysql
import threading
url = "http://127.0.0.1:24405/" # 边缘计算节点的地址
params = {'threshold': 0.1}
# 连接数据库
conn = pymysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="123456",
database="image_data"
)
cursor = conn.cursor()
# 向边缘计算服务发送请求
def detect_and_send_image(url, params, frame):
# binary_image = image_to_base64(frame)
# 将图像数据转换为二进制格式
# binary_image = cv2.imencode('.jpg', frame)[1].tobytes()
# response = requests.post(url,params=params, data=binary_image)
cv2.imwrite("tmp.jpg", frame)
with open('./tmp.jpg', 'rb') as f:
img_data = f.read()
print(img_data)
result = requests.post(
url=url, # 请确认IP地址是否正确
params=params,
data=img_data)
# 处理图像检测接口的响应,这里可以根据需要进行进一步的处理
data = result.json()
print("图像检测结果:", data)
# 解析resp 获取result、score
confidence = data["results"][0]["confidence"]
score = data["results"][0]["score"]
label = data["results"][0]["label"]
try:
sql_insert = """insert into test(confidence, score,label) values(%f,%f,%s)"""
cursor.execute(sql_insert, (confidence, score, label))
conn.commit() # 提交请求,不然不会插入数据
except:
print("数据库存储异常")
# 数据存储至数据库
# def save_data(confidence, score, label):
if __name__ == '__main__':
# 读取视频文件或摄像头
video_capture = cv2.VideoCapture(0)
# t = time.time()
# t1 = threading.Thread(target=detect_and_send_image().func, args=(url,params))
# t1.start()
# t1.join()
while True:
ret, frame = video_capture.read()
if not ret:
break
# 发送图像数据到图像检测接
if cv2.waitKey(1) & 0xFF == ord('w'): # 按住w拍照
threading.Thread(target=detect_and_send_image, args=(url, params, frame)).start()
# t = time.time() # 更新结果时间
cv2.imshow('Video', frame)
# 按'q'键退出视频捕捉
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video_capture.release()
cv2.destroyAllWindows()