图像处理-图像裁剪
原创
©著作权归作者所有:来自51CTO博客作者mb5dbc2345bf8de的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
- 2.1 opencv结果
- 2.2 PIL结果
- 3.1 opencv
- 3.2 PIL
1、问题描述
有时在进行图像处理的时候,需要先对图像进行裁剪,如何进行裁剪,很简单。数字图像本质上还是矩阵,只用想着对矩阵做处理就行了。但是有一点必要理解,图像的长度是矩阵的列数,图像的宽度是矩阵的行数。所以说:
对于opencv下的图片,length=image.shape[1], width=image.shape[0]
对于PIL下的图片,length=image.size[0], width=image.size[1]
2、结果展示
原图
结果:
2.1 opencv结果
2.2 PIL结果
3、具体代码
3.1 opencv
import cv2 as cv
def ImShow(name,img):
cv.imshow(name,img)
cv.waitKey()
return;
if __name__ == '__main__':
src = "/home/barry/PycharmProject/LL/Image/img.png"
Img = cv.imread(src)
img = Img.copy();
img = cv.resize(img,(1200,600))
print(img.shape)
print(img.shape[0]," ", img.shape[1])
length = img.shape[1] # 长度对应矩阵列数
width = img.shape[0] #宽度对应矩阵行数
w = int(width/2) #这里不加int会报错,因为width/2的结果是一个浮点数
img = img[0:length,0:w]
cv.imwrite('/home/barry/PycharmProject/LL/Image/img_result.jpg',img)
ImShow("img",img)
3.2 PIL
from PIL import Image
src = "/home/barry/PycharmProject/LL/Image/img.png"
img = Image.open(src).convert('RGB')
a = img.size[0]
b = img.size[1]
a1 = int(a)
b1 = int(b/4)
cropped = img.crop((0,0,a1,b1)) #左上角坐标,右下角坐标
print(img.size)
print(cropped.size)
Image._show(cropped)