opencv: cv2.resize 探究(源码)
来源:互联网 发布:智能大数据smart准则 编辑:程序博客网 时间:2024/04/28 21:18
我们 习惯的坐标表示 是 先 x 横坐标,再 y 纵坐标。在图像处理中,这种惯性思维尤其需要担心。
因为在计算机中,图像是以矩阵的形式保存的,先行后列。所以,一张 宽×高×颜色通道=480×256×3 的图片会保存在一个 256×480×3 的三维张量中。图像处理时也是按照这种思想进行计算的(其中就包括 OpenCV 下的图像处理),即 高×宽×颜色通道。
但是问题来了,cv2.resize这个api却是个小例外。因为它的参数输入却是 宽×高×颜色通道。
查看官方文档 Geometric Image Transformations :
resize
Resizes an image.
C++: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )¶
Python: cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst
C: void cvResize(const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR )
Python: cv.Resize(src, dst, interpolation=CV_INTER_LINEAR) → None
Parameters:
src – input image.
dst – output image; it has the size dsize (when it is non-zero) or the size computed from src.size(), fx, and fy; the type of dst is the same as of src.
dsize –
output image size; if it equals zero, it is computed as:
\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}
Either dsize or both fx and fy must be non-zero.
由以下语段可知, cv2.resize 的 dsize 的参数输入是 x轴×y轴,即 宽×高:
dst – output image; it has the size dsize (when it is non-zero) or the size computed from src.size(), fx, and fy; the type of dst is the same as of src.
自己写了一个代码实例来验证它:
import cv2import numpy as npimport randomseq = [random.randint(0, 255) for _ in range(256*480*3)]mat = np.resize(seq, new_shape=[256, 480, 3])print ('mat.shape = {}'.format(mat.shape))cv2.imwrite('origin_pic.jpg', mat)origin_pic = cv2.imread('./origin_pic.jpg')print ('origin_pic.shape = {}'.format(origin_pic.shape))resize_pic = cv2.resize(src=origin_pic, dsize=(int(origin_pic.shape[1] * 2), int(origin_pic.shape[0] * 1)) )print ('resize_pic.shape = {}'.format(resize_pic.shape))cv2.imshow('resize_pic', resize_pic)cv2.waitKey(0)cv2.destroyAllWindows()
Output:
mat.shape = (256, 480, 3)origin_pic.shape = (256, 480, 3)resize_pic.shape = (256, 960, 3)
成功应验了文档里的参数说明。
- opencv: cv2.resize 探究(源码)
- opencv: 图像缩放(cv2.resize)
- opencv: 颜色空间转换(cv2.cvtColor) 探究(图示+源码)
- opencv: 阈值处理(cv2.threshold) 探究(图示+源码)
- OpenCV resize()
- OpenCV Resize()
- OpenCV: resize
- opencv.cv2.findContours()函数
- opencv cv2.THRESH_OTSU 二值化
- opencv,cv2.putText()用法
- python opencv cv2.
- opencv: 颜色通道 探究(图示+源码)
- 走进Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()
- python cv2 中cv2.imread和cv2.resize输入输出参数顺序
- 基于ubuntu16.04系统下OpenCV源码安装及无法import cv2
- mac安装cv2(即opencv)
- Ubuntu下安装Opencv(cv2)
- openCV库cv2的使用
- 欢迎使用CSDN-markdown编辑器
- 干货分享 | 玩坏css之border-radius属性
- 学习网址(二)
- iOS UIButton点击事件传递参数的解决办法
- poj2406 Power Strings(kmp求循环节)
- opencv: cv2.resize 探究(源码)
- 前端的学习1
- markdown转HTML(使用editor.md)
- 数学
- linux 解压缩命令
- 【HDU
- 腾讯优图开源深度学习框架ncnn,主打手机端,同类cpu框架最快
- bash:command not found解决方法
- Swagger2在header中添加token(java)