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

网站服务器和网站摄影网站制作流程

网站服务器和网站,摄影网站制作流程,企业解决方案公司有哪些,临沂国际外贸网站建设目录 一、透视变换 1、什么是透视变换 2、操作步骤 1#xff09;选择透视变换的源图像和目标图像 2#xff09;确定透视变换所需的关键点 3#xff09;计算透视变换的变换矩阵 4#xff09;对源图像进行透视变换 5#xff09;对变换后的图像进行插值处理 二、轮廓检测…目录 一、透视变换 1、什么是透视变换 2、操作步骤 1选择透视变换的源图像和目标图像 2确定透视变换所需的关键点 3计算透视变换的变换矩阵 4对源图像进行透视变换 5对变换后的图像进行插值处理 二、轮廓检测 1、什么是轮廓检测 2、操作步骤 1图像预处理 2边缘检测 3边缘连接 4轮廓筛选 5轮廓绘制 三、项目实施 1、定义展示图片函数 2、定义自动缩放图片大小函数 3、定义轮廓点的排序函数 4、定义透视变换函数 5、读取原图并缩放 运行结果 6、进行轮廓检测 运行结果 5、绘制最大轮廓 运行结果 6、对最大轮廓进行透视变换 运行结果 7、旋转、二值化处理 运行结果 一、透视变换 1、什么是透视变换 透视变换是一种图像处理技术用于将二维平面上的图像或物体映射到三维空间中。它通过改变图像的视角和投影来创建一个具有透视效果的图像。 透视变换通常用于计算机图像形态学和计算机视觉领域用于实现图像的透视效果、立体视觉、图像校正等应用。它可以模拟人眼在观察远景时的透视效果使得远处的物体看起来比近处的物体小同时使得平行线在远处会相交的视觉效果。 透视变换的实现通常需要通过计算图像中各点在三维空间中的坐标并将其映射回二维平面上从而实现透视效果。这个过程涉及到几何变换、矩阵运算和投影变换等数学概念和算法。 2、操作步骤 1选择透视变换的源图像和目标图像 源图像是需要进行透视变换的原始图像目标图像是希望得到的透视变换后的图像。 2确定透视变换所需的关键点 根据透视变换的要求需要选择源图像中的四个关键点以及对应的目标图像中的四个关键点。这四个关键点共同决定了透视变换的变换矩阵。 3计算透视变换的变换矩阵 通过四个关键点的对应关系使用透视变换的数学公式计算出透视变换的变换矩阵。这个变换矩阵将源图像中的像素映射到目标图像中的像素。 4对源图像进行透视变换 使用计算得到的变换矩阵对源图像中的每个像素进行变换计算其在目标图像中的对应像素位置。 5对变换后的图像进行插值处理 由于透视变换可能会导致源图像中的像素映射到目标图像中的非整数位置因此需要对其进行插值处理以得到最终的目标图像。 二、轮廓检测 1、什么是轮廓检测 轮廓检测是一种图像处理技术用于在图像中找到物体的边界。在图像处理领域中物体的边界通常被表示为连续的曲线这些曲线被称为轮廓。轮廓检测算法可以识别图像中的明显变化或不连续的像素从而确定物体的形状和结构。 轮廓检测算法的基本原理是通过分析图像中的亮度、颜色或纹理等特征找到物体与背景之间的显著边缘或变化。常用的轮廓检测算法包括Canny边缘检测、Sobel算子、拉普拉斯算子等。 通过轮廓检测可以实现图像分割、目标识别、形状匹配等应用。在计算机视觉和图像处理领域中轮廓检测是一项重要的技术广泛应用于物体检测与跟踪、图像分析与理解、机器视觉等领域。 2、操作步骤 1图像预处理 首先对输入图像进行预处理可以包括灰度化、平滑滤波、边缘增强等操作以减少噪声和突出边缘信息。 2边缘检测 使用边缘检测算法如Canny、Sobel、拉普拉斯等来检测图像中的边缘。这些算法通过计算像素间的梯度或差异找到亮度或颜色变化较大的区域。 3边缘连接 将离散的边缘点连接成连续的轮廓线。常用的方法包括利用边缘点的邻域信息进行连接或者利用轮廓线的闭合性质进行曲线追踪。 4轮廓筛选 根据一定的准则对检测到的轮廓进行筛选去除无关的轮廓。可以根据轮廓的长度、面积、形状等特征进行筛选。 5轮廓绘制 最后将筛选后的轮廓绘制在原始图像上以便观察和分析。 具体可参考博客 《深度学习》OpenCV 图像轮廓检测、轮廓处理及代码演示https://ahao1004.blog.csdn.net/article/details/141830045?fromshareblogdetailsharetypeblogdetailsharerId141830045sharereferPCsharesourceqq_64603703sharefromfrom_link 三、项目实施 1、定义展示图片函数 import numpy as np import cv2 def cv_show(name,img):cv2.imshow(name,img)cv2.waitKey(0) 2、定义自动缩放图片大小函数 # 调整图像高宽保持图像宽高比不变 def resize(image,widthNone,heightNone ,intercv2.INTER_AREA): # 输入参数为图像、可选宽度、可选高度、插值方式默认为cv2.INTER_AREA,即面积插值dim None # 存储计算后的目标尺寸w、h(h,w) image.shape[:2] # 返回输入图像高宽if width is None and height is None: # 判断是否指定了宽和高大小如果没有指定则返回原图return imageif width is None: # 判断如果没有指定宽度大小则表示指定了高度大小那么运行内部代码r height/float(h) # 指定高度与原图高度的比值dim (int(w*r),height) # 宽度乘以比值得到新的宽度此处得到新的宽高else: # 此处表示为width不是None即指定了宽度与上述方法一致计算比值r width/float(w)dim (width,int(h*r))resized cv2.resize(image,dim,interpolationinter) # 指定图像大小为上述的diminter默认为cV2.INTER_AREA即面积插值适用于缩放图像。return resized 3、定义轮廓点的排序函数 def order_points(pts): # 对输入的四个点按照左上、右上、右下、左下进行排序rect np.zeros((4,2),dtypefloat32) # 创建一个4*2的数组用来存储排序之后的坐标位置# 按顺序找到对应坐标0123分别是左上、右上、右下、左下s pts.sum(axis1) # 对pts矩阵的每个点的x y相加rect[0] pts[np.argmin(s)] # np.argmin(s)表示数组s中最小值的索引表示左上的点的坐标rect[2] pts[np.argmax(s)] # 返回最大值索引即右下角的点坐标diff np.diff(pts,axis1) # 对pts矩阵的每一行的点求差值rect[1] pts[np.argmin(diff)] # 差值最小的点为右上角点rect[3] pts[np.argmax(diff)] # 差值最大表示左下角点return rect # 返回排序好的四个点的坐标 4、定义透视变换函数 # 将透视扭曲的矩形变换成一个规则的矩阵 def four_point_transform(image,pts):# 获取输入坐标点rect order_points(pts) # 为上述排序的四个点(tl,tr,br,bl) rect # 分别返回给四个值分别表示为左上、右上、右下、左下# 计算输入的w和h值widthA np.sqrt(((br[0] - bl[0]) ** 2) ((br[1]-bl[1]) ** 2)) # 计算四边形底边的宽度widthB np.sqrt(((tr[0] - tl[0]) ** 2) ((tr[1]-tl[1]) ** 2)) # 计算顶边的宽度maxWidth max(int(widthA), int(widthB)) # 返回最大宽度heightA np.sqrt(((tr[0] - br[0]) ** 2) ((tr[1] - br[1]) ** 2)) # 计算左上角到右下角的对角线长度heightB np.sqrt(((tl[0] - bl[0]) ** 2) ((tl[1] - bl[1]) ** 2)) # 计算右上角到左下角的高的长度maxHeight max(int(heightA),int(heightB)) # 返回最长的高度# 变换后对应坐标位置dst np.array([[0,0], # 定义四个点表示变换后的矩阵的角点[maxWidth-1,0],[maxWidth-1,maxHeight-1],[0,maxHeight-1]],dtypefloat32)M cv2.getPerspectiveTransform(rect,dst) # 根据原始点和变换后的点计算透视变换矩阵Mwarped cv2.warpPerspective(image,M,(maxWidth,maxHeight)) # 对原始图像针推变换矩阵和输出图像大小进行透视变换返回变换后的图片# 返回变换后的结果return warped 5、读取原图并缩放 # # 读取输入 image cv2.imread(fapiao.jpg) # 读取原图 cv_show(image,image) # 展示原图# 图片过大进行缩小处理 ratio image.shape[0] / 500.0 # 计算缩小比率[0]表示图像的高 orig image.copy() # 对原图复制生成副本 image resize(orig, height500) # 更改图像尺寸输入高度自动生成宽度 cv_show(1,image) # 展示缩放后的图片 运行结果 6、进行轮廓检测 gray cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) # 灰度图edged cv2.threshold(gray,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] # 进行二值化cv2.THRESH_OTSU自动寻找最优全局阈值255表示高于最优阈值时将其更改为255 cnts cv2.findContours(edged.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)[1] # 轮廓检测 # cv2.RETR_LIST表示检索所有轮廓但是不建立层次关系 # cv2.CHAIN_APPROX_SIMPLE 表示只保存轮廓拐点的信息 # 总体返回处理的图像、轮廓列表、层次结构这里返回索引为1表示返回轮廓列表image_contours cv2.drawContours(image.copy(),cnts,-1,(0,0,255),1) # 绘制所有轮廓 # 在原始图像的副本上绘制了轮廓 # 绘制轮廓的位置为上述获取的拐点信息绘制线条颜色为红色BRG(0,0,255),线条粗细为1个像素cv_show(image_contours,image_contours) # 展示绘制好的图片 运行结果 5、绘制最大轮廓 screenCnt sorted(cnts,key cv2.contourArea,reverseTrue)[0] # 对上述获取的轮廓列表排序依据是轮廓面积reverseTrue表示降序[0]表示获取面积最大的轮廓 peri cv2.arcLength(screenCnt,True) # 计算最大轮廓的周长 screenCnt cv2.approxPolyDP(screenCnt,0.02*peri,True) # 轮廓近似近似为一个多边形表示新的轮廓与原来的轮廓最大距离不超过原始轮廓宽度的0.02倍True表示轮廓为闭合的 image_contour cv2.drawContours(image.copy(),[screenCnt],-1,(0,255,0),2) # 绘制轮廓将上述找到的轮廓绘制到原图的副本上 cv2.imshow(image_contour,image_contour) cv2.waitKey(0) 运行结果 6、对最大轮廓进行透视变换 warped four_point_transform(orig,screenCnt.reshape(4,2)*ratio) # 输入参数原图将最大轮廓图形状改变为4*2的格式即四个点然后乘以上述定义的比率来缩放轮廓 cv2.imwrite(invoice_new.jpg,warped) # 将经过透视变换处理的图片存入本地 cv2.namedWindow(xx,cv2.WINDOW_NORMAL) # 设置一个窗口名称为xx这个窗口大小用户可通过拖动随意调节大小 cv2.imshow(xx,warped) # 展示经过透视变换处理的图片 cv2.waitKey(0) 运行结果 7、旋转、二值化处理 # 二值处理 warped cv2.cvtColor(warped,cv2.COLOR_BGR2GRAY) # 导入新的图片的灰度图 ref cv2.threshold(warped,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)[1] # 对灰度图进行二值化处理kernel np.ones((2,2),np.uint8) # 设置一个单位矩阵大小为2*2表示设置核kernel的大小 ref_new cv2.morphologyEx(ref,cv2.MORPH_CLOSE,kernel) # 闭运算先膨胀再腐蚀 ref_new resize(ref_new.copy(),width500) # 对闭运算处理完的图像重置大小 cv_show(yy,ref_new) rotated_image cv2.rotate(ref_new,cv2.ROTATE_90_COUNTERCLOCKWISE) # 对图像逆时针旋转90度 cv2.imshow(result,rotated_image) cv2.waitKey(0) 运行结果
http://www.dnsts.com.cn/news/225032.html

相关文章:

  • 做网站卖仿品有链接的网站
  • 网站建设的功能要求想学网站建设优化去哪
  • 一流的南昌网站建设wordpress框架是什么意思
  • 在网站上做教学直播平台多少钱在线crm免费
  • 全民电竞app的制作公司专业搜索引擎seo合作
  • 摄影网站开发背景怎么写德州网站建设推广价格
  • 酒店类的电影网站模板免费下载建站点
  • wix建站教程wordpress旧版
  • 做纺织外贸网站违法网站怎么做安全
  • 网站建设运营网站建设方案策划书ppt模板下载
  • 58同城一样的网站怎样建设上海网站设计要多少钱
  • 如何建一个个人网站网站开发的过程
  • 网站外链建设有利于增加网站收录智慧团建网站pc端
  • 南京做网站南京乐识专心网站开发摊销期多少年
  • 太谷县建设局网站包头网站设计
  • 河西做网站网络推广的方法有
  • 网站改版费用关键词推广软件排名
  • 淘宝客网站建站教程免费做国际贸易的网站
  • 长沙网站建设公司排行榜php网站集成支付宝接口
  • 网站备案 座机号码美化网站公司
  • 网站建设对付客户网络销售怎么跟客户聊天
  • 做网站的合同广东省网站集约化建设
  • 响应式网站开发遇到的问题seo搜索引擎优化期末及答案
  • 怎样在工商局网站做公示网站建设图片排版
  • 2016年做网站能赚钱吗西安抖音seo推广
  • 网站如何做的看起来高大上邯郸哪有做网站的
  • 网站服务器部署海口网格员
  • 网站系统升级建设合同没地址怎么注册公司
  • 中煤第一建设公司网站python工程打包供网站开发调用
  • 公司建站费用柳州企业网站开发公司