opencv 图像剪切python_OpenCV Python裁剪图像

I've created black image, than I drew a red rectangle into this image. Afterwards I cropped this image and drew a another rectangle into the cropped image using the command. cv2.rectangle(crop,(50,50),(150,150),(0,0,255),3)

Why does this second rectangle appears in the original image when I show it at the end? I expected to see just the first rectangle.

import cv2

import numpy as np

#create image

image = np.zeros((400,400,3), np.uint8)

#draw rectangle into original image

cv2.rectangle(image,(100,100),(300,300),(0,0,255),3)

#crop image

crop = image[100:300,100:300]

#draw rectangle into cropped image

cv2.rectangle(crop,(50,50),(150,150),(0,0,255),3)

cv2.imshow('Result', image)

cv2.waitKey()

cv2.destroyAllWindows()

解决方案

crop = image[100:300,100:300] creates a view on the original image instead of a new object. Modifying that view will modify the underlying original image. See http://scipy-cookbook.readthedocs.io/items/ViewsVsCopies.html for more details.

You can resolve this issue by creating a copy when cropping:

crop = image[100:300,100:300].copy().

Note: image[100:300,100:300] parameters are y: y+h, x: x+w not x: x+w, y: y+h

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值