環(huán)境
在伊川等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站,成都外貿(mào)網(wǎng)站建設(shè),伊川網(wǎng)站建設(shè)費(fèi)用合理。
矩形操作是我們?cè)?OpenCV 里最常用的操作,其中最為常見的就是包圍框( Bounding Box )和旋轉(zhuǎn)矩形( Rotated Box )。 其中包圍框是最為常見的,對(duì)應(yīng) OpenCV 中的 boundingRect() ,使用正矩形框處物體,一般多用在目標(biāo)檢測(cè)中。使用包圍框框柱目標(biāo)物體,這種操作比較簡(jiǎn)單,但是通??蛑幸矔?huì)有一些其他的區(qū)域。其次就是使用旋轉(zhuǎn)矩形,也叫最小外接矩形,對(duì)應(yīng) OpenCV 中的 minAreaRect() ,用來(lái)使用旋轉(zhuǎn)矩形最大限度的框出目標(biāo)物體,減小背景干擾,在 OCR 任務(wù)中較為常用。
minAreaRect() 返回了所需區(qū)域的最小斜矩形的參數(shù),與包圍框直接返回四個(gè)頂點(diǎn)的坐標(biāo)不同,最小外接矩形返回的是矩形的 ((x, y), (w, h), angle) ,對(duì)應(yīng)了矩形的中心,寬度,高度和旋轉(zhuǎn)角度。
旋轉(zhuǎn)角度 angle 是水平軸( x 軸)逆時(shí)針旋轉(zhuǎn),與碰到的矩形的第一條邊的夾角。并且這個(gè)邊的邊長(zhǎng)是 width ,另一條邊邊長(zhǎng)是 height 。也就是說(shuō),在這里 width 與 height 不是按照長(zhǎng)短來(lái)定義的。
在 OpenCV 中,坐標(biāo)系原點(diǎn)在左上角,相對(duì)于 x 軸,逆時(shí)針旋轉(zhuǎn)角度為負(fù),順時(shí)針旋轉(zhuǎn)角度為正,所以函數(shù) minAreaRect() 返回的角度范圍時(shí) [-90~0) 。想象一個(gè)平放的長(zhǎng)矩形,調(diào)用 minAreaRect() 返回的角度為 -90 度。如果我們旋轉(zhuǎn)圖像,直到矩形樹立起來(lái),這是調(diào)用 minAreaRect() 得到的角度依然是 -90 度。
第一種裁剪旋轉(zhuǎn)矩形的方法是通過(guò)仿射變換旋轉(zhuǎn)圖像的方式。
仿射變換( Affine Transformation ) 是一種二維坐標(biāo)到二維坐標(biāo)之間的線性變換,保持二維圖形的“平直性”( straightness ,即變換后直線還是直線不會(huì)打彎,圓弧還是圓弧)和“平行性”( parallelness ,其實(shí)是指保二維圖形間的相對(duì)位置關(guān)系不變,平行線還是平行線,相交直線的交角不變。)。
計(jì)算過(guò)程:
如果不做邊長(zhǎng)和角度的判斷,則只會(huì)沿著 x 軸的順時(shí)針?lè)较蜃鱿嗤笮〗嵌鹊男D(zhuǎn),不能保證旋轉(zhuǎn)后的視角是正確的視角:
根據(jù)任務(wù)目標(biāo)的類型,做邊長(zhǎng)和角度的判斷并進(jìn)行相應(yīng)的調(diào)整,可以保證旋轉(zhuǎn)后的視角是正確的視角:
第二種裁剪旋轉(zhuǎn)矩形的方法是通過(guò)透視變換直接將旋轉(zhuǎn)矩形的四個(gè)頂點(diǎn)映射到正矩形的四個(gè)頂點(diǎn)。
透視變換( Perspective Transformation )是將圖片投影到一個(gè)新的視平面( Viewing Plane ),也稱作投影映射( Projective Mapping )。
計(jì)算過(guò)程:
以上兩種方法都可以用來(lái)?yè)溉⌒D(zhuǎn)矩形的內(nèi)容。仿射變換方法需要預(yù)先對(duì)整張圖進(jìn)行旋轉(zhuǎn),通過(guò)觀察旋轉(zhuǎn)后的圖像可以發(fā)現(xiàn),有一部分圖像被旋轉(zhuǎn)出了圖像邊界,如果你要摳取的目標(biāo)正好在圖像邊緣附近,那么很容易出界導(dǎo)致圖像摳取的缺失。同時(shí)我們需要對(duì)寬、高和角度做出動(dòng)態(tài)的調(diào)整;透視變換的方法直接對(duì)摳取區(qū)域進(jìn)行了映射,這種方法可以省略旋轉(zhuǎn)的步驟,并且不會(huì)出現(xiàn)摳取內(nèi)容的缺失。同時(shí)我們只需要對(duì)4個(gè)頂點(diǎn)之間的映射關(guān)系做好定義即可,不需要考慮角度的問(wèn)題。相對(duì)的,透視變換相對(duì)于仿射變換計(jì)算量更大一些,不過(guò)這在 c++ 的底層實(shí)現(xiàn)上帶來(lái)的時(shí)延差距小于 ms 。
改變圖像尺寸有兩類方法:
一是縮放(resize),即重采樣。這時(shí),如果圖像縱橫比發(fā)生變化就會(huì)導(dǎo)致“擠壓”。
二是裁剪(crop)。當(dāng)然圖只能越裁越??;不過(guò)可以配合縮放,先放大再裁剪。
既然題主要求不能“擠壓”,那就只能裁剪了。函數(shù)名我給出來(lái)了,具體用法題主自己研究。
可以參考下面的代碼:
#!/usr/bin/python
# encoding: utf-8
# filename: baiduzhidao.py
ln = "4564612131856+654654654654"
print ln.split("+")
#~ Result:
#~ python -u "baiduzhidao.py"
#~ ['4564612131856', '654654654654']
#~ Exit code: 0? ? Time: 0.052
Python在設(shè)計(jì)上堅(jiān)持了清晰劃一的風(fēng)格,這使得Python成為一門易讀、易維護(hù),并且被大量用戶所歡迎的、用途廣泛的語(yǔ)言,設(shè)計(jì)者開發(fā)時(shí)總的指導(dǎo)思想是,對(duì)于一個(gè)特定的問(wèn)題,只要有一種最好的方法來(lái)解決就好了。
Python本身被設(shè)計(jì)為可擴(kuò)充的。并非所有的特性和功能都集成到語(yǔ)言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語(yǔ)言、C++、Cython來(lái)編寫擴(kuò)充模塊。
Python是完全面向?qū)ο蟮恼Z(yǔ)言。函數(shù)、模塊、數(shù)字、字符串都是對(duì)象。并且完全支持繼承、重載、派生、多繼承,有益于增強(qiáng)源代碼的復(fù)用性。
擴(kuò)展資料:
python參考函數(shù)
vars(obj) 返回一個(gè)object的name space。用dictionary表示
locals() 返回一個(gè)局部name space,用dictionary表示
globals() 返回一個(gè)全局name space,用dictionary表示
type(obj) 查看一個(gè)obj的類型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子類
參考資料來(lái)源:百度百科-Python (計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言)