当您使用
imshow()显示调整大小的图像时,它会在屏幕上显示图像并根据图像像素更改显示窗口大小。当您使用图像查看器打开图像时,它会在固定的窗口大小中打开图像,窗口大小不取决于图像像素。
OpenCV提供了一个名为resize的函数来实现图像缩放。两种缩放图像的方法如下:
通过提供所需的大小
通过给出缩放因子
如果您没有指定大小(使用None),则它会期望X和Y缩放因子。
在提供
缩放大小时。
import cv2
filename = "path_to_image"
oriimage = cv2.imread(filename)
print oriimage.shape
newx,newy = oriimage.shape[1]/4,oriimage.shape[0]/4
newimage = cv2.resize(oriimage,(newx,newy))
print newimage.shape
cv2.imshow("original image",oriimage)
cv2.imshow("resize image",newimage)
cv2.waitKey(0)
带有缩放比例
import cv2
filename = "path_to_image"
image = cv2.imread(filename)
small = cv2.resize(image, (0,0), fx=0.5, fy=0.5)
large = cv2.resize(image, (0,0), fx=1.5, fy=1.5)
cv2.imshow("small image",small)
cv2.imshow("large image",large)
cv2.imwrite('s.jpg',small)
cv2.imwrite('l.jpg',large)
cv2.waitKey(0)
resize()方法的详细参数,请参考文档。
在OpenCV中裁剪图像。
import cv2
im_path = "path/to/image"
img = cv2.imread(im_path)
crop_img = img[0:400, 0:300]
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)
OpenCV的imread方法可以读取图像并返回一个Numpy数组,而Numpy数组的大小等于图像数组的大小。如果你想裁剪图像,只需选择一个数组。
img[0:400,0:300]
注意:img[y: y + h, x: x + w]中,第一个y表示起始位置,h表示高度;第二个x表示起始位置,w表示宽度。