python視圖函數(shù)講解的簡單介紹

python前視圖轉(zhuǎn)換為俯視圖

想要把前視圖轉(zhuǎn)化為鳥瞰圖,有兩種做法

石獅ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

1.在沒有標定的情況下,只能選取四個點對了

在有標定的情況下,可以直接使用標定的參數(shù)

這里主要介紹1

1.沒有標定的情況下,主要用到了兩個函數(shù)

M = cv2.getPerspectiveTransform(src, dst)

warped = cv2.warpPerspective(img, M, (img.shape[1], img.shape[0] + 1080))

cv2.getPerspectiveTransform 從四個點對中計算透視變換,返回值為3*3的透視變換矩陣

cv2.warpPerspective 計算透視變換后的圖像

這里自己遇到的坑是,在計算透視變換矩陣的時候,怎么獲取那四個點對,翻了很多blog,都沒搞清,最后認認真真的找了一個認認真真的閱讀之后,總算摸到門道了,有了一種融會貫通的感覺。

現(xiàn)在的目標是將圖像由前視圖轉(zhuǎn)化為鳥瞰圖,根據(jù)先驗知識,在鳥瞰圖下,長方形物體顯示出來肯定是長方形,因此,我們只要在前視圖中找到一個正方形的物體,并指定他在俯視圖中的坐標就可以了,這里有個但是,由于先驗信息里面只有矩形這個信息,具體的長寬比什么的,以及實際的大小未知,所以轉(zhuǎn)化到鳥瞰圖下并不能反應(yīng)物體的真實長度。

這里怎么定義轉(zhuǎn)化后的坐標要自己把握

790ec7dc8aa1

原圖

比如說轉(zhuǎn)化到黃色的坐標(內(nèi)接矩形),這時候就會內(nèi)縮,圖像出現(xiàn)黑邊

790ec7dc8aa1

轉(zhuǎn)化到黃色坐標

如果轉(zhuǎn)化到藍色的,那么能看到的方位就很小了,只有當前車道了(外接矩形)

790ec7dc8aa1

轉(zhuǎn)化到藍色坐標

dst的坐標也可以自己寫,想要轉(zhuǎn)成多大的圖像也可以自己填

比如說根據(jù)車道的寬度和虛線的長度,可以大概估算出實際長寬比,一個車道寬度為3.75米 這種城市道路一般虛線是兩米,間隔4米(高速一般是69,也就是15米)大概估計一下,高度是12米,也就是說長寬比為12:7,想要顯示出4個車道,圖像的寬度為1920,折算了一下,目標圖像的坐標大概是(這里要注意,圖像的坐標是從左上角開始算的)

790ec7dc8aa1

自定義

坐標定義代碼:

src = np.float32([(1242,1949),(1961,1949), (2695, 2542), (133, 2542)])

#內(nèi)接矩形

dst = np.float32([(1242, 1949), (1961, 1949), (1961, 2542), (1242, 2542)])

#外接矩形

dst = np.float32([(132, 1949), (2695, 1949), (2695, 2542), (133, 2542)])

#自定義

dst = np.float32([(480,1560-1080), (1440,1560-1080), (1440,3096-1080), (480,3096-1080)])

2.使用標定參數(shù)來轉(zhuǎn)化

這個轉(zhuǎn)化就是真實的了,因為知道相機的內(nèi)參,還有相機的pitch角以及相機距離地面的高度

matlab里面轉(zhuǎn)的,要標定的參數(shù)

可以參考的透視變換

python視圖函數(shù)是什么意思

python

英 [?pa?θ?n] 美 [?pa?θɑ:n]

n. 巨蛇,大蟒

Flask視圖:視圖函數(shù),類視圖,藍圖使用方法整理

摘要: Flask , 視圖 , 視圖函數(shù) , 類視圖 , 方法視圖 , 裝飾器 , 藍圖

在Flask中 路由 是指用戶請求的 URL 與 視圖函數(shù) 之間的 映射 ,處理URL和函數(shù)之間關(guān)系的程序稱為路由。Flask根據(jù)HTTP請求的URL在路由表中匹配預(yù)定義的URL找到對應(yīng)的視圖函數(shù)。將視圖函數(shù)的執(zhí)行結(jié)果返回給服務(wù)器。

Flask中默認使用 @app.route 裝飾器將視圖函數(shù)和URL綁定,裝飾器是一種接受函數(shù)的函數(shù),返回新的函數(shù)。

使用裝飾器將視圖函數(shù)page和url '/'關(guān)系綁定帶 app.url_map 屬性上,打印app.url_map的結(jié)果如下,有兩條url規(guī)則,分別是根目錄下的URL規(guī)則和static目錄下的URL規(guī)則

可以給裝飾器增加 endpoint 參數(shù)給 url命名 ,一旦使用了endpoint參數(shù) url_for 反轉(zhuǎn)就不能使用視圖函數(shù)名了而要使用定義的url名。

url_for('index')的輸出是字符串格式url的內(nèi)容"/"

也可以不使用裝飾器,使用 add_url_rule 將視圖函數(shù)和url綁定,裝飾器 @app.route 實際是調(diào)用的 add_url_rule 方法

視圖函數(shù)也可以結(jié)合類來實現(xiàn),類視圖的好處是支持 繼承 ,可以將共性的東西放到父類中,類視圖需要使用 app.add_url_rule() 來進行注冊,類視圖分為 標準類視圖 和 基于調(diào)度方法的類視圖

標準類視圖有標準的寫法

使用類視圖,在父類中定義一個屬性,在子類中完成各自的業(yè)務(wù)邏輯,同時都繼承父類中的這一個屬性

分別定義三個子類的模板

查看結(jié)果,三個url的返回除了三個模板各自的內(nèi)容外都需要輸出父類的ads屬性

如果同一個視圖函數(shù)需要根據(jù) 不同的請求方式 進行不一樣的邏輯處理,需要在視圖函數(shù)內(nèi)部進行判斷,可以使用 方法類視圖 實現(xiàn),使用類繼承 flask.views.MethodView ,定義和請求方式 同名的小寫方法 來完成了邏輯處理。

編輯一個頁面直接訪問是輸出用戶名密碼頁面,提交表單后是密碼正確與否的提示。

在html中定義 form 標簽action屬性關(guān)聯(lián)url名

如果不用方法視圖實現(xiàn)需要在普通視圖內(nèi)部調(diào)用 request.method 判斷是否為 GET , POST 進行判斷

裝飾器的本質(zhì)是一個Python函數(shù), 接受一個函數(shù) , 返回一個函數(shù) ,目的是讓一個函數(shù)獲得 其他額外的功能 。

假設(shè)一個場景訪問新聞詳情頁又一個函數(shù)實現(xiàn),但是之前必須先登錄,登錄由另一個函數(shù)實現(xiàn),此時需要將訪問新聞函數(shù)傳遞給登錄函數(shù)返回一個新的函數(shù)作為整體的邏輯實現(xiàn),這個給登錄函數(shù)增加新功能瀏覽網(wǎng)頁的過程就是裝飾器。

控制臺輸出,new_func()執(zhí)行了新函數(shù),基礎(chǔ)函數(shù)user_login執(zhí)行了新加入的功能,新函數(shù)真實的函數(shù)名還是inner

如果使用裝飾器魔法符號實現(xiàn),此時直接調(diào)用被裝飾的函數(shù)即可實現(xiàn)帶有新功能的基礎(chǔ)函數(shù),函數(shù)作為參數(shù)傳入的過程已經(jīng)自動實現(xiàn)

在基礎(chǔ)函數(shù)和要包裝的函數(shù)上都支持傳遞參數(shù)

查看 app.route() 的源碼內(nèi)部也是將視圖函數(shù)包裝,在原函數(shù)執(zhí)行之前調(diào)用 add_url_rule 綁定url,endpoint和視圖函數(shù)的關(guān)系,再返回原函數(shù)實現(xiàn)業(yè)務(wù)邏輯

藍圖的目的是實現(xiàn) 各個模塊的視圖函數(shù)寫在不同的py文件中 ,在主視圖中導(dǎo)入分路由視圖的模塊,并注冊藍圖對象, 降低各個功能模塊的耦合度 ,使用 flask.Blueprint 定義藍圖, app.register_blueprint 注冊藍圖。

實現(xiàn)主頁,詳情頁,對比頁三個頁面,在主頁中導(dǎo)入兩個其他功能頁,先編寫兩個功能頁的藍圖detail.py和compare.py

使用 app = Blueprint('detail', __name__) 定義藍圖對象, detail 是藍圖名,藍圖名不能重復(fù)。再編寫主視圖main.py,在主視圖中注冊之前的藍圖,其他視圖函數(shù)的名字不能和藍圖名一致

查看效果

如果在藍圖的py腳本中調(diào)用了 url_for ,需要把藍圖的name(就是 name 之前的)也加入作為前綴,如下

python中視圖函數(shù)傳值的數(shù)據(jù)類型可以傳對象嗎

python的一切數(shù)據(jù)類型都是對象。但是python的對象分為不可變對象和可變對象。python的變量是引用,對python變量的賦值是引用去綁定該對象。

可變對象的數(shù)據(jù)發(fā)生改變,例如列表和字典,引用不會更改綁定對象,畢竟本身就是用于增刪改查的,頻繁地產(chǎn)生新對象必然導(dǎo)致開銷巨大,只需要該對象內(nèi)部變化就行;但對于綁定了不可變對象的引用,對象一旦改變就會使引用綁定新的對象。

這一點也會反應(yīng)到函數(shù)的參數(shù)上。python的傳值方式是“傳對象”引用。python的函數(shù),形參實際上是引用,實參便是對象綁定到該引用上。本質(zhì)是形參會被作為函數(shù)的局部變量,在開辟的函數(shù)的棧內(nèi)存中被聲明。

簡要來講:

如果參數(shù)是數(shù),則類似值傳遞,

如果參數(shù)是列表和字典,則類似引用傳遞。

每個對象都會有個id, 可以用id()驗證以上說法:

這個函數(shù)的參數(shù)是列表,是可變對象。

本文題目:python視圖函數(shù)講解的簡單介紹
網(wǎng)站鏈接:http://muchs.cn/article22/doeeojc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站服務(wù)器托管、外貿(mào)建站ChatGPT、微信小程序、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司