首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Python在OpenCV中裁剪图像

如何使用Python在OpenCV中裁剪图像
EN

Stack Overflow用户
提问于 2013-03-24 01:00:43
回答 9查看 785.1K关注 0票数 332

如何使用OpenCV裁剪图像,就像我以前在PIL中所做的那样。

PIL上的工作示例

im = Image.open('0.png').convert('L')
im = im.crop((1, 1, 98, 33))
im.save('_0.png')

但是我如何在OpenCV上做到这一点呢?

这是我尝试过的:

im = cv.imread('0.png', cv.CV_LOAD_IMAGE_GRAYSCALE)
(thresh, im_bw) = cv.threshold(im, 128, 255, cv.THRESH_OTSU)
im = cv.getRectSubPix(im_bw, (98, 33), (1, 1))
cv.imshow('Img', im)
cv.waitKey(0)

但它不起作用。

我想我错误地使用了getRectSubPix。如果是这样,请解释一下如何正确使用此函数。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-03-24 01:26:59

这很简单。使用numpy切片。

import cv2
img = cv2.imread("lenna.png")
crop_img = img[y:y+h, x:x+w]
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)
票数 706
EN

Stack Overflow用户

发布于 2013-05-30 04:21:13

我有这个问题,并在这里找到了另一个答案:copy region of interest

如果我们考虑(0,0)作为图像的左上角,称为im,从左到右是x方向,从上到下是y方向。我们将(x1,y1)作为该图像中矩形区域的左上角顶点和(x2,y2)作为右下角顶点,然后:

roi = im[y1:y2, x1:x2]

这里有一个关于numpy array indexing and slicing的综合资源,它可以告诉你更多关于裁剪图像部分的事情。图像将被存储为opencv2中的numpy数组。

:)

票数 150
EN

Stack Overflow用户

发布于 2018-12-31 17:44:40

这段代码将图像从x=0,y=0裁剪到h=100,w=200。

import numpy as np
import cv2

image = cv2.imread('download.jpg')
y=0
x=0
h=100
w=200
crop = image[y:y+h, x:x+w]
cv2.imshow('Image', crop)
cv2.waitKey(0) 
票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15589517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档