import sys
import cv2
import numpy as np
import imutils
import datetime
def test_lingeman():  # 识别黑烟camera = cv2.VideoCapture("")ret2, img2 = camera.read()frame1 = img2# frame=cv2.imread("2.jpeg")# prevframe = frameprevframe4 = np.array(frame1)cv2.namedWindow('result', 0)cv2.resizeWindow('result', 800, 500)prevframe3 = cv2.cvtColor(prevframe4, cv2.COLOR_RGB2GRAY)  # 先取一帧cap = cv2.VideoCapture("rtsp://admin:hn28099668@192.168.1.119:554/Streaming/Channels/102")# 获取视频帧的宽和高w = cap.get(cv2.CAP_PROP_FRAME_WIDTH)h = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)# 获取视频总帧数和fpscount = cap.get(cv2.CAP_PROP_FRAME_COUNT)fps = cap.get(cv2.CAP_PROP_FPS)# 视频保存# fourcc = cv.VideoWriter_fourcc('P', 'I', 'M', '1')# fourcc = cv.VideoWriter_fourcc(*'XVID')# 视频编码格式fourcc = cv2.VideoWriter_fourcc(*'mp4v')TimeS = datetime.datetime.now().strftime('%H%M%S%f')[0:7]nowtime = datetime.datetime.now().strftime('%Y%m%d_' + TimeS) + '.mp4'  # 视频文件名nowtimejp = datetime.datetime.now().strftime('%Y%m%d_' + TimeS) + '.jpg'  # 图片文件名tempAviFilejp = 'D:/lzk/pythonProject3/HN_Data/' + nowtimejp  # 保存图片的文件名tempAviFile = 'D:/lzk/pythonProject3/HN_Data/'+nowtime  # 保存的文件名jis = 200out = cv2.VideoWriter('D:/lzk/pythonProject3/HN_Data/'+nowtime, fourcc, fps,(int(w), int(h)), True)  # 保存一个视频while camera.isOpened():jis -= 1ret, img = camera.read()base = imgleft_point_x = 0right_point_x = 0top_point_y = 0bottom_point_y = 0frame = np.array(img)frame = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)frame = cv2.blur(frame, (5, 5))box = NULLglobal prevframe2nextframe = framediff = cv2.absdiff(prevframe3, nextframe)ret4, thresh4 = cv2.threshold(diff, 40, 80, cv2.THRESH_BINARY)# y, x = diff.shape[:-1]# frame = QImage(diff, x, y, QImage.Format_RGB888)# Ui_Dialog.setupUi.scene2.clear()  # 先清空上次的残留# self.pix = QPixmap.fromImage(frame)# self.scene.addPixmap(self.pix)k2 = np.ones((40, 40), np.uint8)# a,b,c,d=cv2.MinMaxLoc(frame,mask)# mean=cv2.Mean(frame,mask)k = np.ones((40, 40), np.uint8)opening = cv2.morphologyEx(thresh4, cv2.MORPH_OPEN, k)  # 开运算closing2 = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, k2)cnts = cv2.findContours(closing2.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts)ret, labels, status, centroids = cv2.connectedComponentsWithStats(closing2, connectivity=8)image_filtered = np.zeros_like(thresh4)for (i, label) in enumerate(np.unique(labels)):# 如果是背景,忽略if label == 0:continueif status[i][-1] > 50:image_filtered[labels == i] = 255global meancnts = cv2.findContours(closing2.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts)mean = cv2.mean(prevframe3, image_filtered)for i, c in enumerate(cnts):# 找到边界坐标x, y, w, h = cv2.boundingRect(c)  # 计算点集最外面的矩形边界cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)# 找面积最小的矩形rect = cv2.minAreaRect(c)# 得到最小矩形的坐标box = cv2.boxPoints(rect)# 标准化坐标到整数box = np.int0(box)# 画出边界cv2.drawContours(img, [box], 0, (0, 255, 0), 3)left_point_x = np.min(box[:, 0])right_point_x = np.max(box[:, 0])top_point_y = np.min(box[:, 1])bottom_point_y = np.max(box[:, 1])# 计算最小封闭圆的中心和半径mage_filtered = np.zeros_like(closing2)if ([box] != NULL):mage_filtered[left_point_x:right_point_x, top_point_y:bottom_point_y] = 255global listglobal maskglobal pictureif (ret != False):list.append(base)mask.append(mage_filtered)else:continueout.write(img)if jis == 0:cv2.imwrite(tempAviFilejp, img)cv2.imshow("result", img)if cv2.waitKey(1) == ord('e'):out.release()camera.release()break

摄像头识别黑烟加框处理(测试)相关推荐

  1. opencv,用摄像头识别贴片元件的定位和元件的角度(转载)

    经过半个月学习opencv有点小成果,用摄像头识别贴片元件的定位和元件的角度(转载) (2013-04-17 16:00:22) 转载▼   分类: 学习笔记 先说一下 开源的opencv真是一件伟大 ...

  2. MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试

    文章目录 MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试 一.题目要求 二.完整的目录结构说明 三.Mnist数据集及数据格式转换 四.BP神经网络相关知识 4.1 ...

  3. 完整代码及解析!!手写数字识别系统(手写数字测试识别 + pytoch实现 + 完整代码及解析)

    基于深度学习的手写数字识别系统 一.实验目的 ​ 1.任选实验环境及深度学习框架,实现手写数字识别系统: ​ 2.掌握所采用的深度血迹框架构建方式. 二.实验理论基础 1.MNIST数据集 ​ MNI ...

  4. [Android相机]通过手机摄像头识别环境亮度

    版权声明:本文使用https://creativecommons.org/licenses/by-nc-nd/4.0/规定的<署名-非商业性使用-禁止演绎 4.0 国际>协议 https: ...

  5. android 摄像头亮度,[Android相机]通过手机摄像头识别环境亮度

    版权声明:本文使用https://creativecommons.org/licenses/by-nc-nd/4.0/规定的<署名-非商业性使用-禁止演绎 4.0 国际>协议 https: ...

  6. 软件测试面试题:如何对淘宝搜索框进行测试?

    如何对淘宝搜索框进行测试? 一, 功能测试 1. 输入关键字,查看: 返回结果是否准确,返回的文本长度需限制 1.1输入可查到结果的正常关键字.词.语句,检索到的内容.链接正确性: 1.2输入不可查到 ...

  7. Android 根据从服务器中获取的rgb值实现动态改变圆角加框的Imageview 的背景色

    先上图,效果图如上. 本来考虑用facebook的SimpleDraweeView 来实现圆角加框的,但并非所有的图片分支部分都可以实现圆角,目前只有占位图片和实际图片可以实现圆角. 后来使用自定义的 ...

  8. CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别、视频识别、摄像头识别(准确度非常高)

    CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别.视频识别.摄像头识别(准确度非常高) 目录 GUI编程设计界面 产品演示 GUI编程设计界面 产品演示 视频演示:https://bl ...

  9. 如何识别新加的计算机硬盘,图文解说win10系统无法识别新加的机械硬盘的具体技巧...

    大家在使用电脑工作的时候会遇到win10系统无法识别新加的机械硬盘的问题,当我们遇到win10系统无法识别新加的机械硬盘问题的时候该怎么处理呢.我就把总结整理的win10系统无法识别新加的机械硬盘解决 ...

最新文章

  1. 干掉 RESTful!GraphQL 真香!
  2. 覆盖40种语言:谷歌发布多语言、多任务NLP新基准XTREME
  3. LeetCode题组:第7题-整数反转
  4. java synchronized关键字_Java synchronized 关键字,你用的对吗?
  5. 微信小程序把玩(十八)picker组件
  6. activemenu怎么拼 vue_vue-element-admin登录逻辑,以及动态添加路由,显示侧边栏
  7. JavaScript玩转机器学习:模型和层
  8. python Django创建数据库时can't open file 'manage.py': [Errno 2] No such file or directory
  9. 迅速步入jQuery的殿堂
  10. Hadoop(七)Hive基础
  11. Codeforces 938.C Constructing Tests
  12. 数据库复习总结(4)-数据库的分离、附加、脚本的创建
  13. php时间截取日期,php中肿么获取给定时间中的日期部分
  14. J - 免费馅饼(动态规划)数塔
  15. 中国各省级行政区公共数据开放平台网址(2021.11.1更新)
  16. 简析发送手机验证码原理
  17. dns服务器配置错误无法修复,电脑DNS错误修复的方法教程
  18. 宜青春 信未来,用科技创新拓宽金融科技的护城河
  19. MLIR深入 —— 转换流程详解(以Toy接入为例)
  20. 今日头条(App和MainActivity类)

热门文章

  1. FreeRTOS-消息队列详解
  2. 在虚拟环境下使用pip install -r requirements.txt导入项目依赖包却没有安装上出现的问题
  3. SeetaFace2-master在Windows10 VS2019编译的两种方法
  4. Linux命令-程序启动
  5. 品优购项目案例(练习)
  6. CSS的px和em的区别
  7. Redis Reactive
  8. unlikely和likely的使用
  9. javascript:window.scroll()函数behavior属性smooth属性值在iphone浏览器上不兼容
  10. VsCode:设置前进和后退 (返回上一个浏览位置/下一个浏览位置)快捷键