【学习任务一】获取网络摄像机rtsp地址
1、查看配置的光盘文档,没有发现。
用户手册中只提及rtsp端口号:554,失败。
2、浏览器访问摄像机配置
看到同上内容,失败。 此时,创客无畏的探索精神被点燃,失败次数越多,冲劲就越足。
3、通过ONVIF Device Test Tool获取RTSP地址及播放视频
通过以上教程进行操作,之前几步操作没有问题,能够获取硬件信息。
但到获取rtsp地址,无法正常进行。
失败 4、使用ONVIF Device Manage工具 将摄像机ONVIF登陆校验“关闭”后,可继续进行,但到加载“NVT”时,软件出现闪退现象。
5、依靠网络查找,遍寻不到。
https://jingyan.baidu.com/article/295430f19b01bf0c7e0050d2.html
英飞拓、大华、海康品牌的网络摄像机rtsp地址,并未找到Hisome。
失败
6、利用VLC media player播放器,一个个去利用网络找到的大品牌的网络摄像机rtsp地址。
成功
【学习任务二】利用Python程序测试网络摄像机rtsp地址 Python代码:
- import cv2,time
- classfier=cv2.CascadeClassifier("D:\\xml\\haarcascade_frontalface_alt2.xml")#定义分类器
- max_x=0
- max_y=0
- max_h=0
- max_w=0
- max=0
- color = (255,0,155)#设置人脸框的颜色
- #url = 'rtsp://admin:a12345678@172.20.0.81:554/1'#办公室
- url = 'rtsp://admin:111111@172.16.104.220:554/cam/realmonitor?channel=1&subtype=1'
- cap = cv2.VideoCapture(url)
- path_name="./img"
-
- i=0
- while(cap.isOpened()):
- # Capture frame-by-frame
- ret, frame = cap.read()
- # Display the resulting frame
- try:
- image=cv2.resize(frame, (800,600), interpolation=cv2.INTER_AREA)
- if i>15:
-
- i=0
-
- image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)#将当前桢图像转换成灰度图像(这里有修改)
-
- #如下三行是设定最小图像的大小
-
- #第三个参数表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸),
- faceRects = classfier.detectMultiScale(image, 1.3,5, cv2.CASCADE_SCALE_IMAGE,(8,8))#人脸检测
- print(len(faceRects))
- max=0
- if len(faceRects)>0:#如果人脸数组长度大于0
- for faceRect in faceRects: #对每一个人脸画矩形框
- x, y, w, h = faceRect
- if w*h>max :
- max=w*h
- max_x=x
- max_y=y
- max_h=h
- max_w=w
- now = time.localtime()
- img_name = r"%s/%s.jpg" % (path_name, time.strftime("%Y-%m-%d %H:%M:%S",now).replace(":","-") )
-
- print(img_name)
-
- image1 = image[max_y-10 : max_y + max_h + 10, max_x - 10: max_x + max_w + 10]
-
- cv2.imwrite(img_name, image1,[int(cv2.IMWRITE_PNG_COMPRESSION), 9])
-
-
- cv2.rectangle(image, (max_x, max_y), (max_x+max_w, max_y+max_h), color,2)#矩形的两个点(左上角与右下角),颜色,线的类型(不设置就
- else:
- print(i)
- i=i+1
- cv2.imshow('frame',image)
- except:
- print("False")
- cap = cv2.VideoCapture(url)
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- # When everything done, release the capture
- cap.release()
- cv2.destroyAllWindows()
复制代码
因角度、远近及使用分类器的原因,识别学生时,两分钟内只识别到两个人脸。 人脸在摄像头前,识别效果还可以。但当人脸侧向一边时,识别效果差。
演示视频:
【学习任务三】OpenVINO加速推理
修改face_recognition_demo.py
- @staticmethod
- def open_input_stream(path):
- log.info("Reading input data from '%s'" % (path))
- stream = path
- """try:
- stream = int(path)
- except ValueError:
- pass"""
-
- return cv2.VideoCapture('rtsp://admin:111111@172.16.104.220:554/cam/realmonitor?channel=1&subtype=1')
复制代码
运行命令:
python face_recognition_demo.py -m_fd C:/Users/zlzx/Documents/Intel/intel/face-detection-adas-0001/FP16-INT8/face-detection-adas-0001.xml -m_reid C:/Users/zlzx/Documents/Intel/intel/face-reidentification-retail-0095/FP16-INT8/face-reidentification-retail-0095.xml -m_lm C:/Users/zlzx/Documents/Intel/intel/landmarks-regression-retail-0009/FP16/landmarks-regression-retail-0009.xml -fg C:/Users/zlzx/Documents/Intel/OpenVINO/omz_demos_build/intel64/Release/classroom -i rtsp://admin:111111@172.16.104.220:554/cam/realmonitor?channel=1
演示视频:
|