python图像处理裁剪,OpenCV图像处理以在Python中裁剪图像的倾斜部分

I am trying to crop a portion of an image as shown below using opencv / PIL . I want to crop the rectangle area as shown in red lines in the image in the below link. It is tilted at an angle.

xZWOd.png

I used numpy slicing logic as below. But it doesn't crop at an angle. It crops a normal straight rectangle

rect = cv2.boundingRect(pts)

x,y,w,h = rect

cropped = img[y:y+h, x:x+w]

Also tried rotating the entire image at an angle and then cropping that part but it shrinks the resulting image

I am able to draw a rectangle on that image using the below code :

def draw_angled_rec(x0, y0, width, height, angle, img):

_angle = angle * math.pi / 180.0

b = math.cos(_angle) * 0.5

a = math.sin(_angle) * 0.5

pt0 = (int(x0 - a * height - b * width),

int(y0 + b * height - a * width))

pt1 = (int(x0 + a * height - b * width),

int(y0 - b * height - a * width))

pt2 = (int(2 * x0 - pt0[0]), int(2 * y0 - pt0[1]))

pt3 = (int(2 * x0 - pt1[0]), int(2 * y0 - pt1[1]))

cv2.line(img, pt0, pt1, (255,0,0), 3)

cv2.line(img, pt1, pt2, (255,0,0), 3)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值