本篇内容:

* 图片读取

* 图片高宽

* 图片ROI

* 图片缩放

interpolation - 插值方法。共有5种:

1)INTER_NEAREST - 最近邻插值法

2)INTER_LINEAR - 双线性插值法(默认)

3)INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。

4)INTER_CUBIC - 基于4x4像素邻域的3次插值法

5)INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值

通过matplotlib.pyplot显示图片,有新意。

  1. import cv2
  2. import matplotlib.pyplot as plt
  3.  
  4. img = cv2.imread('flower.jpg')
  5. # 插值:interpolation
  6. # None本应该是放图像大小的位置的,后面设置了缩放比例,
  7. #所有就不要了
  8. res1 = cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
  9. #直接规定缩放大小,这个时候就不需要缩放因子
  10. height,width = img.shape[:2]
  11. res2 = cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
  12. plt.subplot(131)
  13. plt.imshow(img)
  14. plt.subplot(132)
  15. plt.imshow(res1)
  16. plt.subplot(133)
  17. plt.imshow(res2)

  

功能的代码实例:

  1. for name in filteredFiles:
  2.  
  3. # 1.读取图片
  4. img = cv2.imread(join(dirPath, name))
  5. print("-----------------------")
  6. print("Debug:", name, img.shape)
  7.  
  8. # 2.(高,长,channel)
  9. rows = img.shape[0]
  10. cols = img.shape[1]
  11.  
  12. start_row = 0
  13. start_col = 0
  14. if (rows > cols):
  15. # vertical
  16. start_row = (rows - cols) // 2
  17. else:
  18. # horizon
  19. start_col = (cols - rows) // 2
  20. min_edge=min(rows, cols)
  21.  
  22. # 3.截取局部区域 ROI
  23. imgROI=img[start_row:start_row+min_edge, start_col:start_col+min_edge]
  24.  
  25. print("Debug:", imgROI.shape)
  26. # cv2.imshow("show", imgROI)
  27. # cv2.waitKey(0)
  28.  
  29. # 4.缩放
  30. # ref: http://blog.csdn.net/u012005313/article/details/51943442
  31. # ref: http://blog.csdn.net/on2way/article/details/46801063
  32. # 如果想要收缩图像,那么使用重采样差值法效果最好;
  33. # 如果想要放大图像,那么最好使用3次差值法或者线性差值法(文档推荐的).
  34. img_zo = cv2.resize(imgROI, (final_size, final_size), interpolation=cv2.INTER_AREA)
  35.  
  36. print("Debug:", img_zo.shape)
  37. # cv2.imshow("show", img_zo)
  38. # cv2.waitKey(0)
  39.  
  40. ret_name = "square_"+name

[OpenCV] Samples 18: Load image and check its attributes的更多相关文章

  1. [OpenCV] Samples 10: imagelist_creator

    yaml写法的简单例子.将 $ ./ 1 2 3 4 5 命令的参数(代表图片地址)写入yaml中. 写yaml文件. 参考:[OpenCV] Samples 06: [ML] logistic re ...

  2. [OpenCV] Samples 16: Decompose and Analyse RGB channels

    物体的颜色特征决定了灰度处理不是万能,对RGB分别处理具有相当的意义. #include <iostream> #include <stdio.h> #include &quo ...

  3. [OpenCV] Samples 06: [ML] logistic regression

    logistic regression,这个算法只能解决简单的线性二分类,在众多的机器学习分类算法中并不出众,但它能被改进为多分类,并换了另外一个名字softmax, 这可是深度学习中响当当的分类算法 ...

  4. [OpenCV] Samples 06: logistic regression

    logistic regression,这个算法只能解决简单的线性二分类,在众多的机器学习分类算法中并不出众,但它能被改进为多分类,并换了另外一个名字softmax, 这可是深度学习中响当当的分类算法 ...

  5. [OpenCV] Samples 13: opencv_version

    cv::CommandLineParser的使用. I suppose CommandLineParser::has("something") should be true whe ...

  6. [OpenCV] Samples 12: laplace

    先模糊再laplace,也可以替换为sobel等. 变换效果后录成视频,挺好玩. #include "opencv2/videoio/videoio.hpp" #include & ...

  7. [OpenCV] Samples 09: image

    根据需求,转化为不同的颜色格式,split后处理各自通道. plImage <==> Mat 格式转换 Mat --> plImage 简单写法: IplImage copy = m ...

  8. [OpenCV] Samples 03: cout_mat

    操作Mat元素时:I.at<double>(1,1) = CV_PI; /* * * cvout_sample just demonstrates the serial out capab ...

  9. [OpenCV] Samples 02: [ML] kmeans

    注意Mat作为kmeans的参数的含义. 扩展:高维向量的聚类. #include "opencv2/highgui.hpp" #include "opencv2/cor ...

随机推荐

  1. 简单的三道shell例题

    problem: 1. 输入一个ip列表文件,文件每行为以tab键分隔的两列,分别为一个ip段的起始ip和结束ip,ip均为点分形式.要求将该文件中各ip段包含的每一个有效ip以非点分形式输出到一个文 ...

  2. 提交JSON修改数据

    提交JSON修改数据 设计目标: 1)可以一次性提交多个表的修改数据 2)跨语言.跨平台 { "deltas": [ { "table": "tuni ...

  3. Altium Designer 13 安装完整元件库

    Altium Designer更新的非常快,都快赶上chrome了,13出来没多久14又出来了,之前一直用AD9.4,算是10之前的最后一个版本,也是很经典的一个版本.安装新版本后看到在目录结构上有些 ...

  4. Java Web开发总结(一)

    1.如何解决 tomcat 中文乱码问题? 2.如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet. <!-- 将Serv ...

  5. SSE图像算法优化系列四:图像转置的SSE优化(支持8位、24位、32位),提速4-6倍

    一.前言 转置操作在很多算法上都有着广泛的应用,在数学上矩阵转置更有着特殊的意义.而在图像处理上,如果说图像数据本身的转置,除了显示外,本身并无特殊含义,但是在某些情况下,确能有效的提高算法效率,比如 ...

  6. WPF 使用HttpListener搭建本地web服务器

    准备工作 using Micro.Listener 类(Micro.Listener.dll)下载 调用示例:一.启动服务:new Micro.Listener.ListenerSync(8080). ...

  7. 内联汇编中的asm和__asm__

    基本的内联汇编代码: asm格式: asm("assembly code"):   使用替换的关键字: 如果必须的话,可以改变用于标识内联汇编代码段的关键字asm.ANSI C规范 ...

  8. ORA-00959: tablespace 'TB01' does not exist

    当前的表空间如下: SQL> select name from v$tablespace; NAME ---------------------------------------------- ...

  9. http头文件User-Agent详解【转载】

    原文地址:http://blog.csdn.net/andybbc/article/details/50587359 http头文件User-Agent详解 什么是User-Agent User-Ag ...

  10. tmux 基本用法

    C代表Ctrl,按下Ctrl+b之后tmux不会有任何反应,只要继续再按下一个键就会有反应. tmux #开启tmux tmux ls #显示已有tmux列表(C-b s) tmux attach-s ...