首页 文章 精选 留言 我的

精选列表

搜索[Python],共10000篇文章
优秀的个人博客,低调大师

Python-OpenCV学习(八)凸轮廓检测

凸轮廓与Douglas-Peucker算法:大多数处理轮廓的时候,物体的形状(包括凸形状)都是变换多样的。凸形状内部的任意两点的连线都在该形状里面。cv.approxPloyDP是一个计算进似多边形框的函数,该函数有三个参数: 第一个参数为“轮廓” 第二个参数为$\varepsilon $值,它表示圆轮廓与近似多边形的最大差值(这个值越小,近似多边形与源轮廓越接近) 第三个参数为“布尔标记”表示这个多边形是否闭和合$\varepsilon$是为所得到的近似多边形周长与轮廓之间的最大差值,差值越小,多边形轮廓越相似。 如果需要轮廓的周长信息可以通过Opencv的cv2.arcLength函数来完成: epsilon=0.01*cv2.arcLength(cnt,True) approx=cv2.approxPolyDP(cnt,epsilon,True) 通过OpenCV来有效计算一个近似多变形,多边形周长与源轮廓周长之比就为$\varepsilon$为了计算图形状,需要用OpenCV的cv2.convexHull函数来获取处理过的轮廓信息, hull =cv2.convexHull(cnt) 完整代码: import cv2 import numpy as np img = cv2.pyrDown(cv2.imread("hammer.jpg", cv2.IMREAD_UNCHANGED)) ret, thresh = cv2.threshold(cv2.cvtColor(img.copy(), cv2.COLOR_BGR2GRAY) , 127, 255, cv2.THRESH_BINARY) black = cv2.cvtColor(np.zeros((img.shape[1], img.shape[0]), dtype=np.uint8), cv2.COLOR_GRAY2BGR) image, contours, hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for cnt in contours: epsilon = 0.01 * cv2.arcLength(cnt,True) approx = cv2.approxPolyDP(cnt,epsilon,True) hull = cv2.convexHull(cnt) cv2.drawContours(black, [cnt], -1, (0, 255, 0), 2) cv2.drawContours(black, [approx], -1, (255, 255, 0), 2) cv2.drawContours(black, [hull], -1, (0, 0, 255), 2) cv2.imshow("hull", black) cv2.waitKey() cv2.destroyAllWindows()

优秀的个人博客,低调大师

Python-OpenCV学习(九)直线圆检测

直线和圆检测:Hough变换是直线和形状检测背后的原理基础,它是由Richard Duda和Peter Huart发明,他们是对PaulHough在10世纪60年代早期所做的工作的拓展:直线检测:直线检测通过HoughLines和HoughLinesP函数完成:HoughLines函数用的是标准的Hough变换。HoughLinesP函数使用的是概率Hough变换。HoughLinesP称为概率版本的Hough变换的原因是它只通过分析点的子集并估计这些点属于一条直线的概率,是对标准Hough变换的一个优化,执行速度回更加快: import cv2 import numpy as np img = cv2.imread('lines.jpg') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) edges = cv2.Canny(gray,50,120) minLineLength = 20 maxLineGap = 5 lines = cv2.HoughLinesP(edges,1,np.pi/180,20,minLineLength,maxLineGap) for x1,y1,x2,y2 in lines[0]: cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2) cv2.imshow("edges", edges) cv2.imshow("lines", img) cv2.waitKey() cv2.destroyAllWindows() 效果设置最小直线长度和最大线段间隙也蛮重要,设置最小会消除小于长度的线段,最大间隙,大于这个值会被视为是两条直线HoughLines输入的位一个边缘检测后的二值化图像:HoughLinesP参数: 需要处理的图像 线段的几何表示rho和theta,一般取1和np.pi/180 阈值。低于这个阈值的线段回本忽略-minLineLength和maxLineGap 圆检测:OpenCV的HoughCircles函数可以用来检测圆,与使用HoughLines函数类似: import cv2 import numpy as np planets = cv2.imread('planet_glow.jpg') gray_img = cv2.cvtColor(planets, cv2.COLOR_BGR2GRAY) img = cv2.medianBlur(gray_img, 5) cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,120, param1=100,param2=30,minRadius=0,maxRadius=0) circles = np.uint16(np.around(circles)) for i in circles[0,:]: # draw the outer circle cv2.circle(planets,(i[0],i[1]),i[2],(0,255,0),2) # draw the center of the circle cv2.circle(planets,(i[0],i[1]),2,(0,0,255),3) cv2.imwrite("planets_circles.jpg", planets) cv2.imshow("HoughCirlces", planets) cv2.waitKey() cv2.destroyAllWindows()

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册