沧州建设网站公司网络服务推广

news/2025/9/22 17:56:21/文章来源:
沧州建设网站公司,网络服务推广,做黑彩网站,wordpress is home文章目录 图像轮廓查找轮廓绘制轮廓轮廓的面积与周长多边形逼近与凸包外接矩形项目总览【车辆统计】视频加载【车辆统计】去背景【车辆统计】形态学处理【车辆统计】逻辑处理【车辆统计】显示信息【车辆统计】 图像轮廓 查找轮廓 # -*- coding: utf-8 -*- import cv2 import n… 文章目录 图像轮廓查找轮廓绘制轮廓轮廓的面积与周长多边形逼近与凸包外接矩形项目总览【车辆统计】视频加载【车辆统计】去背景【车辆统计】形态学处理【车辆统计】逻辑处理【车辆统计】显示信息【车辆统计】 图像轮廓 查找轮廓 # -*- coding: utf-8 -*- import cv2 import numpy as npimg cv2.imread(./contours1.jpeg) # print(img.shape)# 转变为单通道 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化 ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # print(gray.shape)cv2.imshow(img, img) cv2.imshow(binary, binary)# 轮廓查找 contours, hierarchy cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)print(contours)key cv2.waitKey(0) 0xff if key ord(q):cv2.destroyAllWindows()绘制轮廓 # -*- coding: utf-8 -*- import cv2 import numpy as npimg cv2.imread(./contours1.jpeg) # print(img.shape)# 转变为单通道 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化 ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # print(gray.shape)# 轮廓查找 contours, hierarchy cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)print(contours)# 绘制轮廓 cv2.drawContours(img, contours, -1, (0, 255, 0), 1)cv2.imshow(img, img) cv2.imshow(binary, binary)key cv2.waitKey(0) 0xff if key ord(q):cv2.destroyAllWindows()详细可参考官方资料 # -*- coding: utf-8 -*- import cv2 import numpy as npimg cv2.imread(./contours1.jpeg) # print(img.shape)# 转变为单通道 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化 ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # print(gray.shape)# 轮廓查找 contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)print(contours)# 绘制轮廓 cv2.drawContours(img, contours, -1, (0, 255, 0), 1)cv2.imshow(img, img) cv2.imshow(binary, binary)key cv2.waitKey(0) 0xff if key ord(q):cv2.destroyAllWindows()轮廓的面积与周长 # -*- coding: utf-8 -*- import cv2 import numpy as npimg cv2.imread(./contours1.jpeg) # print(img.shape)# 转变为单通道 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化 ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # print(gray.shape)# 轮廓查找 contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)print(contours)# 绘制轮廓 cv2.drawContours(img, contours, 0, (0, 255, 0), 1) # 计算面积 area cv2.contourArea(contours[0]) print(area%d%(area))# 计算周长 len cv2.arcLength(contours[0], True) print(len%d%(len))# cv2.imshow(img, img) # cv2.imshow(binary, binary)# key cv2.waitKey(0) 0xff # if key ord(q): # cv2.destroyAllWindows()多边形逼近与凸包 # -*- coding: utf-8 -*- import cv2 import numpy as npimg cv2.imread(./hand.png) # print(img.shape)# 转变为单通道 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化 ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # print(gray.shape)# 轮廓查找 contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)print(len(contours))# 绘制轮廓 cv2.drawContours(img, contours, 0, (0, 255, 0), 1) # 计算面积 # area cv2.contourArea(contours[0]) # print(area%d%(area))# 计算周长 # len cv2.arcLength(contours[0], True) # print(len%d%(len))cv2.imshow(img, img) # cv2.imshow(binary, binary)key cv2.waitKey(0) 0xff if key ord(q):cv2.destroyAllWindows()# -*- coding: utf-8 -*- import cv2 import numpy as npdef drawShape(src, points):i 0while i len(points):if(i len(points) - 1):x, y points[i][0]x1, y1 points[0][0]cv2.line(src, (x, y), (x1, y1), (0, 255, 0), 2)else:x, y points[i][0]x1, y1 points[i 1][0]cv2.line(src, (x, y), (x1, y1), (0, 255, 0), 2)i i 1img cv2.imread(./hand.png) # print(img.shape)# 转变为单通道 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化 ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # print(gray.shape)# 轮廓查找 contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# print(len(contours))# 绘制轮廓 # cv2.drawContours(img, contours, 0, (0, 255, 0), 1) # 计算面积 # area cv2.contourArea(contours[0]) # print(area%d%(area))# 计算周长 # len cv2.arcLength(contours[0], True) # print(len%d%(len))e 5 approx cv2.approxPolyDP(contours[0], e, True) drawShape(img, approx)hull cv2.convexHull(contours[0]) drawShape(img, hull)cv2.imshow(img, img) # cv2.imshow(binary, binary)key cv2.waitKey(0) 0xff if key ord(q):cv2.destroyAllWindows()外接矩形 红框就是最小外接矩形绿框就是最大外接矩形。 最小外接矩形可以看图形有没有旋转 详情见参考文档 # -*- coding: utf-8 -*- import cv2 import numpy as npdef drawShape(src, points):i 0while i len(points):if(i len(points) - 1):x, y points[i][0]x1, y1 points[0][0]cv2.line(src, (x, y), (x1, y1), (0, 255, 0), 2)else:x, y points[i][0]x1, y1 points[i 1][0]cv2.line(src, (x, y), (x1, y1), (0, 255, 0), 2)i i 1img cv2.imread(./hello.jpeg) # print(img.shape)# 转变为单通道 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化 ret, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # print(gray.shape)# 轮廓查找 contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# print(len(contours))# 绘制轮廓 # cv2.drawContours(img, contours, 1, (0, 255, 0), 1) # 计算面积 # area cv2.contourArea(contours[0]) # print(area%d%(area))# 计算周长 # len cv2.arcLength(contours[0], True) # print(len%d%(len))# e 5 # 多边形逼近 # approx cv2.approxPolyDP(contours[0], e, True) # drawShape(img, approx)# 凸包 # hull cv2.convexHull(contours[0]) # drawShape(img, hull)r cv2.minAreaRect(contours[1]) box cv2.boxPoints(r) box np.int0(box) cv2.drawContours(img, [box], 0, (0, 255, 0), 2)x, y, w, h cv2.boundingRect(contours[1]) cv2.rectangle(img, (x, y), (x w, y h), (0, 0, 255), 2)cv2.imshow(img, img) # cv2.imshow(binary, binary)key cv2.waitKey(0) 0xff if key ord(q):cv2.destroyAllWindows()项目总览【车辆统计】 视频加载【车辆统计】 # -*- coding: utf-8 -*- import cv2 import numpy as npcap cv2.VideoCapture(./video.mp4)while True:ret, frame cap.read()if(ret True):cv2.imshow(video, frame)key cv2.waitKey(1)if(key 27):breakcap.release() cv2.destroyAllWindows()去背景【车辆统计】 如果视频是25fps即每秒25帧即1000ms过25帧那么200ms就走5帧25/1000*2005) 运动的物体为前景静止的物体就是背景 详细可以参考官方文档 # -*- coding: utf-8 -*- import cv2 import numpy as npcap cv2.VideoCapture(./video.mp4)bgsubmog cv2.createBackgroundSubtractorMOG2() while True:ret, frame cap.read()if(ret True):mask bgsubmog.apply(frame)cv2.imshow(video, mask)key cv2.waitKey(1)if(key 27):breakcap.release() cv2.destroyAllWindows()# -*- coding: utf-8 -*- import cv2 import numpy as npcap cv2.VideoCapture(./video.mp4)bgsubmog cv2.createBackgroundSubtractorMOG2() tst cv2.createBackgroundSubtractorMOG2()while True:ret, frame cap.read()if(ret True):# 灰度图cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 去噪高斯blur cv2.GaussianBlur(frame, (3, 3), 5)# 去背景mask bgsubmog.apply(blur)t tst.apply(frame)cv2.imshow(video, mask)cv2.imshow(t, t)key cv2.waitKey(40)if(key 27):breakcap.release() cv2.destroyAllWindows()形态学处理【车辆统计】 # -*- coding: utf-8 -*- import cv2 import numpy as npcap cv2.VideoCapture(./video.mp4)bgsubmog cv2.createBackgroundSubtractorMOG2() # tst cv2.createBackgroundSubtractorMOG2()# 形态学kernel kernel cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) kernel2 cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))while True:ret, frame cap.read()if(ret True):# 灰度图cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 去噪高斯blur cv2.GaussianBlur(frame, (3, 3), 1)# 去背景mask bgsubmog.apply(blur)# t tst.apply(frame)# 腐蚀去掉图中小斑块erode cv2.erode(mask, kernel, iterations1)# 膨胀还原放大dilate cv2.dilate(erode, kernel2, iterations5)# 闭操作去掉物体内部噪声close cv2.morphologyEx(dilate, cv2.MORPH_CLOSE, kernel)close cv2.morphologyEx(close, cv2.MORPH_CLOSE, kernel)contours, hierarchy cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)for i, c in enumerate(contours):x, y, w, h cv2.boundingRect(c)cv2.rectangle(frame, (x, y), (x w, y h), (0, 255, 0), 2)cv2.imshow(video, frame)# cv2.imshow(erode, close)key cv2.waitKey(40)if(key 27):breakcap.release() cv2.destroyAllWindows()逻辑处理【车辆统计】 # -*- coding: utf-8 -*- import cv2 import numpy as npmin_w 50 min_h 50 max_w 800 max_h 800# 检测线的高度 line_high 480# 存放有效车辆数组 cars []# 统计车的数量 carnums 0# 线的偏移 offset 10# 求中心点 def center(x, y, w, h):x1 int(w / 2)y1 int(h / 2)cx x x1cy y y1return cx, cycap cv2.VideoCapture(./video.mp4)bgsubmog cv2.createBackgroundSubtractorMOG2() # tst cv2.createBackgroundSubtractorMOG2()# 形态学kernel kernel cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) kernel2 cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))while True:ret, frame cap.read()if(ret True):# print(frame.shape)# (584, 1280, 3)# 灰度图cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 去噪高斯blur cv2.GaussianBlur(frame, (3, 3), 1)# 去背景mask bgsubmog.apply(blur)# t tst.apply(frame)# 腐蚀去掉图中小斑块erode cv2.erode(mask, kernel, iterations1)# 膨胀还原放大dilate cv2.dilate(erode, kernel2, iterations3)# 闭操作去掉物体内部噪声close cv2.morphologyEx(dilate, cv2.MORPH_CLOSE, kernel)close cv2.morphologyEx(close, cv2.MORPH_CLOSE, kernel)contours, hierarchy cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)cv2.line(frame, (100, line_high), (1100, line_high), (255, 255, 0), 2)for i, c in enumerate(contours):x, y, w, h cv2.boundingRect(c)# 对车辆的宽高进行判断以验证是否是有效车辆isValid (x min_w) and (h min_h) and (x max_w) and (h max_h)if(not isValid):continue# 有效的车cpoint center(x, y, w, h)cars.append(cpoint)cv2.rectangle(frame, (x, y), (x w, y h), (0, 255, 0), 2)for xc, yc in cars:if(yc line_high - offset and yc line_high offset):carnums 1cars.remove((xc, yc))print(carnums)cv2.imshow(video, frame)# cv2.imshow(erode, close)key cv2.waitKey(40)if(key 27):breakcap.release() cv2.destroyAllWindows()显示信息【车辆统计】 # -*- coding: utf-8 -*- import cv2 import numpy as npmin_w 50 min_h 50 max_w 800 max_h 800# 检测线的高度 line_high 480# 存放有效车辆数组 cars []# 统计车的数量 carnums 0# 线的偏移 offset 10# 求中心点 def center(x, y, w, h):x1 int(w / 2)y1 int(h / 2)cx x x1cy y y1return cx, cycap cv2.VideoCapture(./video.mp4)bgsubmog cv2.createBackgroundSubtractorMOG2() # tst cv2.createBackgroundSubtractorMOG2()# 形态学kernel kernel cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) kernel2 cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))while True:ret, frame cap.read()if(ret True):# print(frame.shape)# (584, 1280, 3)# 灰度图cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 去噪高斯blur cv2.GaussianBlur(frame, (3, 3), 1)# 去背景mask bgsubmog.apply(blur)# t tst.apply(frame)# 腐蚀去掉图中小斑块erode cv2.erode(mask, kernel, iterations1)# 膨胀还原放大dilate cv2.dilate(erode, kernel2, iterations3)# 闭操作去掉物体内部噪声close cv2.morphologyEx(dilate, cv2.MORPH_CLOSE, kernel)close cv2.morphologyEx(close, cv2.MORPH_CLOSE, kernel)contours, hierarchy cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 画一条检测线cv2.line(frame, (100, line_high), (1100, line_high), (255, 255, 0), 2)for i, c in enumerate(contours):x, y, w, h cv2.boundingRect(c)# 对车辆的宽高进行判断以验证是否是有效车辆isValid (x min_w) and (h min_h) and (x max_w) and (h max_h)if(not isValid):continue# 有效的车cpoint center(x, y, w, h)cars.append(cpoint)cv2.rectangle(frame, (x, y), (x w, y h), (0, 255, 0), 2)cv2.circle(frame, (cpoint), 5, (0, 0, 255), -1)for xc, yc in cars:if(yc line_high - offset and yc line_high offset):carnums 1cars.remove((xc, yc))print(carnums)cv2.putText(frame, Cars Count: str(carnums), (500, 60), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 0), 3)cv2.imshow(video, frame)# cv2.imshow(erode, close)key cv2.waitKey(40)if(key 27):breakcap.release() cv2.destroyAllWindows()通过实践可以发现传统的目标检测缺点很多比方说可能重复计数…所以之后我们需要结合深度学习来提高目标检测的精度 之后我会持续更新如果喜欢我的文章请记得一键三连哦点赞关注收藏你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 ↖(▔▽▔)↗感谢支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12306网站建设多少钱如何提高百度权重

php中文网最新课程每日17点准时技术干货分享异常处理是软件开发过程中无法逃避的问题。对于一套设计良好代码高效的程序,出现异常的可能性会比较低,但这并不意味着不会出现异常,有些异常甚至会引起严重的后果,所以如何及时的发现程序中的异常…

优秀的集团网站微信公众号制作网页

1、什么是事务 在实际的业务开发中,有些业务操作要多次访问数据库。一个业务要发送多条SQL语句给数据库执行。需要将多次访问数据库的操作视为一个整体来执行,要么所有的SQL语句全部执行成功。如果其中有一条SQL语句失败,就进行事务的回滚&a…

个人两字印章在线制作网站百度关键词查询排名

鲸参谋监测的京东平台10月份牛奶乳品市场销售数据已出炉! 10月份,牛奶乳品整体销售上涨。鲸参谋数据显示,今年10月,京东平台上牛奶乳品的销量将近1700万,同比增长1%;销售额将近17亿,同比增长约5…

谁可以做网站优化排名推广网站制作用到什么技术

在本文中,我将展示如何在Apache Aries Blueprint xml文件中添加一些内联脚本。 我不一定会称其为最佳实践,但我一直认为这种功能可能有用。 可能当我被迫使用xml来模拟命令式编程结构(例如使用Apache Ant时)时,我开始…

大庆网站制作公司地址大学生网页设计作业成品

MD[Gitlab 安装手册] Gitlab 安装手册 说明: Gitlab最低配置1核2g,建议配置2核4g以上且单独部署,如有多项目CI/CD要求,可以4核8g 1. 安装相关依赖(安装policycoreutils) [rootsjclinux ~]# yum -y install policycoreutils openssh-server openssh-clients postfix 2. 启动s…

做网站每年要交不费用吗成都公司注册地址托管

一.什么是死锁? 死锁是由于两个或以上的线程互相持有对方需要的资源,导致这些线程处于等待状态,无法执行。 二.产生死锁的四个必要条件 1.互斥性:线程对资源的占有是排他性的,一个资源只能被一个线程占有,直…

中国做铁塔的公司网站网站建设企业服务

目录 力扣724. 寻找数组的中心下标 解析代码 力扣724. 寻找数组的中心下标 724. 寻找数组的中心下标 LCR 012. 寻找数组的中心下标 1991. 找到数组的中间位置(三道一样的题,一鱼三吃) 难度 简单 给你一个整数数组 nums ,请…

基于RSSI修正的定位算法分析

分析和实现基于RSSI(接收信号强度指示)修正的定位算法 % 基于RSSI修正的定位算法分析 clear; clc; close all;%% 1. 参数设置 fprintf(设置定位系统参数...\n);% 环境参数 n = 2.5; % 路径损耗指数 (…

接口测试流程+jmeter并发+面试题(总结) - 指南

接口测试流程+jmeter并发+面试题(总结) - 指南2025-09-22 17:49 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display…

c# 反射动态添加Attribute

//测试类 var type = typeof(TestClass);//给类对象添加、获取特性 TypeDescriptor.AddAttributes(type, indexAttr); //var attr = TypeDescriptor.GetAttributes(type)[typeof(DynamicCacheBufferAtrribute)] as Dyn…

wordpress站内链接跳转优秀企业宣传册样本

这段代码是 _make_causal_mask 函数中处理滑动窗口局部注意力的部分。这里的目的是创建一个额外的掩码,以便在自注意力机制中只考虑每个位置附近的一定数量的位置,而不是所有之前的位置。这通常用于减少计算复杂性和提高长序列处理的效率。 代码分析如下: diagonal = past_k…

网站开发搭建合同范本如何建立免费网站

转载请说明出处~本文教程翻译jni官方文档的部分内容。要查看Jni官方文档,请点击这里先感叹一下时光如水,岁月不留人哇有木有!!!认真想想在XMU的这三年,真的改变了我好多。我还清楚地记得学习C语言写的第一个…

重庆商城网站建设百度收录的网站标题 --

第一轮 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点? 讲讲jdk1.7和1.8的区别? 几种内置的线程池 MySQL事务隔离级别以及MVCC机制 Redis缓存雪崩、缓存穿透以及如何解决? 分布式架构…

广东品牌网站建设报价做门户网站 cms

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,AB训练集各由5张二值化的图片组成,让A中有3个1,B中全是0,统计迭代次数并排序。 在3*5的空间内分布3个点有19种可能,但不同的分布只有6种 差值就诶够 …

旅游网站建设的目标青岛最大的设计院

1、集合元素处理(传统方式) 现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行一下若干操作步骤: 第一个队伍只要 名字为 3 个字 的成员姓名;存…

手机网站模板网深圳小企业网站建设

本文旨在编写一个简单的shell外壳程序!功能类似于shell的一些基本操作!虽然不能全部实现shell的一些功能!但是通过此文章,自己写一个简单的shell程序也是不成问题!并且通过此文章,可以让读者对linux中一些环…

我做的静态网站怎么发布到网上手机网站规格

随着人工智能的不断发展,ChatGPT(OpenAI)和文心一言都代表了当前先进的自然语言处理技术。它们在智能回复、语言准确性和知识库丰富度等方面都有各自的优势。在下面的比较中,我们将从多个角度探讨这两个AI助手,帮助你更…

农业产品如何建网站一个空间可以做几个网站吗

FPGADDRSERDESUSB3.0方案,设备包含发送端接收端,物料上采用光纤通讯,数据只能单向传输,避免反向攻击,确保系统安全 客户应用:高安全、高可靠性要求的场景 主要性能: 1.支持USB3.0传输,实测可达到350MB/s 2.…

MyBatis-Plus 全方位深度指南:从入门到精通

在 Java 的世界里,数据持久化是任何企业级应用的基石。MyBatis 以其轻量、灵活以及对 SQL 的完全掌控而备受开发者喜爱。然而,随着项目复杂度的增加,开发者们发现自己陷入了编写大量重复性 CRUD(创建、读取、更新、…

Stm32学习过程笔记

View PostStm32学习过程笔记标准库 1.RCC时钟设置(必备) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//APB2外设2. GPIO外设通用输入输出 GPIO_InitTypeDef GPIO_InitStructure; …