資源簡介
該代碼為基于python+opencv的目標(biāo)圖像區(qū)域自動提取,即利用python +opencv檢測圖像中的長方形畫布或紙張并提取圖像內(nèi)容,經(jīng)過測試,該算法代碼能有效解決基本問題。親測好用,大家快來下載吧,挺不錯的一個資源哦!!
代碼片段和文件信息
#coding:utf-8
import?cv2
import?numpy?as?np
import?math
srcWidth?=?0
srcHeight?=?0
maxWidth?=?1024
maxHeight?=?600
class?Config:
????def?__init__(self):
????????pass
????src?=?“IMG_9571.jpg“
????min_area?=?100000
????min_contours?=?8
????threshold_thresh?=?50
????epsilon_start?=?50
????epsilon_step?=?10
class?HoughPoints:
????def?__init__(selfrho=0theta=0):
????????self.rhos?=?[rho]
????????self.thetas?=?[theta]
‘‘‘
@func???????根據(jù)HoughLines轉(zhuǎn)換出直線點(diǎn)
@param??????rho?距離
@param??????theta?角度
‘‘‘
def?rt_to_point(img?rho?theta):
????#垂直直線
????if?(theta?(np.pi/4.?))?or?(theta?>?(3.*np.pi/4.0)):
????????#該直線與第一行的交點(diǎn)
????????pt1?=?(int(rho/np.cos(theta))0)
????????#該直線與最后一行的焦點(diǎn)
????????pt2?=?(int((rho-img.shape[0]*np.sin(theta))/np.cos(theta))img.shape[0])
????????return?pt1?pt2
????else:
????????#水平直線??該直線與第一列的交點(diǎn)
????????pt1?=?(0int(rho/np.sin(theta)))
????????#該直線與最后一列的交點(diǎn)
????????pt2?=?(img.shape[1]?int((rho-img.shape[1]*np.cos(theta))/np.sin(theta)))
????????return?pt1?pt2
‘‘‘
@return?????[top-left?top-right?bottom-right?bottom-left]
‘‘‘
def?order_points(pts):
????#?initialzie?a?list?of?coordinates?that?will?be?ordered
????#?such?that?the?first?entry?in?the?list?is?the?top-left
????#?the?second?entry?is?the?top-right?the?third?is?the
????#?bottom-right?and?the?fourth?is?the?bottom-left
????rect?=?np.zeros((4?2)?dtype=“float32“)
????#?the?top-left?point?will?have?the?smallest?sum?whereas
????#?the?bottom-right?point?will?have?the?largest?sum
????s?=?pts.sum(axis=1)
????rect[0]?=?pts[np.argmin(s)]
????rect[2]?=?pts[np.argmax(s)]
????#?now?compute?the?difference?between?the?points?the
????#?top-right?point?will?have?the?smallest?difference
????#?whereas?the?bottom-left?will?have?the?largest?difference
????diff?=?np.diff(pts?axis=1)
????rect[1]?=?pts[np.argmin(diff)]
????rect[3]?=?pts[np.argmax(diff)]
????#?return?the?ordered?coordinates
????return?rect
def?point_distance(ab):
????return?int(np.sqrt(np.sum(np.square(a?-?b))))
‘‘‘
@func???計算兩條直線的交點(diǎn)
‘‘‘
def?line_intersection(line1?line2):
????xdiff?=?(line1[0][0]?-?line1[1][0]?line2[0][0]?-?line2[1][0])
????ydiff?=?(line1[0][1]?-?line1[1][1]?line2[0][1]?-?line2[1][1])
????def?det(a?b):
????????return?a[0]?*?b[1]?-?a[1]?*?b[0]
????div?=?det(xdiff?ydiff)
????if?div?==?0:
???????raise?Exception(‘lines?do?not?intersect‘)
????d?=?(det(*line1)?det(*line2))
????x?=?det(d?xdiff)?/?div
????y?=?det(d?ydiff)?/?div
????return?x?y
‘‘‘
@func???迪卡爾轉(zhuǎn)極坐標(biāo)
‘‘‘
def?cart_to_polor(x1?y1?x2?y2):
????diff?=?float(abs(x1-x2))?/?abs(y1-y2)
????theta?=?math.atan(diff)
????#print(“theta=%f?diff=%f?%f?%f“%(theta?diff?abs(x1-x2)?abs(y1-y2)))
????rho?=?math.sin(theta)*(y1?-?(x1/math.tan(theta))?)
????return?rho?theta
image?=?cv2.imread(Config.src)
gray?=?cv2.cvtColor(image?cv2.COLOR_BGR2GRAY)
srcWidth?srcHeight?channels?=?image.shape
print(srcWidth?srcHeight)
#?中值平滑,
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6929??2018-08-12?13:53??Opencv_python\Opencv2_python.py
?????文件?????836761??2018-08-12?13:46??Opencv_python\圖像處理要求_20180730更新.pdf
?????文件????1649843??2018-08-11?21:12??Opencv_python\未通過圖片\IMG_9380.JPG
?????文件????2241514??2018-08-11?21:14??Opencv_python\未通過圖片\IMG_9382.JPG
?????文件????2165282??2018-08-11?21:14??Opencv_python\未通過圖片\IMG_9385.JPG
?????文件????1865957??2018-08-11?21:13??Opencv_python\未通過圖片\IMG_9397.JPG
?????文件????1717046??2018-08-11?21:12??Opencv_python\測試通過的圖片\5.JPG
?????文件????1664460??2018-08-11?21:12??Opencv_python\測試通過的圖片\IMG_9378.JPG
?????文件????1697926??2018-08-11?21:12??Opencv_python\測試通過的圖片\IMG_9379.JPG
?????文件????1682140??2018-08-11?21:12??Opencv_python\測試通過的圖片\IMG_9399.JPG
?????文件????1710356??2018-08-11?21:12??Opencv_python\測試通過的圖片\IMG_9429.JPG
?????文件????1714546??2018-08-11?21:12??Opencv_python\測試通過的圖片\IMG_9432.JPG
?????文件????1642283??2018-08-11?21:12??Opencv_python\測試通過的圖片\IMG_9433.JPG
?????文件????1678062??2018-08-11?21:12??Opencv_python\測試通過的圖片\IMG_9435.JPG
?????文件????1717046??2018-08-11?21:12??Opencv_python\測試通過的圖片\IMG_9436.JPG
?????文件????1840351??2018-08-11?21:13??Opencv_python\測試通過的圖片\IMG_9437.JPG
?????文件????1768708??2018-08-11?21:13??Opencv_python\測試通過的圖片\IMG_9438.JPG
?????文件????1908407??2018-08-11?21:14??Opencv_python\測試通過的圖片\IMG_9439.JPG
?????文件????1793371??2018-08-11?21:13??Opencv_python\測試通過的圖片\IMG_9440.JPG
?????文件????2176392??2018-08-11?21:14??Opencv_python\測試通過的圖片\IMG_9468.JPG
?????文件????2183829??2018-08-11?21:14??Opencv_python\測試通過的圖片\IMG_9469.JPG
?????文件????2144229??2018-08-11?21:14??Opencv_python\測試通過的圖片\IMG_9471.JPG
?????文件????3957927??2018-08-12?13:35??Opencv_python\算法測試矯正圖片\transfer115.png
?????文件????2019301??2018-08-12?13:40??Opencv_python\算法測試矯正圖片\transfer26.png
?????文件????3569918??2018-08-12?12:43??Opencv_python\算法測試矯正圖片\transfer3.png
?????文件????2260877??2018-08-12?12:49??Opencv_python\算法測試矯正圖片\transfer338.png
?????文件????3179354??2018-08-12?13:21??Opencv_python\算法測試矯正圖片\transfer35.png
?????文件????2625796??2018-08-12?12:40??Opencv_python\算法測試矯正圖片\transfer36.png
?????文件????3081279??2018-08-12?12:55??Opencv_python\算法測試矯正圖片\transfer373.png
?????文件????4195687??2018-08-12?13:17??Opencv_python\算法測試矯正圖片\transfer3909.png
............此處省略16個文件信息
評論
共有 條評論