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

班级网站布局湖南网站建设kaodezhu

班级网站布局,湖南网站建设kaodezhu,wordpress关注系统,河南智慧团建登录入口官网缩放与裁剪裁剪图像的裁剪#xff0c;是指将图像的某个区域切割出来。一些常见的应用场景包括#xff1a;* 感兴趣区域提取* 去除无用信息* 图像增强* 纠偏#xff1a;去除不规则部分#xff0c;将图像变得更加整齐事实上#xff0c;图像裁剪的裁剪通常就是一个numpy矩阵切…缩放与裁剪裁剪图像的裁剪是指将图像的某个区域切割出来。一些常见的应用场景包括 * 感兴趣区域提取 * 去除无用信息 * 图像增强 * 纠偏去除不规则部分将图像变得更加整齐事实上图像裁剪的裁剪通常就是一个numpy矩阵切片的过程。其中的关键内容在于获取目标区域的坐标。给定一个512*512的lena图像想要裁剪出以原图中心点为中心的320*320的图像代码如下所示import cv2 import matplotlib.pyplot as pltimg cv2.imread(./dataset/lena.png) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img) plt.axis(off) plt.show() # numpy切片 h, w img.shape[:2] cropped_img img[h // 2 - 160: h // 2 160, w // 2 - 160: w // 2 160, :] plt.imshow(cropped_img) plt.show()#PIL库 from PIL import Image cropped_img img.crop((512 // 2 - 320 // 2, 512 // 2 - 320 // 2, # 左上角坐标512 // 2 320 // 2, 512 // 2 320 // 2)) # 右下角坐标 plt.imshow(cropped_img) plt.show()缩放cv2.resize(img, dsize(, ), interpolationcv2.INTER_AREA)在resize函数的参数中第一个参数为待缩放图片第二个参数为缩放后的尺寸。第三个参数为插值方法共包括* cv2.INTER_NEAREST最近邻插值。* cv2.INTER_LINEAR双线性插值。* cv2.INTER_CUBIC双立方插值。* cv2.INTER_AREA区域插值。* cv2.INTER_LANCZOS4Lanczos插值以上插值方法特点不同下面展示其中区别img cv2.imread(./dataset/lena.png) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) resized_img_1 cv2.resize(img, dsize(256, 384), interpolationcv2.INTER_AREA) plt.imshow(resized_img_1) plt.show()插值* 最近邻插值 源图像中距离新像素位置最近的像素赋值给新像素。 * 例如图像缩放了fx和fy倍那么新图像中的像素坐标$x, y$对应原图坐标为$f_xx, f_yy$ * 优点速度快 * 缺点未考虑周围像素锯齿严重* 双线性插值从周围四个像素共同加权计算像素值距离越近权重越大距离越远权重越小 * 优点平滑 * 速度慢大部分使用* 双立方插值新图像的每个点都参考了周围16个点的信息 * 两个基本步骤 - 计算周围16个点的像素值 - 拟合函数计算最终像素值 * 优点保留图像细节信息 * 缺点计算量大耗时长* 区域重采样按区域计算新像素 * 每个像素都选取一个固定大小的区域 * 每个区域通过一定算法计算一个新的像素值 * 优点保真不易出现伪影* lanczos造了一个核函数计算新像素 * 优点更加平滑的采样结果 * 缺点计算成本高其中a为核半径在目标像素的a范围内通过公式计算新的像素值。target_img img[240: 272, 240: 272, :] # plt.imshow(target_img) # plt.show()nearest cv2.resize(target_img, (768, 768), interpolationcv2.INTER_NEAREST) linear cv2.resize(target_img, (768, 768), interpolationcv2.INTER_LINEAR) cubic cv2.resize(target_img, (768, 768), interpolationcv2.INTER_CUBIC) area cv2.resize(target_img, (768, 768), interpolationcv2.INTER_AREA) lanczos cv2.resize(target_img, (768, 768), interpolationcv2.INTER_LANCZOS4) fig, ax plt.subplots(nrows1, ncols5, figsize(12,12)) print(ax) ax[0].imshow(nearest) ax[1].imshow(linear) ax[2].imshow(cubic) ax[3].imshow(area) ax[4].imshow(lanczos)ax[0].axis(off) ax[1].axis(off) ax[2].axis(off) ax[3].axis(off) ax[4].axis(off)plt.show()仿射变换和透视变换1. 仿射变换https://blog.csdn.net/weixin_51571728/article/details/124434728对于二维平面来说仿射变换就是将一个点通过**线性变换**映射到另一个二维平面中的点。平行原则原来是平行线仿射后也是平行线直线原则原来是直线仿射以后也是直线与之相对的**非线形变换**不是仿射变换因为其不满足仿射变换的线性性质。一个典型的非仿射变换为透视变换。对于矩阵来说仿射变换的结果可以表示为矩阵的乘积。仿射变换通常包含以下几种操作* 平移沿着xy方向移动图像* 旋转围绕中心点旋转图像* 缩放缩放到指定大小* 错切在平面上将图像斜切一定角度仿射变换可用于图像对齐、图像矫正、图像增强等。图像旋转图像旋转是一种特殊的仿射变换在PIL中图像旋转有专用的函数接口img.rotate(角度center[ , ])示例如下import PIL.Image as Image import matplotlib.pyplot as pltimg Image.open(E:/notebook/3c.png) # 绕中心点逆时针转45度 rotated_img img.rotate(45, center[img.width // 2, img.height // 2]) fig, (ax1, ax2) plt.subplots(nrows1, ncols2) ax1.imshow(img) ax2.imshow(rotated_img) ax1.axis(off) ax2.axis(off) plt.show()OpenCV提供了更加便捷灵活的函数方法:首先通过指定的中心和旋转角度定义旋转矩阵:cv2.getRotationMatrix2D((旋转中心), 角度, 缩放比例)其次根据旋转矩阵进行仿射变换实现旋转cv2.warpAffine(img, 旋转矩阵, (运算后矩阵的大小也就是输出图片的尺寸) )https://blog.csdn.net/m0_51545690/article/details/123959995import cv2 img cv2.imread(E:/notebook/3c.png) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) M cv2.getRotationMatrix2D((img.shape[0] // 2, img.shape[1] // 2), 45, 1) # print(M) # 旋转矩阵 #[[ 0.70710678 0.70710678 -102.64170235] # [ -0.70710678 0.70710678 208.20101013]] # # 得到矩阵后得用到图像的仿射变换函数才可以进行最终图像的变化 rotate_img cv2.warpAffine(img, M, (512,512)) fig, (ax1, ax2) plt.subplots(nrows1, ncols2) ax1.imshow(img) ax2.imshow(rotate_img) ax1.axis(off) ax2.axis(off) plt.show()不依赖第三方库将一个图像按照中心点缩小为原面积的四分之一。import cv2 img cv2.imread(E:/notebook/lena.png) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) def resize(image):# image是读取用opencv读取完毕的numpy矩阵# 输出为仿射变换后的矩阵注意要将其转化为适合图像的数据类型# 此处撰写代码M np.array([[.5, 0, 0],[0, .5, 0]])# 首先将图像的平面坐标扩展出一个1可直接相乘img_matrix np.array([[i, j, 1] for j in range(512) for i in range(512)])img_matrix img_matrix.T# 其次乘以矩阵得到新的坐标rotated_img_matrix np.dot(M, img_matrix)rotated_img_matrix np.rint(rotated_img_matrix).astype(int)# 最后按照新坐标填补像素resized_image np.zeros_like(img)for i in range(512):for j in range(512):num i * 512 jx rotated_img_matrix[1, num]y rotated_img_matrix[0, num]if 0 x 512 and 0 y 512:resized_image[x, y] img[i, j]return resized_image final_img resize(img) plt.imshow(final_img) plt.show()2. 透视变换原理https://blog.csdn.net/m0_43609475/article/details/112847314区别于仿射变换透视变换是通过变换矩阵对图像进行变形来实现视角的转换。在透视变换中不仅会发生平移或者旋转也会发生图像形变。仿射变换需要三点求解仿射矩阵而透视变换则需要四点标定来获得变换矩阵常见应用鱼眼畸变校正、鸟瞰视角变换opencv函数getPerspectiveTransform([左上][左下][右上][右下]四个坐标)warpPerspective(img, 旋转矩阵 输出图片大小)例将图像变为正对镜头的视角import cv2img cv2.imread(E:/notebook/grid.png) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) print(img.shape) M cv2.getPerspectiveTransform(np.float32([[410, 392], [506, 677], [828, 283], [897, 635]]), np.float32([[0, 0], [0, 980], [1272, 0], [1272, 980]])) print(M) plt.imshow(img) plt.show() project_img cv2.warpPerspective(img, M, (1272, 980)) plt.imshow(project_img) plt.show()https://blog.csdn.net/m0_51653200/article/details/127361624
http://www.w-s-a.com/news/683240/

相关文章:

  • 现在建设的网站有什么劣势温州互联网公司
  • 重庆自助企业建站模板淘宝关键词top排行榜
  • 平邑网站制作买高端品牌网站
  • 深圳建网站三千网站安全代维
  • 西宁市精神文明建设网站装饰设计甲级资质
  • 做教育行业营销类型的网站徐州做网站多少钱
  • 临沂品牌网站制作企业网站建设搜集资料
  • wordpress注册验证码手机网站优化
  • 往建设厅网站上传东西做衣服的教程网站有哪些
  • 网上商城网站设计免费咨询口腔科医生回答在线
  • 南京网站c建设云世家 s浏览器
  • 如何做镜像别人网站wordpress菜单对齐修改
  • 长春网站建设net企业公示信息查询官网
  • 金鹏建设集团网站可在哪些网站做链接
  • 电子产品网站开发背景网站关键词优化方案
  • 建网站论坛wordpress提交数据库错误
  • 国内网站建设公司开源网站系统
  • 网站开发公司上大连网站建设流程图
  • 银川网站seo宁波网
  • 个人备案网站会影响吗网站添加 备案
  • 网站建设与电子商务的教案关于旅游网站建设的方案
  • 电子商务网站建设设计原则找做网站找那个平台做
  • 天津高端品牌网站建设韶关网站建设墨子
  • Wordpress多站点为什么注册不了2008iis搭建网站
  • 天津高端网站制作建网站的公司服务
  • 温州网站推广优化类似淘宝的网站怎么做的
  • 网站建设实训考试什么网站做玩具的比较多
  • 上海网站建设特点怎样给公司做一个网站做推广
  • 流量网站怎么做的济南优化排名公司
  • 保定网站制作套餐设计师导航网站大全