当前位置: 首页 > 后端技术 > Python

PythonopenCV基本操作(二):图像resize

时间:2023-03-26 01:03:50 Python

简单回顾一下:使用显示函数cv2.imshow,为了世界和平[笑话],必须加上cv2.waitKey(0);cv2.destroyAllWindows()。是一组:cv2.imshow("homework",peppers_img)cv2.waitKey(0)cv2.destroyAllWindows()imageresize的意思是调整它的大小,先猜一猜,openCV中的resize函数的函数名是什么?没错,就是cv2.resize。它有两个主要参数src、dsize(下面讨论)。另一个重要的参数是插值,但我们今天不谈它。在这里简单提一下。Interpolation是您要选择的插值方法。你可能会问,什么是插值,我举个简单的例子,如果你想把一张图片做大,像素点多一点,但是原图只有这么多像素点,剩下的像素点从哪里来?这使用了我们的插值方法。所谓插值,就是在值之间插入其他值。当然还有其他的参数,后面再说,不用着急cv2.resize(src,dsize)#src是你的原图#dsize是你要调整的大小#这个函数会返回调整后的图片Example(↓实验图↓):清宁取自清子的博客:[https://weibo.com/kanqingzi13...]#导入openCV库importcv2#读取图片src=cv2.imread('./kqz.jpg')#看一下图片大小print(src.shape)#<---(1)#调整图片大小img_resize=cv2.resize(src,(280,400))#<---(2)#显示调整后的图片cv2.imshow("img_resize",img_resize)#等待按钮执行下一句cv2.waitKey(0)#关闭openCV打开的所有窗口cv2.destroyAllWindows()#显示shapeprint的调整大小的图像(img_resize.shape)#<---(3)(1)。你可能不明白src.shape是什么意思,后面我会细说。这里简单提一下接下来src就是我们的图片,也可以说是一个图片对象。是的,它是面向对象编程的一个对象。这个对象有一个属性(可以理解为特征)。这个属性就是我们这里说的shape,shape,就是形状,也就是说src.shape就是图片的形状。说白了就是图片有多少个维度,每个维度有多少个像素(其实图片就是numpy中ndarray类的一个实例对象)(2)。cv2.resize函数第一个参数是你的图片,第二个参数是图片的形状,也就是宽高,宽是多少像素,高是多少像素。在这里,我们将参数传递为(280,400),这意味着新图片的宽度为280像素,高度为400像素(3)。运行代码,你会发现打印出来的是(400,280,3),那么问题来了,我们刚才在cv2.resize传过来的shape明明是(280,400),怎么变成这样了?先说这3个吧。一般彩色图片都是RGB色域(后面会讲到色域),都有3个通道,代表RGB三个通道的灰度值和(280,400)都是280宽像素,高为400像素,但是在上面的图像对象中,由于图像是以灰度矩阵的形式存储的,而矩阵,它讲究的是先行后列,也就是它的第一个维度是“高度”方向,第二个二维是“宽度”方向,(第三个维度是RGB方向),所以高度应该放在第一个维度,宽度是第二个维度