1、加载图像

加载图像是图像处理的第一步
我们假设图像存放在py程序对应的根目录下,名字为pic.jpeg

import cv2
image=cv2.imread("pic.jpeg")
cv2.imshow("orig",image)
cv2.waitKey(0)

执行脚本后,将显示以orig为名的原图像(因为我们未作任何处理)

waitKey(0)指暂停脚本的执行,直到我们按下键盘上的键。使用参数“0”表示任何按键都会取消暂停执行。如果我们不使用这个函数,图像显示的瞬间就会被关闭,从而看不见显示的图像。

2、调整图像尺寸

在后期深度学习时,有的神经网络只接收特定尺寸的图像进行学习。因此,我们要会调整其尺寸。

获取图像的尺寸

print(image.shape)

我得到的结果是(382,750,3),这表示该图像有382行,750列和3通道。这里需要注意,如果用一个长方形的长和宽来比拟的话,行数代表宽度,列数代表长度,和我们平时的长宽说法习惯不同。

调整图像的尺寸

假设我们将图片的列数调整为250列,行数等比例调整

ratio=250/image.shape[1]
resized=cv2.resize(image,(250,int(image.shape[0]*ratio)),
interpolation = cv2.INTER_AREA)
cv2.imshow("resized", resized)
cv2.waitKey(0)

首先,我们的image.shape是一个numpy数组,索引是从0开始计数的。所以image.shape[0]指的是行数,image.shape[1]指的是列数,image.shape[2]指的是通道数。
因为我们这里想等比例缩放图像,所以求了一个比率ratio。
resize函数,第一个参数是输入的图像。第二个参数是要调整的尺寸,这里注意其输入为(列数,宽数),排列顺序和image.shape相反。我们这里还用了一个int类型变换,是因为我们的行数列数需要是整数。第三个参数interpolation是插值方法的选择,对于插值的详细说明可以查看这篇文章。除此之外还有其他一些参数,大家可以查看官方文档,但其实有这些就够了。

调整成(250,250)

3、裁剪图像

有时候我们只关心图像中的某一区域,因为一些不相关的区域可能对我们图像识别的结果会有影响。

cropped = image[0:100, 500:750]

这里依旧是(行,列),向切片提供startY和endY坐标,然后是startX和endX坐标。

4、保存图像

cv2.imwrite("test.png",cropped)

第一个参数是保存的路径(可以变更文件类型),第二个参数是要保存的图像。

“本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/kasami_/article/details/117362772。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。”

OpenCV中的基本图像操作相关推荐

  1. OpenCV中的图像处理 —— 图像阈值+图像平滑+形态转换

    OpenCV中的图像处理 -- 图像阈值+图像平滑+形态转换 目录 OpenCV中的图像处理 -- 图像阈值+图像平滑+形态转换 1. 图像阈值 1.1 简单阈值 1.2 自适应阈值 1.3 Otsu ...

  2. OpenCV中的图像处理 —— 图像梯度+Canny边缘检测+图像金字塔

    OpenCV中的图像处理 -- 图像梯度+Canny边缘检测+图像金字塔 目录 OpenCV中的图像处理 -- 图像梯度+Canny边缘检测+图像金字塔 1. 图像梯度 1.1 Sobel和Schar ...

  3. OpenCV中的立体图像创建深度图

    OpenCV中的立体图像创建深度图 1. 效果图 2. 源码 参考 这篇博客将介绍如何从立体图像创建深度图. 1. 效果图 原图 VS 视差图效果如下: 可以看到结果受到高度噪音的污染.通过调整 nu ...

  4. 【Opencv-Tools(一)】OpenCV中使用多线程处理图像

    OpenCV中使用多线程处理图像 引用:https://gist.github.com/yinguobing/7d1318e31f6e3455f30527a39361512a #!/usr/bin/e ...

  5. C语言使用指针处理opencv中的Mat图像数据

    1.在处理图像时,一般直接使用opencv中的imread函数获取图片,但是获取到图片后没有用到opencv中的其他算法时,直接用图片处理就会出现耗时严重的情况,所以需要将图片形式转换成指针数组形式处 ...

  6. 事实证明,OpenCV中对RGB图像数据的存储顺序是BGR,而且Scalar()的顺序也是B,G,R

    验证程序的源码如下(用到的图像下载链接为Red_pic.jpg_免费高速下载|百度网盘-分享无限制): 图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料 ...

  7. (原)Opencv中直方图均衡和图像动态范围拉伸的代码

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5102032.html 参考网址: http://blog.csdn.net/abcjennifer/a ...

  8. itk中的基本图像操作

    自己会慢慢把itk的一些简单用法放在博客来,就从创建一个简单图像开始吧. //1.创建图像 ImageType::Pointer mask_data= ImageType::New(); //2.创建 ...

  9. opencv中xml/yml文件操作类

    opencv有关xml/yml/json帮助文档:opencv 下面是官方给出的一个示例,通过使用和修改来学习这方面的知识吧. 可以看到这个 创建一个新的VS工程,把代码复制进去,配置好opencv ...

最新文章

  1. [日常工作]偷懒创建一个存储过程进行模拟工作.
  2. boost::mp11::mp_count_if_q相关用法的测试程序
  3. Kick Start 2019 Round D
  4. 模式8--WorkerThread
  5. Android断点续传下载器JarvisDownloader
  6. linux 单用户模式 挂载u盘_Linux服务器如何识别移动硬盘?
  7. HBase Filter及对应Shell
  8. 3. Spring Boot 从零开始学习
  9. 程序员合同日期不到想辞职_辞职理由怎么说才合适?实话实说,随便编一个都不行...
  10. Mysql数据库内对查询结果去重复指令【重点】
  11. 程序员中的明星,超模or女团都是程序媛
  12. 万字长文,详解线上线下收单业务(二):系统交互
  13. 《Celeste》 开发者是如何精心制作“冲刺”的
  14. 手撕coreML之yolov2 object detection物体检测(含源代码)
  15. jtest准考证打印
  16. 数据结构算法之哈希表
  17. zynq 移植ubuntu_ROS ZYNQ移植
  18. Win10任务栏图标无法右键/取消固定
  19. jackson-databind 版本升级遇到的问题
  20. K均值聚类算法 实验报告

热门文章

  1. Kernel.org hacked – how to get Android repo?
  2. ResNet+cifar10总结-由浅入深
  3. java 汉字转换为拼音
  4. 母乳储存袋和奶瓶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. okcc和vos3000呼叫中心两者间有什么作用要一起使用吗?
  6. 加载java ie停止工作_IE报错“Internet Explorer 已停止工作”解决方案
  7. jQuery实现AJAX定时刷新局部页面实例
  8. 华为“杀疯了”:发布“摸鱼”神器10余款新品
  9. 华为内部访谈:凡是溜须拍马的员工,一律拿掉
  10. linux下Ubuntu交叉编译boost源码编译