[OpenCV] Samples 18: Load image and check its attributes
本篇内容:
* 图片读取
* 图片高宽
* 图片ROI
* 图片缩放
- Ref: http://blog.csdn.net/u012005313/article/details/51943442
官网2.3.2参考:Geometric Image Transformations
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显示图片,有新意。
- import cv2
- import matplotlib.pyplot as plt
- img = cv2.imread('flower.jpg')
- # 插值:interpolation
- # None本应该是放图像大小的位置的,后面设置了缩放比例,
- #所有就不要了
- res1 = cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
- #直接规定缩放大小,这个时候就不需要缩放因子
- height,width = img.shape[:2]
- res2 = cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
- plt.subplot(131)
- plt.imshow(img)
- plt.subplot(132)
- plt.imshow(res1)
- plt.subplot(133)
- plt.imshow(res2)
功能的代码实例:
- for name in filteredFiles:
- # 1.读取图片
- img = cv2.imread(join(dirPath, name))
- print("-----------------------")
- print("Debug:", name, img.shape)
- # 2.(高,长,channel)
- rows = img.shape[0]
- cols = img.shape[1]
- start_row = 0
- start_col = 0
- if (rows > cols):
- # vertical
- start_row = (rows - cols) // 2
- else:
- # horizon
- start_col = (cols - rows) // 2
- min_edge=min(rows, cols)
- # 3.截取局部区域 ROI
- imgROI=img[start_row:start_row+min_edge, start_col:start_col+min_edge]
- print("Debug:", imgROI.shape)
- # cv2.imshow("show", imgROI)
- # cv2.waitKey(0)
- # 4.缩放
- # ref: http://blog.csdn.net/u012005313/article/details/51943442
- # ref: http://blog.csdn.net/on2way/article/details/46801063
- # 如果想要收缩图像,那么使用重采样差值法效果最好;
- # 如果想要放大图像,那么最好使用3次差值法或者线性差值法(文档推荐的).
- img_zo = cv2.resize(imgROI, (final_size, final_size), interpolation=cv2.INTER_AREA)
- print("Debug:", img_zo.shape)
- # cv2.imshow("show", img_zo)
- # cv2.waitKey(0)
- ret_name = "square_"+name
[OpenCV] Samples 18: Load image and check its attributes的更多相关文章
- [OpenCV] Samples 10: imagelist_creator
yaml写法的简单例子.将 $ ./ 1 2 3 4 5 命令的参数(代表图片地址)写入yaml中. 写yaml文件. 参考:[OpenCV] Samples 06: [ML] logistic re ...
- [OpenCV] Samples 16: Decompose and Analyse RGB channels
物体的颜色特征决定了灰度处理不是万能,对RGB分别处理具有相当的意义. #include <iostream> #include <stdio.h> #include &quo ...
- [OpenCV] Samples 06: [ML] logistic regression
logistic regression,这个算法只能解决简单的线性二分类,在众多的机器学习分类算法中并不出众,但它能被改进为多分类,并换了另外一个名字softmax, 这可是深度学习中响当当的分类算法 ...
- [OpenCV] Samples 06: logistic regression
logistic regression,这个算法只能解决简单的线性二分类,在众多的机器学习分类算法中并不出众,但它能被改进为多分类,并换了另外一个名字softmax, 这可是深度学习中响当当的分类算法 ...
- [OpenCV] Samples 13: opencv_version
cv::CommandLineParser的使用. I suppose CommandLineParser::has("something") should be true whe ...
- [OpenCV] Samples 12: laplace
先模糊再laplace,也可以替换为sobel等. 变换效果后录成视频,挺好玩. #include "opencv2/videoio/videoio.hpp" #include & ...
- [OpenCV] Samples 09: image
根据需求,转化为不同的颜色格式,split后处理各自通道. plImage <==> Mat 格式转换 Mat --> plImage 简单写法: IplImage copy = m ...
- [OpenCV] Samples 03: cout_mat
操作Mat元素时:I.at<double>(1,1) = CV_PI; /* * * cvout_sample just demonstrates the serial out capab ...
- [OpenCV] Samples 02: [ML] kmeans
注意Mat作为kmeans的参数的含义. 扩展:高维向量的聚类. #include "opencv2/highgui.hpp" #include "opencv2/cor ...
随机推荐
- 简单的三道shell例题
problem: 1. 输入一个ip列表文件,文件每行为以tab键分隔的两列,分别为一个ip段的起始ip和结束ip,ip均为点分形式.要求将该文件中各ip段包含的每一个有效ip以非点分形式输出到一个文 ...
- 提交JSON修改数据
提交JSON修改数据 设计目标: 1)可以一次性提交多个表的修改数据 2)跨语言.跨平台 { "deltas": [ { "table": "tuni ...
- Altium Designer 13 安装完整元件库
Altium Designer更新的非常快,都快赶上chrome了,13出来没多久14又出来了,之前一直用AD9.4,算是10之前的最后一个版本,也是很经典的一个版本.安装新版本后看到在目录结构上有些 ...
- Java Web开发总结(一)
1.如何解决 tomcat 中文乱码问题? 2.如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet. <!-- 将Serv ...
- SSE图像算法优化系列四:图像转置的SSE优化(支持8位、24位、32位),提速4-6倍
一.前言 转置操作在很多算法上都有着广泛的应用,在数学上矩阵转置更有着特殊的意义.而在图像处理上,如果说图像数据本身的转置,除了显示外,本身并无特殊含义,但是在某些情况下,确能有效的提高算法效率,比如 ...
- WPF 使用HttpListener搭建本地web服务器
准备工作 using Micro.Listener 类(Micro.Listener.dll)下载 调用示例:一.启动服务:new Micro.Listener.ListenerSync(8080). ...
- 内联汇编中的asm和__asm__
基本的内联汇编代码: asm格式: asm("assembly code"): 使用替换的关键字: 如果必须的话,可以改变用于标识内联汇编代码段的关键字asm.ANSI C规范 ...
- ORA-00959: tablespace 'TB01' does not exist
当前的表空间如下: SQL> select name from v$tablespace; NAME ---------------------------------------------- ...
- http头文件User-Agent详解【转载】
原文地址:http://blog.csdn.net/andybbc/article/details/50587359 http头文件User-Agent详解 什么是User-Agent User-Ag ...
- tmux 基本用法
C代表Ctrl,按下Ctrl+b之后tmux不会有任何反应,只要继续再按下一个键就会有反应. tmux #开启tmux tmux ls #显示已有tmux列表(C-b s) tmux attach-s ...