有时候需要对有角度的矩形框内图像从原图片中分割出来。这里的程序思想是,先将图片进行矩形角度的旋转,使有角度的矩形处于水平状态后,根据原来坐标分割图片。
参考:
修改原来的程序:
1.旋转函数的输入仅为矩形的四点坐标
2.角度由公式计算出来
3.矩形四点pt1,pt2,pt3,pt4由txt文件读入
4.在旋转程序中还处理了顺时针和逆时针及出现矩形框翻转的问题。
代码:
# -*- coding:utf-8 -*-
import cv2
from math import *
import numpy as np
import time,math
import os
import re
'''旋转图像并剪裁'''
def rotate(
img, # 图片
pt1, pt2, pt3, pt4
):
print pt1,pt2,pt3,pt4
withrect = math.sqrt((pt4[0] - pt1[0]) ** 2 + (pt4[1] - pt1[1]) ** 2) # 矩形框的宽度
heightrect = math.sqrt((pt1[0] - pt2[0]) ** 2 + (pt1[1] - pt2[1]) **2)
print withrect,heightrect
angle = acos((pt4[0] - pt1[0]) / withrect) * (180 / math.pi) # 矩形框旋转角度
print angle
if pt4[1]&g