opencv进行图像反转、进行图像校正

使用opencv进行图像反转

之前上网搜了一种遍历每个像素,用255相减进行图像反转的方法,但是该方法所使用的时间太长了,今天又找到了新的方法,来进行记录。

def image_inverse(x):#定义反色变换函数
    value_max = np.max(x)
    y = value_max - x
    return y

使用opencv进行图像校正

上网搜索发现图像校正均是采用什么 minirect进行处理,但是又发现了一个用最外层轮廓来进行校正的函数,发现更好用,来进行记录一下(但是前提要在最外界轮廓要在矩形的情况下)

def reverse(img): #扭转函数
    contours=cnt(img) #获取img图像的所有轮廓,0为最外层轮廓
    rect1=cv2.minAreaRect(contours[0])
    if rect1[-1] < -45 or rect1[-1] > 45:
	    rect1 = (rect1[0], (rect1[1][1], rect1[1][0]), rect1[2] - 90)
    angle = rect1[2]
    width = int(rect1[1][0])
    height = int(rect1[1][1])
    src_pts = cv2.boxPoints(rect1)
    dst_pts = np.array([[0, height],
                    [0, 0],
                    [width, 0],
                    [width, height]], dtype="float32")
    M = cv2.getPerspectiveTransform(src_pts, dst_pts)
    warped = cv2.warpPerspective(img, M, (width, height))
    return warped

你可能感兴趣的:(python,opencv)