OpenCV 4.13.0
開源計算機視覺庫 (Open Source Computer Vision)
正在載入...
正在搜尋...
未找到匹配項

詳細說明

本節介紹的函式和類用於對二維影像執行各種線性或非線性濾波操作。

注意
  • 包含所有基本形態學運算元(如腐蝕和膨脹)的示例,請參閱 opencv_source_code/samples/gpu/morphology.cpp

類  cv::cuda::Filter
 所有 CUDA 濾波器的通用介面 : 更多...
 

函式

Ptr< Filtercv::cuda::createBoxFilter (int srcType, int dstType, Size ksize, Point anchor=Point(-1, -1), int borderMode=BORDER_DEFAULT, Scalar borderVal=Scalar::all(0))
 建立一個歸一化的 2D 盒式濾波器。
 
Ptr< Filtercv::cuda::createBoxMaxFilter (int srcType, Size ksize, Point anchor=Point(-1, -1), int borderMode=BORDER_DEFAULT, Scalar borderVal=Scalar::all(0))
 建立最大值濾波器。
 
Ptr< Filtercv::cuda::createBoxMinFilter (int srcType, Size ksize, Point anchor=Point(-1, -1), int borderMode=BORDER_DEFAULT, Scalar borderVal=Scalar::all(0))
 建立最小值濾波器。
 
Ptr< Filtercv::cuda::createColumnSumFilter (int srcType, int dstType, int ksize, int anchor=-1, int borderMode=BORDER_DEFAULT, Scalar borderVal=Scalar::all(0))
 建立一個垂直 1D 盒式濾波器。
 
Ptr< Filtercv::cuda::createDerivFilter (int srcType, int dstType, int dx, int dy, int ksize, bool normalize=false, double scale=1, int rowBorderMode=BORDER_DEFAULT, int columnBorderMode=-1)
 建立一個通用的導數 (Deriv) 運算元。
 
Ptr< Filtercv::cuda::createGaussianFilter (int srcType, int dstType, Size ksize, double sigma1, double sigma2=0, int rowBorderMode=BORDER_DEFAULT, int columnBorderMode=-1)
 建立一個高斯濾波器。
 
Ptr< Filtercv::cuda::createLaplacianFilter (int srcType, int dstType, int ksize=1, double scale=1, int borderMode=BORDER_DEFAULT, Scalar borderVal=Scalar::all(0))
 建立一個拉普拉斯 (Laplacian) 運算元。
 
Ptr< Filtercv::cuda::createLinearFilter (int srcType, int dstType, InputArray kernel, Point anchor=Point(-1, -1), int borderMode=BORDER_DEFAULT, Scalar borderVal=Scalar::all(0))
 建立一個不可分線性 2D 濾波器。
 
Ptr< Filtercv::cuda::createMorphologyFilter (int op, int srcType, InputArray kernel, Point anchor=Point(-1, -1), int iterations=1)
 建立一個 2D 形態學濾波器。
 
Ptr< Filtercv::cuda::createRowSumFilter (int srcType, int dstType, int ksize, int anchor=-1, int borderMode=BORDER_DEFAULT, Scalar borderVal=Scalar::all(0))
 建立一個水平 1D 盒式濾波器。
 
Ptr< Filtercv::cuda::createScharrFilter (int srcType, int dstType, int dx, int dy, double scale=1, int rowBorderMode=BORDER_DEFAULT, int columnBorderMode=-1)
 建立一個垂直或水平的 Scharr 運算元。
 
Ptr< Filtercv::cuda::createSeparableLinearFilter (int srcType, int dstType, InputArray rowKernel, InputArray columnKernel, Point anchor=Point(-1,-1), int rowBorderMode=BORDER_DEFAULT, int columnBorderMode=-1)
 建立一個可分線性濾波器。支援就地處理。
 
Ptr< Filtercv::cuda::createSobelFilter (int srcType, int dstType, int dx, int dy, int ksize=3, double scale=1, int rowBorderMode=BORDER_DEFAULT, int columnBorderMode=-1)
 建立一個 Sobel 運算元。
 

函式文件 (Function Documentation)

◆ createBoxFilter()

Ptr< Filter > cv::cuda::createBoxFilter ( int srcType,
int dstType,
Size ksize,
點 (Point) anchor=Point(-1, -1),
int borderMode = BORDER_DEFAULT,
Scalar borderVal=Scalar::all(0) )

#include <opencv2/cudafilters.hpp>

建立一個歸一化的 2D 盒式濾波器。

引數
srcType輸入影像型別。目前僅支援 CV_8UC1、CV_8UC4 和 CV_32FC1。
dstType輸出影像型別。目前僅支援與 src 相同的型別。
ksize核心大小。
錨點 (anchor)錨點。預設值 Point(-1, -1) 表示錨點位於核心中心。
borderMode畫素外插法。有關詳細資訊,請參閱 borderInterpolate 。
borderVal預設邊界值。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。
另請參閱
boxFilter

◆ createBoxMaxFilter()

Ptr< Filter > cv::cuda::createBoxMaxFilter ( int srcType,
Size ksize,
點 (Point) anchor=Point(-1, -1),
int borderMode = BORDER_DEFAULT,
Scalar borderVal=Scalar::all(0) )

#include <opencv2/cudafilters.hpp>

建立最大值濾波器。

引數
srcType輸入/輸出影像型別。僅支援 CV_8UC1 和 CV_8UC4。
ksize核心大小。
錨點 (anchor)錨點。預設值 (-1) 表示錨點位於核心中心。
borderMode畫素外插法。有關詳細資訊,請參閱 borderInterpolate 。
borderVal預設邊界值。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。

◆ createBoxMinFilter()

Ptr< Filter > cv::cuda::createBoxMinFilter ( int srcType,
Size ksize,
點 (Point) anchor=Point(-1, -1),
int borderMode = BORDER_DEFAULT,
Scalar borderVal=Scalar::all(0) )

#include <opencv2/cudafilters.hpp>

建立最小值濾波器。

引數
srcType輸入/輸出影像型別。僅支援 CV_8UC1 和 CV_8UC4。
ksize核心大小。
錨點 (anchor)錨點。預設值 (-1) 表示錨點位於核心中心。
borderMode畫素外插法。有關詳細資訊,請參閱 borderInterpolate 。
borderVal預設邊界值。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。

◆ createColumnSumFilter()

Ptr< Filter > cv::cuda::createColumnSumFilter ( int srcType,
int dstType,
int ksize,
int anchor=-1,
int borderMode = BORDER_DEFAULT,
Scalar borderVal=Scalar::all(0) )

#include <opencv2/cudafilters.hpp>

建立一個垂直 1D 盒式濾波器。

引數
srcType輸入影像型別。目前僅支援 CV_8UC1 型別。
dstType輸出影像型別。目前僅支援 CV_32FC1 型別。
ksize核心大小。
錨點 (anchor)錨點。預設值 (-1) 表示錨點位於核心中心。
borderMode畫素外插法。有關詳細資訊,請參閱 borderInterpolate 。
borderVal預設邊界值。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。

◆ createDerivFilter()

Ptr< Filter > cv::cuda::createDerivFilter ( int srcType,
int dstType,
int dx,
int dy,
int ksize,
bool normalize=false,
double scale = 1,
int rowBorderMode=BORDER_DEFAULT,
int columnBorderMode=-1 )

#include <opencv2/cudafilters.hpp>

建立一個通用的導數 (Deriv) 運算元。

引數
srcType源影像型別。
dstType目標陣列型別。
dxx 方向的導數階數。
dyy 方向的導數階數。
ksize孔徑大小。有關詳細資訊,請參閱 getDerivKernels 。
normalize指示是否對濾波器係數進行歸一化(縮放)的標誌。有關詳細資訊,請參閱 getDerivKernels 。
scale計算出的導數值的可選縮放因子。預設情況下,不應用縮放。有關詳細資訊,請參閱 getDerivKernels 。
rowBorderMode垂直方向的畫素外插法。有關詳細資訊,請參閱 borderInterpolate。
columnBorderMode水平方向的畫素外插法。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。

◆ createGaussianFilter()

Ptr< Filter > cv::cuda::createGaussianFilter ( int srcType,
int dstType,
Size ksize,
double sigma1,
double sigma2=0,
int rowBorderMode=BORDER_DEFAULT,
int columnBorderMode=-1 )

#include <opencv2/cudafilters.hpp>

建立一個高斯濾波器。

引數
srcType源影像型別。
dstType目標陣列型別。
ksize孔徑大小。有關詳細資訊,請參閱 getGaussianKernel 。
sigma1水平方向的 Gaussian sigma。有關詳細資訊,請參閱 getGaussianKernel 。
sigma2垂直方向的 Gaussian sigma。如果為 0,則 \(\texttt{sigma2}\leftarrow\texttt{sigma1}\)。
rowBorderMode垂直方向的畫素外插法。有關詳細資訊,請參閱 borderInterpolate。
columnBorderMode水平方向的畫素外插法。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。
另請參閱
高斯模糊 (GaussianBlur)

◆ createLaplacianFilter()

Ptr< Filter > cv::cuda::createLaplacianFilter ( int srcType,
int dstType,
int ksize = 1,
double scale = 1,
int borderMode = BORDER_DEFAULT,
Scalar borderVal=Scalar::all(0) )

#include <opencv2/cudafilters.hpp>

建立一個拉普拉斯 (Laplacian) 運算元。

引數
srcType輸入影像型別。支援 CV_8U 、 CV_16U 和 CV_32F 的單通道和四通道影像。
dstType輸出影像型別。目前僅支援與 src 相同的型別。
ksize用於計算二階導數濾波器的孔徑大小(參見 getDerivKernels)。它必須是正數且為奇數。僅支援 ksize = 1 和 ksize = 3。
scale計算出的拉普拉斯運算元值的可選縮放因子。預設情況下,不應用縮放(參見 getDerivKernels)。
borderMode畫素外插法。有關詳細資訊,請參閱 borderInterpolate 。
borderVal預設邊界值。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。
另請參閱
拉普拉斯

◆ createLinearFilter()

Ptr< Filter > cv::cuda::createLinearFilter ( int srcType,
int dstType,
InputArray kernel,
點 (Point) anchor=Point(-1, -1),
int borderMode = BORDER_DEFAULT,
Scalar borderVal=Scalar::all(0) )

#include <opencv2/cudafilters.hpp>

建立一個不可分線性 2D 濾波器。

引數
srcType輸入影像型別。支援 CV_8U 、 CV_16U 和 CV_32F 的單通道和四通道影像。
dstType輸出影像型別。目前僅支援與 src 相同的型別。
kernel濾波器係數的二維陣列。
錨點 (anchor)錨點。預設值 Point(-1, -1) 表示錨點位於核心中心。
borderMode畫素外插法。有關詳細資訊,請參閱 borderInterpolate 。
borderVal預設邊界值。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。
另請參閱
filter2D

◆ createMorphologyFilter()

Ptr< Filter > cv::cuda::createMorphologyFilter ( int op,
int srcType,
InputArray kernel,
點 (Point) anchor=Point(-1, -1),
int iterations=1 )

#include <opencv2/cudafilters.hpp>

建立一個 2D 形態學濾波器。

引數
op形態學操作的型別。可能的型別如下:
  • MORPH_ERODE 腐蝕
  • MORPH_DILATE 膨脹
  • MORPH_OPEN 開運算
  • MORPH_CLOSE 閉運算
  • MORPH_GRADIENT 形態學梯度
  • MORPH_TOPHAT "頂帽變換"
  • MORPH_BLACKHAT "黑帽變換"
srcType輸入/輸出影像型別。僅支援 CV_8UC1、CV_8UC4、CV_32FC1 和 CV_32FC4。
kernel形態學操作的 8 位結構元素(二維)。
錨點 (anchor)結構元素內的錨點位置。負值表示錨點位於中心。
iterations應用腐蝕和膨脹的次數。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。
另請參閱
morphologyEx

◆ createRowSumFilter()

Ptr< Filter > cv::cuda::createRowSumFilter ( int srcType,
int dstType,
int ksize,
int anchor=-1,
int borderMode = BORDER_DEFAULT,
Scalar borderVal=Scalar::all(0) )

#include <opencv2/cudafilters.hpp>

建立一個水平 1D 盒式濾波器。

引數
srcType輸入影像型別。目前僅支援 CV_8UC1 型別。
dstType輸出影像型別。目前僅支援 CV_32FC1 型別。
ksize核心大小。
錨點 (anchor)錨點。預設值 (-1) 表示錨點位於核心中心。
borderMode畫素外插法。有關詳細資訊,請參閱 borderInterpolate 。
borderVal預設邊界值。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。

◆ createScharrFilter()

Ptr< Filter > cv::cuda::createScharrFilter ( int srcType,
int dstType,
int dx,
int dy,
double scale = 1,
int rowBorderMode=BORDER_DEFAULT,
int columnBorderMode=-1 )

#include <opencv2/cudafilters.hpp>

建立一個垂直或水平的 Scharr 運算元。

引數
srcType源影像型別。
dstType目標陣列型別。
dxx 方向的導數階數。
dyy 方向的導數階數。
scale計算出的導數值的可選縮放因子。預設情況下,不應用縮放。有關詳細資訊,請參閱 getDerivKernels 。
rowBorderMode垂直方向的畫素外插法。有關詳細資訊,請參閱 borderInterpolate。
columnBorderMode水平方向的畫素外插法。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。
另請參閱
Scharr

◆ createSeparableLinearFilter()

Ptr< Filter > cv::cuda::createSeparableLinearFilter ( int srcType,
int dstType,
InputArray rowKernel,
InputArray columnKernel,
點 (Point) anchor = Point(-1,-1),
int rowBorderMode=BORDER_DEFAULT,
int columnBorderMode=-1 )

#include <opencv2/cudafilters.hpp>

建立一個可分線性濾波器。支援就地處理。

引數
srcType源陣列型別。
dstType目標陣列型別。
rowKernel水平濾波器係數。支援大小 <= 32 的核心。noArray() 支援忽略水平濾波。
columnKernel垂直濾波器係數。支援大小 <= 32 的核心。noArray() 支援忽略垂直濾波。
錨點 (anchor)核心內的錨點位置。負值表示錨點位於孔徑中心。
rowBorderMode垂直方向的畫素外插法。有關詳細資訊,請參閱 borderInterpolate。
columnBorderMode水平方向的畫素外插法。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。
另請參閱
可分二維濾波 (sepFilter2D)

◆ createSobelFilter()

Ptr< Filter > cv::cuda::createSobelFilter ( int srcType,
int dstType,
int dx,
int dy,
int ksize = 3,
double scale = 1,
int rowBorderMode=BORDER_DEFAULT,
int columnBorderMode=-1 )

#include <opencv2/cudafilters.hpp>

建立一個 Sobel 運算元。

引數
srcType源影像型別。
dstType目標陣列型別。
dxx 方向的導數階數。
dyy 方向的導數階數。
ksize擴充套件 Sobel 核心的大小。可能的值為 1、3、5 或 7。
scale計算出的導數值的可選縮放因子。預設情況下,不應用縮放。有關詳細資訊,請參閱 getDerivKernels 。
rowBorderMode垂直方向的畫素外插法。有關詳細資訊,請參閱 borderInterpolate。
columnBorderMode水平方向的畫素外插法。
注意
如果在 CUDA Stream 中應用,則每個 Stream 都必須建立單獨的濾波器例項。跨多個流共享單個例項不受支援,並且可能由於特定於流的內部狀態而導致未定義行為。
另請參閱
Sobel