当前位置: 首页 > news >正文

网站建设客户需求分析表免费做金融网站有哪些

网站建设客户需求分析表,免费做金融网站有哪些,女人与黑狗做视频网站,国家高新技术企业专利要求一 #xff0c;项目分析 物体尺寸测量的思路是找一个确定尺寸的物体作为参照物#xff0c;根据已知的计算未知物体尺寸。 如下图所示#xff0c;绿色的板子尺寸为220*300#xff08;单位#xff1a;毫米#xff09;#xff0c;通过程序计算白色纸片的长度。 主要是通过…一 项目分析 物体尺寸测量的思路是找一个确定尺寸的物体作为参照物根据已知的计算未知物体尺寸。 如下图所示绿色的板子尺寸为220*300单位毫米通过程序计算白色纸片的长度。 主要是通过图像处理技术实现对一张图片中物体的尺寸测量具体需求如下 读入一张图片该图片中包含需要进行测量的物体 对图片进行边缘检测找到所有的轮廓 在所有的轮廓中选取面积最大的轮廓即为所要测量的物体 对该物体进行透视变换将其变成一个矩形 在矩形中通过线段交叉点的方式确定出物体的高度和宽度 将高度和宽度转换成实际尺寸并在图片上标注出来 将结果显示在屏幕上。 二实现流程 导入必要的库cv2和numpy。 import cv2 import numpy as np 2.定义了一些参数缩放比例、输出图片的宽度和高度。 scale 2 wP 220 * scale hP 300 * scale 3.定义了一个函数getContours用于获取图像中的轮廓。该函数首先将图像转换为灰度图然后进行高斯模糊再进行Canny边缘检测接着进行膨胀和腐蚀操作最后使用findContours函数找到所有的外轮廓。根据面积和拐点个数的条件进行轮廓过滤返回过滤后的轮廓列表。 def getContours(img, cThr[100, 100], showCannyFalse, minArea1000, filter0, drawFalse):imgGray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)imgBlur cv2.GaussianBlur(imgGray, (5, 5), 1)imgCanny cv2.Canny(imgBlur, cThr[0], cThr[1])kernel np.ones((5, 5))imgDial cv2.dilate(imgCanny, kernel, iterations3)imgThre cv2.erode(imgDial, kernel, iterations2)if showCanny: cv2.imshow(Canny, imgThre)# 寻找所有的外轮廓_, contours, _ cv2.findContours(imgThre, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)finalCountours []# 遍历找到的轮廓for i in contours:area cv2.contourArea(i) # 轮廓的面积if area minArea: # 如果大于设置的最小轮廓值就往下走peri cv2.arcLength(i, True) # 封闭的轮廓的长度approx cv2.approxPolyDP(i, 0.02 * peri, True) # 封闭轮廓的拐点bbox cv2.boundingRect(approx) # 找到边界框if filter 0: # 需不需要根据拐点个数进行过滤轮廓if len(approx) filter: # 拐点个数面积拐点位置边界框轮廓finalCountours.append([len(approx), area, approx, bbox, i])else:finalCountours.append([len(approx), area, approx, bbox, i])finalCountours sorted(finalCountours, keylambda x: x[1], reverseTrue) # 根据轮廓大小进行从大到小的排序if draw: # 是否要画出来轮廓for con in finalCountours:cv2.drawContours(img, con[4], -1, (0, 0, 255), 3)return img, finalCountours4.   定义了一个函数reorder用于重新排序四个点的顺序。根据四个点的和、差值的最大值和最小值进行排序返回重新排序后的点。 def reorder(myPoints):myPointsNew np.zeros_like(myPoints)myPoints myPoints.reshape((4, 2))add myPoints.sum(1)myPointsNew[0] myPoints[np.argmin(add)]myPointsNew[3] myPoints[np.argmax(add)]diff np.diff(myPoints, axis1)myPointsNew[1] myPoints[np.argmin(diff)]myPointsNew[2] myPoints[np.argmax(diff)]return myPointsNew5.    定义了一个函数warpImg用于对图像进行透视变换。根据输入的四个点和输出图像的宽度和高度使用getPerspectiveTransform函数计算透视变换矩阵然后使用warpPerspective函数进行透视变换并对变换后的图像进行裁剪。 def warpImg(img, points, w, h, pad20):# print(points)points reorder(points)pts1 np.float32(points)pts2 np.float32([[0, 0], [w, 0], [0, h], [w, h]])matrix cv2.getPerspectiveTransform(pts1, pts2)imgWrap cv2.warpPerspective(img, matrix, (w, h))imgWrap imgWrap[pad:imgWrap.shape[0] - pad, pad:imgWrap.shape[1] - pad]return imgWrap 6.    定义了一个函数findDis用于计算两个点之间的距离。 def findDis(pts1, pts2):return ((pts2[0] - pts1[0]) ** 2 (pts2[1] - pts1[1]) ** 2) ** 0.5 7.   读取输入的图像并将其缩放到指定的尺寸。 path E:\All_in\opencv\chicun.png img cv2.imread(path) img cv2.resize(img, (0, 0), None, 0.18, 0.18) 8.    使用getContours函数获取图像中的轮廓设定最小轮廓面积为8000拐点个数为4返回过滤后的轮廓列表。 img, conts getContours(img, minArea8000, filter4) 9.   判断是否存在轮廓若存在则找到最大轮廓的拐点位置使用warpImg函数对图像进行透视变换并返回变换后的图像。 if len(conts) ! 0:biggest conts[0][2] # 最大轮廓的拐点位置# print(biggest)imgWrap warpImg(img, biggest, wP, hP) 10.    对变换后的图像再次使用getContours函数获取轮廓设定最小轮廓面积为2000拐点个数为4返回过滤后的轮廓列表。 imgContours2, conts2 getContours(imgWrap, minArea2000, filter4, cThr[50, 50]) 11.    遍历过滤后的轮廓列表对每个轮廓绘制多边形和箭头并计算出两个方向的长度然后在图像上标注长度信息。 if len(conts) ! 0:for obj in conts2:cv2.polylines(imgContours2, [obj[2]], True, (0, 255, 0), 2)nPoints reorder(obj[2])nW round((findDis(nPoints[0][0] // scale, nPoints[1][0] // scale) / 10), 1)nH round((findDis(nPoints[0][0] // scale, nPoints[2][0] // scale) / 10), 1)# 创建箭头cv2.arrowedLine(imgContours2, (nPoints[0][0][0], nPoints[0][0][1]), (nPoints[1][0][0], nPoints[1][0][1]),(255, 0, 255), 3, 8, 0, 0.05)cv2.arrowedLine(imgContours2, (nPoints[0][0][0], nPoints[0][0][1]), (nPoints[2][0][0], nPoints[2][0][1]),(255, 0, 255), 3, 8, 0, 0.05)x, y, w, h obj[3]cv2.putText(imgContours2, {}cm.format(nW), (x 30, y - 10), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1,(255, 0, 255), 2)cv2.putText(imgContours2, {}cm.format(nH), (x - 70, y h // 2), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1,(255, 0, 255), 2) 12 . 显示结果图像和原始图像并等待按下任意键关闭窗口。 ​ cv2.imshow(background, imgContours2)cv2.imshow(Original, img) cv2.waitKey(0)​ 三 结果展示 四 应用前景 工业测量在工业领域中Opencv测尺寸可以用于检测零件尺寸是否符合规格要求。比如在生产线上可以通过拍摄零件图片利用Opencv测量零件的长度、宽度、直径等参数以确保产品质量。 医学影像Opencv测尺寸可以应用于医学影像领域中例如在CT、MRI等医学影像中测量肿瘤大小、血管直径等。这对于医生来说是非常重要的可以帮助他们做出准确的诊断和治疗方案。 建筑测量在建筑和房地产领域中Opencv测尺寸可以用于测量建筑物的尺寸、房间面积等。通过拍摄建筑物的照片利用Opencv进行测量可以帮助建筑师、设计师和房地产开发商进行规划和设计。 车辆测量Opencv测尺寸可以应用于交通领域例如测量车辆的长度、宽度、高度等。这对于道路设计、桥梁设计、停车场规划等方面是非常重要的。 教育培训Opencv测尺寸可以用于教育培训领域中例如在物理实验中测量物体的大小、重量等。通过利用Opencv进行测量可以帮助学生更直观地理解和掌握物理概念。
http://www.hn-smt.com/news/54597/

相关文章:

  • GODIAG VAG Test Platforms Full Package: All-in-One IMMO Key Matching for 2nd-4th Gen VAG Dashboards
  • 随笔11月20日
  • kode-cli+glm4.6测评
  • 洛谷 P4458
  • 【个人成长笔记】在本地Windows系统中如何正确使用adb pull命令,把Linux环境中的记录或文件夹复制到本地中(亲测有效)
  • IOI 2026 中国国家集训队作业(试题泛做)记录
  • 洛谷 B4411:[GESP202509 二级] 优美的数字 ← 嵌套循环
  • 专题:2025年AI Agent智能体行业价值及应用分析报告:技术落地与风险治理|附140+ 份报告PDF、数据、可视化模板汇总下载
  • 费马小定理在素数检测中的应用
  • 4.6.4版本闪亮登场~赶快了解一下新内容吧
  • 2025年11月花芽分化氨基酸水溶肥,膨果上色氨基酸水溶肥,高含量氨基酸水溶肥厂家推荐,实测促产效果与品牌解析!
  • XMind for Mac v24.01.dmg 安装教程(Mac思维导图软件下载安装步骤)
  • C语言内存管理怎样优化空间
  • debug linux
  • ASP服务器安装步骤有哪些
  • blink sql支持哪些复杂查询
  • 2025氮化硼陶瓷实力榜:福维科五星领衔,氮化硼陶瓷/高温绝缘体/坩埚/套管/基板/高温构件/耐腐蚀构件/微波和红外窗口制品/润滑剂、脱模剂和涂层/中子吸收材料等制品赋能工业升级
  • #题解#洛谷 P1904 天际线#离散化#
  • 2025实力派防冻/工程装土/草袋子供应商排行榜:防汛 / 保温 / 护坡草袋子全场景覆盖,3家优质企业凭硬实力出圈
  • Windows 11 上安装 JDK
  • 防爆烘箱厂家哪家强?国内实力企业综合评析
  • 北京婚姻律师事务所哪家好?行业服务机构盘点
  • 北京离婚律所推荐:婚姻家事法律服务机构选择参考
  • ITR经典案例 | 燕千云携手汽车电子巨头,升级智能客户服务体系
  • ai 常识
  • oeasy玩py106 列表_删除_del_索引元素_切片
  • Java初尝试:电梯调度迭代开发
  • 低功耗抗干扰液晶驱动工控仪表段码驱动显示IC VK2C21BA LCD驱动原厂
  • 四川靠谱的小红书代运营公司推荐,小红书推广/网络推广/网络公关/抖音代运营/抖音推广/网络营销/网站建设小红书代运营公司找哪家
  • 同样都是36岁,同样都是面临人生的抉择,《岁月》中的梁志远放下清高觉醒了,我呢,如何在社会这个大染缸里面混呢?