Dav*_*lon 2 python math opencv
有人可以帮我一些裁剪算法吗?它的openCV .. im试图弄清楚这一点。我知道方法是crop = image [y:y1,x:x1]。如果我的图像具有new_dimensionXxnew_dimensionY像素,并且想要将其裁剪为相同的宽度,但高度要高于pointOfInterestX 121px。我怎样才能做到这一点?
还有一个问题:
image = cv2.resize(image,(int(new_dimensionX), int(new_dimensionY)))
cv2.imwrite("test6.jpg", image)
Run Code Online (Sandbox Code Playgroud)
文件test6.jpg不能反映其上方一行的调整大小。为什么?
当您使用imshow()显示调整大小的图像时,它将在屏幕上显示图像,并根据图像像素更改显示窗口的大小。当您使用图像查看器打开图像时,它将以固定的窗口大小和窗口大小打开图像,而不取决于图像像素
OpenCV提供了一个称为调整大小的功能来实现图像缩放。缩放图像的两种方法
通过提供所需的尺寸
通过给出比例因子
如果您未指定大小(通过使用“无”),那么它将期望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 #new size (w,h)
newimage = cv2.resize(oriimage,(newx,newy))
print newimage.shape
cv2.imshow("original image",oriimage)
cv2.imshow("resize image",newimage)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
具有缩放比例
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)
#To save rescale image
cv2.imwrite('s.jpg',small)
cv2.imwrite('l.jpg',large)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
有关resize()方法的详细参数
在 opencv中裁剪图像
import cv2
im_path = "path/to/image"
img = cv2.imread(im_path)
crop_img = img[0:400, 0:300] # Crop from {x, y, w, h } => {0, 0, 300, 400}
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
Opencv imread方法读取图像并返回numpy数组,并且numpy array的大小等于image数组。如果要裁剪图像,只需选择一个数组
img[0:400,0:300]
Run Code Online (Sandbox Code Playgroud)
注意:其img [y:y + h,x:x + w] img首先取y,高度第二取x,宽度