1. 程式人生 > >matlab vs opencv 對影象仿射變換功能的效果對比

matlab vs opencv 對影象仿射變換功能的效果對比

matlab 應該更加完善。相同的仿射矩陣,比如用一個30度的旋轉矩陣,對同一影象做旋轉出來,顯示出來的影象效果如下:

我只要實現旋轉操作,顯示的結果就是是完美的整幅影象。而python呼叫opencv的函式進行操作,還需要考慮一些引數,比如旋轉中心,另外,在影象旋轉後的尺寸上也要加入控制: 

M1 = cv2.getRotationMatrix2D((round(h/2),round(w/2)),30,1)

img_tr = cv2.warpAffine(im1, M1, (round(im1.shape[1]*1.0),round(im1.shape[0]*1.0)))

這句程式碼中我還把原圖的行列數倒過來,才能得到相對可以接受的影象,只是,結果仍然不是影象的全貌:


可以看到,opencv需要更加複雜的控制才能得到整體的效果,上面的兩句程式碼調整為:


M1 = cv2.getRotationMatrix2D((round(h/1.3),round(w/3.5)),30,1)

img_tr = cv2.warpAffine(im1, M1, (round(im1.shape[1]*1.7),round(im1.shape[0]*1.3)))

顯示結果才是較為完整的旋轉效果:


對比證明,matlab可以讓工程師更專注於演算法的效果,不必考慮邊邊角角的問題,而opencv的應用則需要考慮更多問題,比如經過變換後的尺寸變化等,這會牽扯一部分精力到實現的細節中去。大部分的工程實現中,演算法原理和效果在模擬階段已經ok了,實現起來卻是問題多多,由此可見一斑。

相關推薦

matlab vs opencv 影象仿變換功能效果對比

matlab 應該更加完善。相同的仿射矩陣,比如用一個30度的旋轉矩陣,對同一影象做旋轉出來,顯示出來的影象效果如下:我只要實現旋轉操作,顯示的結果就是是完美的整幅影象。而python呼叫opencv的函式進行操作,還需要考慮一些引數,比如旋轉中心,另外,在影象旋轉後的尺寸上

opencv 影象仿變換 計算仿變換後對應特徵點的新座標 影象旋轉、縮放、平移

常常需要最影象進行仿射變換,仿射變換後,我們可能需要將原來影象中的特徵點座標進行重新計算,獲得原來影象中例如眼睛瞳孔座標的新的位置,用於在新得到影象中繼續利用瞳孔位置座標。 關於仿射變換的詳細介紹,請見上面連結的部落格。 我這裡主要介紹如何在已經知道原影象中若干特徵點的

影象處理(二)——影象仿變換

這次實驗是要設計一個可以讓圖形進行繞任意中心任意角度旋轉的函式WarpAffine,其核心大概就是使用雙線性差值進行重取樣。 在數學上,雙線性插值是有兩個變數的插值函式的線性插值擴充套件,其核心思想是在兩個方向分別進行一次線性插值。 在程式碼中實現雙線性插值要注意原影象和目標影象的原

Opencv中的仿變換和透射變換

OpenCV提供了一些關於透視變換的介面,例如getPerpectiveTransform, warpPerspective等。這裡主要說明一下warpPerspective是如何工作的。  其實OpenCV中很多影象變換的對映關係都是反直覺的,如這裡的warpPerspe

OpenCV3之——影象仿變換warpAffine()和getRotationMatrix2D()

#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; #define WINDOW_NAME1 "原始圖視窗" #defi

OpenCV練習:仿變換和透射變換

#coding=utf-8</code> import cv2 import numpy as np from matplotlib import pyplot as plt img=cv2.imread('1.jpg') rows,cols,ch=img.shape pts1=np.

opencv中的仿變換(程式)

(一)仿射變換的步驟: 1.得到仿射變換的運算元 2.進行仿射變換的操作。 仿射變換的操作: 1.平移操作:三個點的座標進行加運算 2.旋轉操作:中心點,旋轉角度,縮放比例構成仿射運算元 3.縮放:可以根據旋轉操作來,旋轉操作中的角度為0度,有縮放比例來進行縮放操作,也可以用三點來進行縮

影象仿變換影象扭曲(Image Warping)

空間影象幾何變換包括兩個主要步驟: (1) 空間座標變換 (2)變換座標的賦值、插值運算 空間座標變換一般可以表達為如下式子: 對於用得普遍的仿射變換,可以表達為如下式子: (x, y)為變換後的座標,(v, w)為變換前的座標。通過變換矩陣T,可以進行影象的縮放,旋轉

0006-用OpenCV仿變換函式warpAffine實現影象的任意角度旋轉!

影象旋轉的含義這裡就不說了。 說下仿射變換的含義,仿射變換實際上是一種線性變換,通過這種變換,可以實現影象的平移、縮放、翻轉、旋轉、剪下等操作。 在OpenCV中可以通過函式getRotationMatrix2D和函式warpAffine的聯合使用,對影象進行任意角度的旋轉。使用方法如下:

opencv 仿變換 根據眼睛座標進行人臉齊 計算變換後對應座標

//根據眼睛座標對影象進行仿射變換 //src - 原影象 //landmarks - 原影象中68個關鍵點 Mat getwarpAffineImg(Mat &src, vector<Point2f> &landmarks) {     Mat oral;src.copyTo(

OpenCV計算機視覺學習(11)——影象空間幾何變換影象縮放,影象旋轉,影象翻轉,影象平移,仿變換,映象變換

如果需要處理的原圖及程式碼,請移步小編的GitHub地址   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/ComputerVisionPractice   影象的幾何變換是在不改變影象內容的前提下對影象畫素進行空間幾何變換,主要包括了影象的平移變換,縮放,

圖像的仿變換

控制 lan 換來 存儲 input 順序存儲 矩陣 bubuko war 仿射變換,又稱仿射映射,是指在幾何中,一個向量空間進行一次線性變換並接上一個平移,變換為另一個向量空間 線性變換包含了平移,縮放,旋轉,鏡像,斜切,正交投影,線性變換在幾何上可能造成拉伸但是不會直線

OpenCV仿變換+投射變換+單應性矩陣

arpa title tle 匹配 之間 phy 帶來 http cti OpenCV仿射變換+投射變換+單應性矩陣 本來想用單應性求解小規模運動的物體的位移,但是後來發現即使是很微小的位移也會帶來超級大的誤差甚至錯誤求解,看起來這個方法各種行不通,還是要匹配知道深度

OpenCV 的AffineTransform(傳說中的仿變換

為了讓資料集能夠有旋轉不變形,希望在caffe訓練處好結果,我對採集的資料集進行了一個仿射變換。 利用opencv可以比較方便的實現這個事情。 我的資料集還有一些點標註。標註需要在圖片旋轉的同時把關鍵點也旋轉到合適的位置。 Mat affine

opencv實現圖片的仿變換和旋轉

import cv2 import numpy as np img = cv2.imread('1.jpg',1) cv2.imshow('old',img) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] matSrc = n

影象仿變換與透視變換研究

                                        &nb

影象處理二:仿變換和透視變換

一、仿射變換(Affine Transformation)         放射變換(平面變換、二維座標變換):是空間直角座標系的變換,從一個二維座標變換到另一個二維座標,仿射變換是一個線性變換,保持了影象的“平行性”和“平直性”,即影象中原來的直線和

c語言數字影象處理(三):仿變換

1 void bilinera_interpolation(short** in_array, short height, short width, 2 short** out_array, short out_height, short out

人臉齊:warpAffine仿變換

下面介紹一些典型的仿射變換: (1)平移,將每一點移到到(x+t , y+t),變換矩陣為 (2)縮放變換  將每一點的橫座標放大或縮小sx倍,縱座標放大(縮小)到sy倍,變換矩陣為 (3)旋轉變換原點:目標圖形圍繞原點順時針旋轉Θ 弧度,變換矩陣為 (4

【OpenCV3影象處理】仿變換 透視變換

影象處理的仿射變換和透視變換 仿射變換和透視變換更直觀的叫法可以叫做“平面變換”和“空間變換”。一個是二維座標(x,y),一個是三維座標(x,y,z) 仿射變換:二維平面的變換 ; 線性變換 ;已知3對座標點就可以求得變換矩陣 透視變換:三維空間的變換