圖片透視變換操作

由于照相機硬件設備本身的誤差,可能會導致鏡頭畸變,從而導致照相機拍攝到的照片產生失真現象,此時可以通過透視變換去適當的校正。
大概的思路:在原圖像上確定四個點,然后再新圖像上也確定四個點,通過warpMatrix方法,確定出對應的函數關系,從而將圖像進行校正。
import cv2
import numpy as npimg = cv2.imread('beyond.png')
result3 = img.copy()#src和dst的輸入并不是圖像,而是圖像對應的頂點坐標
src = np.float32([[664,423],[1197,1144],[245,785],[709,1307]])#這個是你要截取物體的四個頂點坐標,這四個頂點需要知道
dst = np.float32([[0,0],[883,0],[0,560],[883,560]])#其實就是要校正物體的四個頂點坐標,也就是知道日歷的長和高即可
print(img.shape)#看一下原圖片的大小
#結果為:(1706, 1279, 3)#生成透視變換矩陣,進行透視變換
m = cv2.getPerspectiveTransform(src,dst)#得到映射關系函數
print("warpMatrix:")
print(m)
#結果為:
'''
warpMatrix:
[[ 5.53592476e-01  6.40760353e-01 -6.38627034e+02][-6.16322870e-01  4.55617322e-01  2.16512258e+02][ 2.54107793e-04 -3.90561502e-04  1.00000000e+00]]
'''result = cv2.warpPerspective(result3,m,(883,560))
cv2.imshow("src",img)
cv2.imshow("result",result)
cv2.waitKey(0)

原圖:在這里插入圖片描述

日歷的坐標我是用ps里面的標尺看的,不一定特別精準。
日歷四個頂點的位置在圖像上的像素坐標為(行x軸,列y軸):[664,423],[1197,1144],[245,785],[709,1307]
日歷的長為883像素,高為560像素

運行后結果為:

(原圖片太大放不下,截取了一部分)
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378168.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378168.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378168.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dp筆記:關于DP算法和滾動數組優化的思考

從網上總結了一些dp的套路以及對滾動數組的一些思考,現記錄如下,希望以后回顧此類算法時會有所幫助。 目錄1、DP算法經驗1、DP算法核心:2、DP算法類別以及例題例1:三步問題例2:最小路徑和例3:乘積最大子數組…

高職單招面試自我介紹稿子計算機專業,單招面試自我介紹稿子范文

每年很多參加高職單招的同學筆試不錯,卻在面試環節上失敗了。單招面試需要技巧,需要考生細心準備,以自信樂觀的態度全面對單招面試。下面是小編整理的單招面試自我介紹范文及技巧,歡迎閱讀。1單招面試自我介紹范文各位老師好&…

as_hash ruby_Ruby中帶有示例的Hash.delete_if方法

as_hash rubyHash.delete_if方法 (Hash.delete_if Method) In this article, we will study about Hash.delete_if Method. The working of this method can be predicted with the help of its name but it is not as simple as it seems. Well, we will understand this meth…

java學習筆記十二——多態

滿足多態的基本條件1、要有繼承2、要有重寫3、父類引用指向子類對象/** 多態例子 */ //定義游戲抽象類abstract class gameObject { String gameName; abstract String getGameName();}//紅警游戲class redAlert extends gameObject { String gameName "red Ale…

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 解決方案

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 解決方案 NoClassDefFoundErrorLogFactorySpringHibernate Spring3.1啟動時報錯:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogF…

【C++ grammar】引用

1、引用就是另一個變量的別名 2、通過引用所做的讀寫操作實際上是作用與原變量上 引用方式: int x; int & rxx; or int x, &rxx;在C中&是取地址,在C中&放在一個變量的定義前,那就是引用 注意: 這種引用是錯誤的…

網絡安全 攻擊類型_網絡攻擊的類型| 網絡安全

網絡安全 攻擊類型Nowadays Cyber Security is an essential part of our life. We are store, secure and use data and security is important to prevent to steal data. There are numbers of attacks done by the attackers for ex: Man in middle attacks, Brute force, …

flash安全策略的理解

flash安全策略的理解 2011-06-25 01:48 11人閱讀 評論(0) 收藏 舉報 一直以來對flash的安全策略是一頭霧水,什么安全沙箱,跨域策略文件一堆東西亂七八糟,搞不清楚。不過糾結到現在已經基本上理解了。 flash的安全問題在官方手冊上有足夠的解…

【C++ grammar】nullptr and Dynamic Memory Allocation (空指針和動態內存分配)

空指針 1.1. 0帶來的二義性問題 C03中,空指針使用“0”來表示。0既是一個常量整數,也是一個常量空指針。C語言中,空指針使用(void *)0來表示有時候,用“NULL”來表示空指針(一種可能的實現方式是#define NULL 0) 1.2. C標準化委…

yum update Transaction Check Error

update系統時,發現其中一臺server居然提示: Transaction Check Error:file /usr/lib/perl5/5.8.8/CGI.pm from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386file /usr/lib/perl5/5.8.8/Digest…

No module named ‘skimage.metrics‘在Anaconda3中的解決方法

1,進入Anaconda Prompt 2,進行安裝: pip install scikit-image 3,若還是報錯,嘗試進行更新一下 pip install scikit-image --upgrade

array_push_PHP array_push()函數與示例

array_pushPHP array_push()函數 (PHP array_push() function) array_push() function is used to insert/push one or more than one element to the array. array_push()函數用于將一個或多個元素插入/推入數組。 Syntax: 句法: array_push(array, elemement1, …

html5的canvas元素使用,HTML5canvas元素概念及使用方法介紹

一. canvas簡介??canvas是html5新增的元素,主要用于圖形的繪制。canvas本身沒有繪圖能力,一切都是通過javascript來完成的。二. canvas使用在html中添加canvas元素,定義canvas元素的高寬在javascript代碼中獲取canvas元素對象var canvas d…

Delphi XE2 之 FireMonkey 入門(10) - 常用結構 TPoint、TPointF、TSmallPoint、TSize、TRect、TRectF 及相關方法...

它們都是結構, TPointF、TRectF 屬新增, 其它也都有升級; 現在都擁有豐富的方法和方便的運算符重載; 且有一組相關的公共函數.這組內容重要的是它們都來自 System.Types 單元, 也就是不僅僅在 FM 中可用. TPoint: Create(); // {運算符重載} Equal; // NotEqual;…

【C++ grammar】數據類型轉換、列表初始化

布爾類型 C語言在其標準化過程中引入了bool、true和false關鍵字,增加了原生數據類型來支持布爾數據。 布爾類型的大小(所占的存儲空間)依賴于具體的編譯器實現。也可以用 sizeof運算符得到其占用的空間 Conversion between bool and int 0…

Python對自定義離散點進行指定多項式函數擬合

自定義離散點進行指定多項式函數擬合 用戶自己自己輸入坐標點,擬合函數可根據用戶輸入的多項式的最高次方進行自動擬合函數,擬合方法采用最小二乘法進行函數擬合。 (1,2),(2,5),(3,10),(4,17),(5,26),(6,37)(7,50),(8,65),(9,82) 很顯然是函數為二次函…

選哪個云計算平臺部署自己的網站?

技術發展讓我們可以擁有免費的空間啦! 現在的云計算平臺很多,各大公司都在做這個。 我最近用了國內訪問比較順暢的,新浪SAE,cloudfoundry,openshift。 開始用新浪SAE,因為豆子花光了,就轉到clou…

array_fill_PHP array_fill()函數與示例

array_fillPHP array_fill()函數 (PHP array_fill() Function) array_fill() function is used to fill the n elements in an array from given index with the specific value. array_fill()函數用于使用給定索引從給定索引中填充數組中的n個元素。 Syntax: 句法&#xff1a…

阜陽市計算機學校助學金申請書,計算機系貧困生助學金申請書

尊敬的學校領導:您好!我叫____來自計算機系____級____專業____班,我是一名喜愛讀書、熱愛集體并且性格溫和的男孩。我出生在一個貧窮而又落后的小村。家中有五口人,父母文化淺薄,在家務農,由于多年的勞累,父母兩人身體狀況較差,農業收入低微,…

【C++ grammar】C++簡化內存模型

1、stack(棧) 編譯器自動分配內存(函數內部定義得局部變量、形參) 2、堆(Heap) 一般由程序員分配釋放,若程序員不釋放,程序結束時可能由OS回收(new和delete) …