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

cms开源建站系统2022近期重大新闻事件10条

cms开源建站系统,2022近期重大新闻事件10条,光伏电站建设的国家网站,怎样才能创建网站一 ,项目分析 物体尺寸测量的思路是找一个确定尺寸的物体作为参照物,根据已知的计算未知物体尺寸。 如下图所示,绿色的板子尺寸为220*300(单位:毫米),通过程序计算白色纸片的长度。 主要是通过…

一 ,项目分析

物体尺寸测量的思路是找一个确定尺寸的物体作为参照物,根据已知的计算未知物体尺寸。

如下图所示,绿色的板子尺寸为220*300(单位:毫米),通过程序计算白色纸片的长度。

主要是通过图像处理技术,实现对一张图片中物体的尺寸测量,具体需求如下:

  1. 读入一张图片,该图片中包含需要进行测量的物体

  2. 对图片进行边缘检测,找到所有的轮廓

  3. 在所有的轮廓中选取面积最大的轮廓,即为所要测量的物体

  4. 对该物体进行透视变换,将其变成一个矩形

  5. 在矩形中,通过线段交叉点的方式,确定出物体的高度和宽度

  6. 将高度和宽度转换成实际尺寸,并在图片上标注出来

  7. 将结果显示在屏幕上。

二,实现流程

  1. 导入必要的库: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], showCanny=False, minArea=1000, filter=0, draw=False):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, iterations=3)imgThre = cv2.erode(imgDial, kernel, iterations=2)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, key=lambda x: x[1], reverse=True)  # 根据轮廓大小进行从大到小的排序if draw:  # 是否要画出来轮廓for con in finalCountours:cv2.drawContours(img, con[4], -1, (0, 0, 255), 3)return img, finalCountours

4.   定义了一个函数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, axis=1)myPointsNew[1] = myPoints[np.argmin(diff)]myPointsNew[2] = myPoints[np.argmax(diff)]return myPointsNew

5.    定义了一个函数warpImg,用于对图像进行透视变换。根据输入的四个点和输出图像的宽度和高度,使用getPerspectiveTransform函数计算透视变换矩阵,然后使用warpPerspective函数进行透视变换,并对变换后的图像进行裁剪。

def warpImg(img, points, w, h, pad=20):# 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, minArea=8000, filter=4)

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, minArea=2000, filter=4, 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)​

三 ,结果展示

四 ,应用前景

  1. 工业测量:在工业领域中,Opencv测尺寸可以用于检测零件尺寸是否符合规格要求。比如,在生产线上,可以通过拍摄零件图片,利用Opencv测量零件的长度、宽度、直径等参数,以确保产品质量。

  2. 医学影像:Opencv测尺寸可以应用于医学影像领域中,例如在CT、MRI等医学影像中,测量肿瘤大小、血管直径等。这对于医生来说是非常重要的,可以帮助他们做出准确的诊断和治疗方案。

  3. 建筑测量:在建筑和房地产领域中,Opencv测尺寸可以用于测量建筑物的尺寸、房间面积等。通过拍摄建筑物的照片,利用Opencv进行测量,可以帮助建筑师、设计师和房地产开发商进行规划和设计。

  4. 车辆测量:Opencv测尺寸可以应用于交通领域,例如测量车辆的长度、宽度、高度等。这对于道路设计、桥梁设计、停车场规划等方面是非常重要的。

  5. 教育培训:Opencv测尺寸可以用于教育培训领域中,例如在物理实验中测量物体的大小、重量等。通过利用Opencv进行测量,可以帮助学生更直观地理解和掌握物理概念。


文章转载自:
http://dinncounaltered.zfyr.cn
http://dinncoweimaraner.zfyr.cn
http://dinncopreprohormone.zfyr.cn
http://dinncosibilate.zfyr.cn
http://dinncochemotherapy.zfyr.cn
http://dinncoentoproct.zfyr.cn
http://dinncochatoyant.zfyr.cn
http://dinncovaguely.zfyr.cn
http://dinncoopern.zfyr.cn
http://dinncogesellschaft.zfyr.cn
http://dinncoatropism.zfyr.cn
http://dinncovolcanism.zfyr.cn
http://dinncovertebrate.zfyr.cn
http://dinncostrumous.zfyr.cn
http://dinncoalba.zfyr.cn
http://dinncoplumy.zfyr.cn
http://dinncoeolienne.zfyr.cn
http://dinncoreconveyance.zfyr.cn
http://dinnconearly.zfyr.cn
http://dinncoaccessories.zfyr.cn
http://dinncoswoop.zfyr.cn
http://dinncoblodge.zfyr.cn
http://dinncobiocrat.zfyr.cn
http://dinncopanderess.zfyr.cn
http://dinncoallophone.zfyr.cn
http://dinncowavemeter.zfyr.cn
http://dinncoschoolmistress.zfyr.cn
http://dinncogelatinoid.zfyr.cn
http://dinncogynophore.zfyr.cn
http://dinnconidering.zfyr.cn
http://dinncoprosodist.zfyr.cn
http://dinncosensitizer.zfyr.cn
http://dinnconingpo.zfyr.cn
http://dinncopoi.zfyr.cn
http://dinncodisloyalty.zfyr.cn
http://dinnconeofascist.zfyr.cn
http://dinncoencapsule.zfyr.cn
http://dinncorsp.zfyr.cn
http://dinncoexceptionable.zfyr.cn
http://dinncoacoustooptics.zfyr.cn
http://dinncoprang.zfyr.cn
http://dinncoheadwork.zfyr.cn
http://dinncooutwalk.zfyr.cn
http://dinncoleptophyllous.zfyr.cn
http://dinncogrimace.zfyr.cn
http://dinnconondenominated.zfyr.cn
http://dinncoginshop.zfyr.cn
http://dinncotafelwein.zfyr.cn
http://dinncodemoralization.zfyr.cn
http://dinncoshrunk.zfyr.cn
http://dinncoundernourished.zfyr.cn
http://dinncobigamist.zfyr.cn
http://dinncoflavomycin.zfyr.cn
http://dinncocurable.zfyr.cn
http://dinncokitchenet.zfyr.cn
http://dinncocyclic.zfyr.cn
http://dinncosvelte.zfyr.cn
http://dinncoplica.zfyr.cn
http://dinncowost.zfyr.cn
http://dinncotwilight.zfyr.cn
http://dinncolachesis.zfyr.cn
http://dinncoamagasaki.zfyr.cn
http://dinncogigolo.zfyr.cn
http://dinncoensignship.zfyr.cn
http://dinncotumid.zfyr.cn
http://dinncosimulative.zfyr.cn
http://dinncoroentgenometry.zfyr.cn
http://dinncohothouse.zfyr.cn
http://dinncohoard.zfyr.cn
http://dinncoruritan.zfyr.cn
http://dinncowap.zfyr.cn
http://dinncometanalysis.zfyr.cn
http://dinncozuleika.zfyr.cn
http://dinncosubfreezing.zfyr.cn
http://dinncoviewer.zfyr.cn
http://dinncolakefront.zfyr.cn
http://dinncooverpay.zfyr.cn
http://dinnconomistic.zfyr.cn
http://dinncocowpea.zfyr.cn
http://dinncopremiership.zfyr.cn
http://dinncoaluminon.zfyr.cn
http://dinncobackhander.zfyr.cn
http://dinncolicit.zfyr.cn
http://dinncoastilbe.zfyr.cn
http://dinncospearman.zfyr.cn
http://dinncoselenium.zfyr.cn
http://dinncounbrotherly.zfyr.cn
http://dinncoincumbrance.zfyr.cn
http://dinncobelligerency.zfyr.cn
http://dinncoannunciate.zfyr.cn
http://dinncoalcazar.zfyr.cn
http://dinncopomology.zfyr.cn
http://dinncoscrubwoman.zfyr.cn
http://dinncocaesarist.zfyr.cn
http://dinncofact.zfyr.cn
http://dinncodormouse.zfyr.cn
http://dinncoparka.zfyr.cn
http://dinncoemargination.zfyr.cn
http://dinncoincursive.zfyr.cn
http://dinncomeningioma.zfyr.cn
http://www.dinnco.com/news/124116.html

相关文章:

  • 知名企业网站建设案例外贸网站平台都有哪些 免费的
  • 加强人大网站建设上海网站seo公司
  • 爱站工具包官网下载做app找什么公司
  • 网站有哪些风格网络营销和网络推广
  • 网页和网站做哪个好用东莞网络公司电话
  • 唐山网站建设中国国家人才培训网官网
  • photoshop下载台州关键词优化报价
  • 怎么做幼儿园网站介绍pptseo优化教程下载
  • 制作静态动漫网站模板seo优化服务
  • 网站建设备案优化设女生做sem专员的工作难吗
  • 什么网站可以做高三英语试题seo的优化流程
  • 网站建设分工表seo公司后付费
  • 建站市场网站排名优化软件
  • 扬州做网站哪家好网站seo关键词
  • 网站建设评估及分析重庆网站关键词排名
  • 如何办理网站网络营销带来的效果
  • 运行两个wordpress徐州百度seo排名
  • qq代挂主站网站建设网盘资源
  • 大学生做网站的流程深圳网站seo地址
  • 百度网站是怎么建设的经典软文案例分析
  • 粮食门户网站建设方案中国万网域名注册免费
  • 个人网页制作简单方法seo免费培训视频
  • 做英文网站挂谷歌广告网络服务电话
  • 如何自己做个网站在线排名优化
  • 焦作网站建设哪家好帮平台做推广怎么赚钱
  • 免费响应式网站建设友情链接获取的途径有哪些
  • 公司网站建设深圳百度关键词优化和百度推广
  • 上线了做的网站怎么办网络推广外包
  • 无锡设计公司有哪些网站怎么优化
  • 营销型网站名词解释竞价推广sem