1
我一直在嘗試做一個4點透視變換,以便開始做一些OCR。4點持久性轉換失敗
與下面的圖片開始,我可以檢測號牌
,並與綠框是邊框和紅點是我要爲方矩形的邊角裁剪出來向上。
這是變換的輸出。
在先看看它的接縫已經完成了改造內而外(以部分兩側,而不是點之間)。
我正在使用imutils軟件包進行轉換,並以this和this爲工作指南。我相信這是我錯過的相對簡單的事情。
#!/usr/bin/python
import numpy as np
import cv2
import imutils
from imutils import contours
from imutils.perspective import four_point_transform
img = cv2.imread("sample7-smaller.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blurred = cv2.bilateralFilter(gray,15,75,75)
v = np.median(blurred)
lower = int(max(0, (1.0 - 0.33) * v))
upper = int(min(255, (1.0 + 0.33) * v))
edged = cv2.Canny(blurred, lower, upper, 255)
conts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
conts = conts[0] if imutils.is_cv2() else conts[1]
conts = sorted(conts, key=cv2.contourArea, reverse=True)
for cnt in conts:
approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True)
if len(approx) == 4:
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
for i in approx:
cv2.circle(img,(i[0][0], i[0][1]),2,(0,0,255), thickness=4)
warped = four_point_transform(img, approx.reshape(4,2))
cv2.imshow("crop",img[y:y+h,x:x+w])
cv2.imshow("warped", warped)
cv2.waitKey(0)
這就是w帽子imutils代碼應該是這樣做(http://www.pyimagesearch.com/2014/08/25/4-point-opencv-getperspective-transform-example/#crayon-58a578867d24b280571411),它看起來要做的同樣的事情,只是計算動態輸出的尺寸 – hardillb
所以你想要你的輸出尺寸在飛行@hardillb上計算? – ZdaR
我想保持它在相同的規模開始,然後我可以稍後重新調整它 – hardillb