之前上网搜了一种遍历每个像素,用255相减进行图像反转的方法,但是该方法所使用的时间太长了,今天又找到了新的方法,来进行记录。
def image_inverse(x):#定义反色变换函数
value_max = np.max(x)
y = value_max - x
return y
上网搜索发现图像校正均是采用什么 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