[OpenCV]拓展映像邊界,opencv拓展映像邊界

來源:互聯網
上載者:User

[OpenCV]拓展映像邊界,opencv拓展映像邊界

影像處理中經常遇到使用當前像素鄰的像素來計算當前像素位置的某些屬性值,這樣就會導致邊界像素處越界訪問,一般有兩種方法解決這種問題:只對不越界的像素進行處理;對映像邊界進行拓展,本文主要介紹如何使用OpenCV簡單的對邊界進行拓展。


邊界的拓展方式

OpenCV提供了幾種不同的邊界拓展策略:

* BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh* BORDER_REFLECT: fedcba|abcdefgh|hgfedcb* BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba* BORDER_WRAP: cdefgh|abcdefgh|abcdefg* BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii with some specified ’i’

以上內容取自OpenCV的協助文檔。其中 “|” 表示的是映像的邊界,連個“|”中間是映像的內容,最後一個邊界拓展策略還要額外給定一個i值,用於對額外的邊界進行賦值。


邊界拓展

使用OpenCV提供的函數copyMakeBorder()來拓展邊界,其原型如下

void copyMakeBorder( InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value=Scalar() )

src:輸入的數組。

dst:輸出的拓展邊界後的數組。

top:在src上邊界向上拓展的行數。

bottom:在src下邊界向下拓展的行數。

left:在src的左邊界向左拓展的列數。

right:在src的右邊界向右拓展的列數。

borderType:上一節中的邊界拓展策略中的一個。

value:當你的邊界策略使用的是BORDER_CONSTANT的時候,此處是指邊界處填寫的常數值。


執行個體

用一個簡單一實例來解釋下如何拓展邊界。

Mat extendedIm;copyMakeBorder( orgIm, extendedIm, extRows, extRows, extCols, extCols, BORDER_REFLECT_101, Scalar::all(0) );

在執行個體中,上下邊界分別拓展extRows行,左右分別拓展extCols列,使用的是BORDER_REFLECT_101,最有一個參數,可以不寫,我這裡寫上是為了告訴大家函數可以填寫這些參數。

以下是實驗代碼和結果:

#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main(int argc, char**argv){Mat orgIm = imread("theImage.png");int extRows = 19;int extCols = 15;Mat extendedIm;copyMakeBorder( orgIm, extendedIm, extRows, extRows, extCols, extCols, BORDER_REFLECT_101);imshow("original image", orgIm);imshow("extended image", extendedIm);waitKey();return 0;}


是原始映像。



是拓展後的映像。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.