因为在 OpenCV2 里面,所有的东西都是 numpy array 即 np.ndarray1,所以使用 opencv 剪切图像主要原理是用 ndarray 的切片。一张图片基本上都是三维数组:行,列,通道数,切片只是涉及到前两维。

选用这张图的原因是该图十分的规整。每一片的大小都是 240×375 的,这为我们探究 ndarray 切片方式提供了便利。话不多说,代码如下:

import numpy as np
import cv2img = cv2.imread(r"C:\Users\Administrator\Desktop\players.png")
cv2.imshow("sss", img[0:375, 240:480])

最后剪切出来的图如下。

我们根据这张图分析一下 img[0:375, 240:480] 的含义1

  • 0:375 指的从竖直方向截取 0~375
  • 240:480 指的是从水平方向截取 240~480
  • 其中原点是图片的左上角

∣−−240,0−−−−−−−−−−−−>x|-- 240,0 ------------>x∣−−240,0−−−−−−−−−−−−>x
∣∣∣|\space \space \space \space\space \space \space \space\space \space |\space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space |∣          ∣                                 ∣
∣∣∣|\space \space \space \space\space \space\space \space\space \space |\space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space |∣          ∣                                 ∣
∣∣∣|\space \space\space \space\space \space \space \space\space \space |\space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space |∣          ∣                                 ∣
∣∣−−−−−−−−480,375|\space \space\space \space\space \space\space \space\space \space | --------480,375∣          ∣−−−−−−−−480,375
∣|∣
∨\vee∨
yyy

当然我们也可以利用切片来选择我们感兴趣的区域(ROI,Region of Interest)

PS. 一开始我觉得比较令人费解的是这里 x y 是反的,但是其实这是对二维 ndarray 索引的概念没有搞清楚。二维 ndarray 索引其实和 C++/Java 里面二维数组索引是一样的,都是先找到行,再找到列。这样理解就不会感觉怪了。说的更具体一点其实是现找到第一个 axis 然后再找到第二个 axisaxis 的概念可以参考 The Basics 的前三段。y 代表的是第一个轴,x 代表的是第二个轴,都是先找第一个轴再找第二个轴。


样例来自:https://www.cs.cmu.edu/~mrmiller/15-110/Handouts/arrays2D.pdf


  1. https://stackoverflow.com/questions/15589517/how-to-crop-an-image-in-opencv-using-python ↩︎ ↩︎

python opencv 剪切图片相关推荐

  1. python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和 ...

  2. python opencv 得到图片路径image_path的宽wide、高heigh和深度deep

    python opencv 得到图片路径image_path的宽wide.高heigh和深度deep 图片路径是:'1.jpg' 下面是具体代码: import cv2 #得到图片路径image_pa ...

  3. 2021-01-07 python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和亮 ...

  4. Python OpenCV去除图片水印

    问题描述 去除百度水印 1.jpg,背景简单 2.jpg,背景复杂 解决方案 安装 pip install opencv-python pip install numpy 方法一.OpenCV提取颜色 ...

  5. python opencv获取图片分辨率_python-opencv遍历图片像素,并对像素进行操作

    看代码: def access_pixels(frame): print(frame.shape) #shape内包含三个元素:按顺序为高.宽.通道数 height = frame.shape[0] ...

  6. python +opencv 根据图片定位进行UI自动化

    python +opencv 根据图片定位进行UI自动化 前言: 做过移动端ui自动化的小伙伴,就会发现很多控件的元素是一样的或者是找不到的,为了解决这个痛点,于是通过图片灰度处理返回坐标x,y找到控 ...

  7. python opencv 裁剪图片_Python图片裁剪的两种方式——Pillow和OpenCV

    在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV.两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧. OpenCV ...

  8. python opencv 为图片添加alpha通道并设置透明,判断是否存在alpha通道

    读取图片 使用函数cv2.imread(filepath,flags)读入一副图片 filepath:要读入图片的完整路径 flags:读入图片的标志 cv2.IMREAD_COLOR:默认参数,读入 ...

  9. python opencv显示图片一闪而过_解决Opencv+Python cv2.imshow闪退问题

    Opencv+Python cv2.imshow闪退 # 读入原始图像 origineImage = cv2.imread('./pic/6.jpeg') # 图像灰度化 # image = cv2. ...

最新文章

  1. path与classpath区别 path是Windows查找.exe文件的路径;classpath是jvm查找.class文件的路径
  2. 游戏里的角色都什么格式图片_为什么这游戏里别人的都是大白鲨,我却是小金鱼?...
  3. 如何在Dart中合并列表
  4. Linux / 僵尸进程、孤儿进程 产生原因、有什么危害、如何预防(解决方案)
  5. 异常处理python要求输入的为英文_python(异常处理)
  6. GIT提交message规范
  7. MySQL 数据库 like 语句通配符模糊查询小结
  8. metasploit基本使用方法
  9. Redis集群之哨兵模式
  10. 轨迹跟踪_预描点寻找
  11. DDD~领域事件应用篇(订单处理变得更清晰)
  12. 通俗理解同步IO\异步IO
  13. 硬件-1-打印机爱普生L3153墨仓式一体机
  14. u盘坏了在计算机不显示,U盘在电脑上不能显示怎么办
  15. 洛谷P3376 【模板】网络最大流{Dinic算法}
  16. 植树问题java,云南省优秀多媒体育软件大赛公示.doc
  17. linux wps只读模式怎么取消,wps只读模式解除的两种方法
  18. Endnote 导入enw文件无响应及解决方法
  19. PSINS_Toolbox使用心得1
  20. 前端必备:五大css自动化生成网站(稀有级别!)

热门文章

  1. java数组不初始化长度_数组之初始化 Java
  2. 加mp4文件后js失效_video不能播放mp4的问题(一)
  3. 【2019年04月04日】股市指数估值排名
  4. 双硬盘安装双系统,配置显卡驱动,安装cuda,pycuda
  5. 2010-05-20 代码复用、使用率情况分析
  6. [CVPR2022]3D Photo Stylization: Learning to Generate Stylized Novel Views from a Single Image
  7. Tiled有java版本吗_使用TILED映射的Java碰撞检测
  8. unity NullReferenceException: Object reference UnityEditor.Graphs.Edge.WakeUp () (at D:/unity/
  9. Django 项目管理
  10. rsyslog搭建远程日志服务器