python 给出四个顶点的坐标 求四边形面积
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
Python内容推荐
python 已知平行四边形三个点,求第四个点的案例
主要介绍了python 已知平行四边形三个点,求第四个点的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
python shapely.geometry.polygon任意两个四边形的IOU计算实例
主要介绍了python shapely.geometry.polygon任意两个四边形的IOU计算实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
由行列式计算面积和体积的Python程序.pdf
由行列式计算面积和体积的Python程序.pdf
python opencv minAreaRect 生成最小外接矩形的方法
主要介绍了python opencv minAreaRect 生成最小外接矩形的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Python OpenCV文档透视矫正 四边形检测拉正
Python OpenCV文档透视矫正 四边形检测拉正 检测文档四边形轮廓并做透视变换拉正,输出标注图、矫正图、对照拼图与检测报告,无需深度学习。 功能: · 合成倾斜文档图 · 边缘四边形检测 · 透视变换拉正 · 对照拼图 · 检测报告 · 打包时预跑 output/preview 压缩包含可运行源码、依赖与说明,按 README 安装后即可复现。
python实现IOU计算案例
主要介绍了python实现IOU计算案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
python计算两个矩形框重合百分比的实例
今天小编就为大家分享一篇python计算两个矩形框重合百分比的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
python矩形检测.zip
python矩形检测.zip
python画图-多边形以及计算iou
画出两个多边形并且计算它们的并交比iou import numpy as np import shapely from shapely.geometry import Polygon, MultiPoint # 多边形 from PIL import Image, ImageDraw, ImageFont import math from graham_scan import graham_scan def calulate_iou(line1, line2): # 代码来源:https://blog.csdn.net/u012433049/article/details/829
crossproduct:Python中的2D和3D几何
叉积 Python中的2D和3D几何 正在开发中
轻量 GraphRAG 实战:实体关系图谱 + 多跳检索,零 Key 离线可跑(Python 源码)
轻量 GraphRAG 实战包。从样例知识库抽取实体关系,支持 k-hop 多跳检索与社区摘要;无 Key 可 Mock 离线问答。含样例与 smoke。
语义路由实战:关键字+假向量意图分类,零 Key 离线可跑(Python 源码)
意图/语义路由实战包。关键字+轻量向量混合分类,阈值回退;无 Key 离线可跑。含工具路由样例与 smoke。
凸多边形的最小面积凸四边形包围盒生成算法 (2007年)
基于遗传算法的思想,研究并提出了凸多边形面积最小的凸四边形包围盒生成算法。该算法简单,速度快,效果显著。实际应用表明了该算法的有效性与实用性。
四边形的重心坐标族的单调性
四边形的重心坐标族的单调性
二次函数面积练习
二次函数练习题,如图,抛物线 与x轴交于A(1,0),B(-3,0)两点,顶点为D。交y轴于C
面积计算并画出图像程序
计算三角形,四边形,圆形面积并画出图像的程序.
多边形面积计算器
多边形面积计算器
几何图形面积计算
各种图形的计算软件,免安装,解压后可直接使用.
计算梯形的面积
计算梯形的面积
图像处理案例二之文本OCR识别.
项目细节: 首先载入源图像,并进行尺寸预处理。 载入源图像image并作拷贝为org,将image按原始h,w的比例大小设置为高度为500的图像。 进行边缘检测和轮廓检测 在灰度化->边缘检测->轮廓检测后,将轮廓按轮廓的面积进行排序(注意这里默认是顺序的即从小到大,我们需要从大到小排序,所以reverse = True),取面积最大的前5个轮廓,并用多边形逼近(cv.approxPolyDP)的方法将轮廓近似出来,因为检测的轮廓有圆形有长矩形,我们需要的检测的目标轮廓是四边形(类似于矩形)。所以我们经过筛选得到我们需要的四边形的坐标。 坐标的透视变换 由多边形逼近轮廓的方法得到的坐标 是每个轮廓逆时钟方向的各个顶点的坐标,而我们想要顺时针方向的各个顶点的坐标,所以需要先对轮廓坐标重新排序。接着需要求出四边形轮廓的高和宽,来创建一个dst数组:该数组为[[0,0],[width-1,0],[width-1,height-1],[0,height-1] 。将四边形轮廓坐标和dst输入到cv.getPerspectiveTransform 函数里,得到透视变换的M矩阵。接着将用M矩阵对原图像做透视变化,其中得出的warped的大小为(width,height),这样透视变换就做完了。 简单点说:首先读取两个坐标数组,计算变换矩阵;然后根据变换矩阵对原图进行透视变换,并输出到目标画布, OCR识别 在OCR识别之前要对待识别的图像进行预处理,即灰度二值化,接着利用ocr指令来识别。 源码: import cv2 as cv import numpy as np import pytesseract def order_point(pts): rect = np.zeros((4, 2), dtype = "float32") s = pts.sum(axis = 1) rect[0] = pts[np.argmin(s)] rect[2] = pts[np.argmax(s)] diff = np.diff(pts,axis=1) rect[1] = pts[np.argmin(diff)] rect[3] = pts[np.argmax(diff)] return rect def four_point_transfer(image,pts): rect = order_point(pts) (tl,tr,br,bl) = rect width1 = np.sqrt((tr[0]-tl[0])*(tr[0]-tl[0])+(tr[1]-tl[1])*(tr[1]-tl[1])) width2 = np.sqrt((br[0]-bl[0])*(br[0]-bl[0])+(br[1]-bl[1])*(br[1]-bl[1])) width = max(width1,width2) #python中有max函数和np.max函数,前者是比较两个数值的大小取最大值,后者是取出数组的最大值 height1 = np.sqrt((tr[0]-br[0])*(tr[0]-br[0])+(tr[1]-br[1])*(tr[1]-br[1])) height2 = np.sqrt((tl[0]-bl[0])*(tl[0]-bl[0])+(tl[1]-bl[1])*(tl[1]-bl[1])) height = max(height1,height2) dst = np.array([[0,0],[width-1,0],[width-1,height-1],[0,height-1]],dtype="float32") M = cv.getPerspectiveTransform(rect,dst) warped =cv.warpPerspective(image,M,(width,height)) return warped def resize(image,height=None): if height is None: return image else : h,w= image.shape[:2] #shape:h,w,channel image[h(row),w(col),channel] r = height/h width = int(w*r) #关于size函数参数的一般是(宽,高) image = cv.resize(image,(width,height),interpolation=cv.INTER_AREA) #还有resize(img,(宽,高)),即先列后行 return image #利用cv.bounding()得到x,y,width,height #其它情况一般都是先行后列(高,宽) #如shape得到参数,或者roi区域内部参数,建立新的Mat 都是先行后列 image = cv.imread("E:\opencv\picture\page.jpg") orig = image.copy() image = resize(image,height=500) ratio = orig.shape[0]/500 #边缘检测 image_gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY) image_gray = cv.GaussianBlur(image_gray,(5,5),0) image_edge = cv.Canny(image_gray,75,200) #轮廓检测 image_contours = cv.findContours(image_edge.copy(),cv.RETR_LIST,cv.CHAIN_APPROX_SIMPLE)[1] countours = sorted(image_contours,key=cv.contourArea,reverse=True)[:5] for c in countours: arc = cv.arcLength(c,closed=True) approx = cv.approxPolyDP(c,arc*0.02,True) if len(approx) == 4: screen_shot = approx break cv.drawContours(image,[screen_shot],-1,(0,0,255),2) warped =four_point_transfer(orig,screen_shot.reshape(4,2)*ratio) cv.imshow('warped_window',resize(warped,height=650)) warped =cv.cvtColor(warped,cv.COLOR_BGR2GRAY) scan = cv.threshold(warped,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)[1] cv.imwrite("E:/opencv/picture/scan.png",scan) cv.imshow("scan ",scan) scanstring = pytesseract.image_to_string(scan) print(scanstring) cv.waitKey(0) cv.destroyAllWindows()
最新推荐




