OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
其他影像變換

詳細描述

列舉

列舉  cv::AdaptiveThresholdTypes {
  cv::ADAPTIVE_THRESH_MEAN_C = 0 ,
  cv::ADAPTIVE_THRESH_GAUSSIAN_C = 1
}
 
列舉  cv::DistanceTransformLabelTypes {
  cv::DIST_LABEL_CCOMP = 0 ,
  cv::DIST_LABEL_PIXEL = 1
}
 距離變換演算法標誌 更多...
 
列舉  cv::DistanceTransformMasks {
  cv::DIST_MASK_3 = 3 ,
  cv::DIST_MASK_5 = 5 ,
  cv::DIST_MASK_PRECISE = 0
}
 距離變換的掩碼尺寸。 更多...
 
列舉  cv::DistanceTypes {
  cv::DIST_USER = -1 ,
  cv::DIST_L1 = 1 ,
  cv::DIST_L2 = 2 ,
  cv::DIST_C = 3 ,
  cv::DIST_L12 = 4 ,
  cv::DIST_FAIR = 5 ,
  cv::DIST_WELSCH = 6 ,
  cv::DIST_HUBER = 7
}
 
列舉  cv::FloodFillFlags {
  cv::FLOODFILL_FIXED_RANGE = 1 << 16 ,
  cv::FLOODFILL_MASK_ONLY = 1 << 17
}
 漫水填充演算法標誌 更多...
 
列舉  cv::GrabCutClasses {
  cv::GC_BGD = 0 ,
  cv::GC_FGD = 1 ,
  cv::GC_PR_BGD = 2 ,
  cv::GC_PR_FGD = 3
}
 GrabCut 演算法中畫素的類別 更多...
 
列舉  cv::GrabCutModes {
  cv::GC_INIT_WITH_RECT = 0 ,
  cv::GC_INIT_WITH_MASK = 1 ,
  cv::GC_EVAL = 2 ,
  cv::GC_EVAL_FREEZE_MODEL = 3
}
 GrabCut 演算法標誌。 更多...
 
列舉  cv::ThresholdTypes {
  cv::THRESH_BINARY = 0 ,
  cv::THRESH_BINARY_INV = 1 ,
  cv::THRESH_TRUNC = 2 ,
  cv::THRESH_TOZERO = 3 ,
  cv::THRESH_TOZERO_INV = 4 ,
  cv::THRESH_MASK = 7 ,
  cv::THRESH_OTSU = 8 ,
  cv::THRESH_TRIANGLE = 16 ,
  cv::THRESH_DRYRUN = 128
}
 

函式

void cv::adaptiveThreshold (InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)
 對陣列應用自適應閾值。
 
void cv::blendLinear (InputArray src1, InputArray src2, InputArray weights1, InputArray weights2, OutputArray dst)
 
void cv::distanceTransform (InputArray src, OutputArray dst, int distanceType, int maskSize, int dstType=CV_32F)
 
void cv::distanceTransform (InputArray src, OutputArray dst, OutputArray labels, int distanceType, int maskSize, int labelType=DIST_LABEL_CCOMP)
 計算源影像每個畫素到最近零畫素的距離。
 
int cv::floodFill (InputOutputArray image, InputOutputArray mask, Point seedPoint, Scalar newVal, Rect *rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4)
 用給定顏色填充連通分量。
 
int cv::floodFill (InputOutputArray image, Point seedPoint, Scalar newVal, Rect *rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4)
 
void cv::integral (InputArray src, OutputArray sum, int sdepth=-1)
 
void cv::integral (InputArray src, OutputArray sum, OutputArray sqsum, int sdepth=-1, int sqdepth=-1)
 
void cv::integral (InputArray src, OutputArray sum, OutputArray sqsum, OutputArray tilted, int sdepth=-1, int sqdepth=-1)
 計算影像的積分。
 
double cv::threshold (InputArray src, OutputArray dst, double thresh, double maxval, int type)
 對每個陣列元素應用固定級別的閾值。
 
double cv::thresholdWithMask (InputArray src, InputOutputArray dst, InputArray mask, double thresh, double maxval, int type)
 threshold 相同,但帶有可選掩碼。
 

列舉型別文件

◆ AdaptiveThresholdTypes

#include <opencv2/imgproc.hpp>

自適應閾值演算法

另請參見
adaptiveThreshold
列舉器
ADAPTIVE_THRESH_MEAN_C 
Python: cv.ADAPTIVE_THRESH_MEAN_C

閾值 \(T(x,y)\) 是 \((x, y)\) 的 \(\texttt{blockSize} \times \texttt{blockSize}\) 鄰域的平均值減去 C

ADAPTIVE_THRESH_GAUSSIAN_C 
Python: cv.ADAPTIVE_THRESH_GAUSSIAN_C

閾值 \(T(x, y)\) 是 \((x, y)\) 的 \(\texttt{blockSize} \times \texttt{blockSize}\) 鄰域的加權和(與高斯視窗的互相關)減去 C。指定的 blockSize 使用預設的 sigma(標準差)。參見 getGaussianKernel

◆ DistanceTransformLabelTypes

#include <opencv2/imgproc.hpp>

距離變換演算法標誌

列舉器
DIST_LABEL_CCOMP 
Python: cv.DIST_LABEL_CCOMP

src 中零畫素的每個連通分量(以及所有最接近該連通分量的非零畫素)將被分配相同的標籤

DIST_LABEL_PIXEL 
Python: cv.DIST_LABEL_PIXEL

每個零畫素(以及所有最接近它的非零畫素)都將獲得自己的標籤。

◆ DistanceTransformMasks

#include <opencv2/imgproc.hpp>

距離變換的掩碼尺寸。

列舉器
DIST_MASK_3 
Python: cv.DIST_MASK_3

mask=3

DIST_MASK_5 
Python: cv.DIST_MASK_5

mask=5

DIST_MASK_PRECISE 
Python: cv.DIST_MASK_PRECISE

◆ DistanceTypes

#include <opencv2/imgproc.hpp>

距離變換和 M 估計器的距離型別

另請參見
distanceTransform, fitLine
列舉器
DIST_USER 
Python: cv.DIST_USER

使用者定義的距離。

DIST_L1 
Python: cv.DIST_L1

distance = |x1-x2| + |y1-y2|

DIST_L2 
Python: cv.DIST_L2

the simple euclidean distance

DIST_C 
Python: cv.DIST_C

distance = max(|x1-x2|,|y1-y2|)

DIST_L12 
Python: cv.DIST_L12

L1-L2 度量: distance = 2(sqrt(1+x*x/2) - 1))

DIST_FAIR 
Python: cv.DIST_FAIR

distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998

DIST_WELSCH 
Python: cv.DIST_WELSCH

distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846

DIST_HUBER 
Python: cv.DIST_HUBER

distance = |x|

◆ FloodFillFlags

#include <opencv2/imgproc.hpp>

漫水填充演算法標誌

列舉器
FLOODFILL_FIXED_RANGE 
Python: cv.FLOODFILL_FIXED_RANGE

如果設定,則考慮當前畫素和種子畫素之間的差異。否則,考慮相鄰畫素之間的差異(即,範圍是浮動的)。

FLOODFILL_MASK_ONLY 
Python: cv.FLOODFILL_MASK_ONLY

如果設定,函式不會改變影像(newVal 被忽略),並且只用標誌中位 8-16 中指定的值填充掩碼,如上所述。此選項僅在具有掩碼引數的函式變體中有意義。

◆ GrabCutClasses

#include <opencv2/imgproc.hpp>

GrabCut 演算法中畫素的類別

列舉器
GC_BGD 
Python: cv.GC_BGD

明顯的背景畫素

GC_FGD 
Python: cv.GC_FGD

明顯的(物件)前景畫素

GC_PR_BGD 
Python: cv.GC_PR_BGD

可能的背景畫素

GC_PR_FGD 
Python: cv.GC_PR_FGD

可能的(物件)前景畫素

◆ GrabCutModes

#include <opencv2/imgproc.hpp>

GrabCut 演算法標誌。

列舉器
GC_INIT_WITH_RECT 
Python: cv.GC_INIT_WITH_RECT

函式使用提供的矩形初始化狀態和掩碼。之後,它執行演算法的 iterCount 次迭代。

GC_INIT_WITH_MASK 
Python: cv.GC_INIT_WITH_MASK

函式使用提供的掩碼初始化狀態。請注意,GC_INIT_WITH_RECT 和 GC_INIT_WITH_MASK 可以結合使用。然後,ROI 之外的所有畫素都將自動初始化為 GC_BGD。

GC_EVAL 
Python: cv.GC_EVAL

該值表示演算法應繼續執行。

GC_EVAL_FREEZE_MODEL 
Python: cv.GC_EVAL_FREEZE_MODEL

該值表示演算法應使用固定模型執行 GrabCut 演算法(單次迭代)

◆ ThresholdTypes

#include <opencv2/imgproc.hpp>

閾值操作的型別

列舉器
THRESH_BINARY 
Python: cv.THRESH_BINARY

\[\texttt{dst} (x,y) = \fork{\texttt{maxval}}{如果 \(\texttt{src}(x,y) > \texttt{thresh}\)}{0}{否則}\]

THRESH_BINARY_INV 
Python: cv.THRESH_BINARY_INV

\[\texttt{dst} (x,y) = \fork{0}{如果 \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{maxval}}{否則}\]

THRESH_TRUNC 
Python: cv.THRESH_TRUNC

\[\texttt{dst} (x,y) = \fork{\texttt{threshold}}{如果 \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{src}(x,y)}{否則}\]

THRESH_TOZERO 
Python: cv.THRESH_TOZERO

\[\texttt{dst} (x,y) = \fork{\texttt{src}(x,y)}{如果 \(\texttt{src}(x,y) > \texttt{thresh}\)}{0}{否則}\]

THRESH_TOZERO_INV 
Python: cv.THRESH_TOZERO_INV

\[\texttt{dst} (x,y) = \fork{0}{如果 \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{src}(x,y)}{否則}\]

THRESH_MASK 
Python: cv.THRESH_MASK
THRESH_OTSU 
Python: cv.THRESH_OTSU

標誌,使用 Otsu 演算法選擇最優閾值

THRESH_TRIANGLE 
Python: cv.THRESH_TRIANGLE

標誌,使用 Triangle 演算法選擇最優閾值

THRESH_DRYRUN 
Python: cv.THRESH_DRYRUN

標誌,僅計算閾值(對 OTSU/TRIANGLE 有用),但不實際執行閾值化

函式文件

◆ adaptiveThreshold()

void cv::adaptiveThreshold ( InputArray src,
OutputArray dst,
double maxValue,
int adaptiveMethod,
int thresholdType,
int blockSize,
double C )
Python
cv.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) -> dst

#include <opencv2/imgproc.hpp>

對陣列應用自適應閾值。

函式根據以下公式將灰度影像轉換為二值影像

  • THRESH_BINARY

    \[dst(x,y) = \fork{\texttt{maxValue}}{如果 \(src(x,y) > T(x,y)\)}{0}{否則}\]

  • THRESH_BINARY_INV

    \[dst(x,y) = \fork{0}{如果 \(src(x,y) > T(x,y)\)}{\texttt{maxValue}}{否則}\]

    其中 \(T(x,y)\) 是為每個畫素單獨計算的閾值(參見 adaptiveMethod 引數)。

此函式可以就地處理影像。

引數
src源 8 位單通道影像。
dst與 src 相同大小和型別的輸出影像。
maxValue滿足條件的畫素被賦值為非零值
adaptiveMethod要使用的自適應閾值演算法,參見 AdaptiveThresholdTypes。使用 BORDER_REPLICATE | BORDER_ISOLATED 來處理邊界。
thresholdType閾值型別,必須是 THRESH_BINARYTHRESH_BINARY_INV,參見 ThresholdTypes
blockSize用於計算畫素閾值的畫素鄰域的大小:3、5、7 等。
C從平均值或加權平均值中減去的常量(參見下面的詳細資訊)。通常為正,但也可以是零或負。
另請參見
threshold, blur, GaussianBlur

◆ blendLinear()

void cv::blendLinear ( InputArray src1,
InputArray src2,
InputArray weights1,
InputArray weights2,
OutputArray dst )
Python
cv.blendLinear(src1, src2, weights1, weights2[, dst]) -> dst

#include <opencv2/imgproc.hpp>

執行兩個影像的線性混合

\[ \texttt{dst}(i,j) = \texttt{weights1}(i,j)*\texttt{src1}(i,j) + \texttt{weights2}(i,j)*\texttt{src2}(i,j) \]

引數
src1它具有 CV_8UC(n)CV_32FC(n) 型別,其中 n 是一個正整數。
src2它與 src1 具有相同的型別和大小。
weights1它具有 CV_32FC1 型別,並且與 src1 大小相同。
weights2它具有 CV_32FC1 型別,並且與 src1 大小相同。
dst如果它與 src1 不具有相同的大小和型別,則會被建立。

◆ distanceTransform() [1/2]

void cv::distanceTransform ( InputArray src,
OutputArray dst,
int distanceType,
int maskSize,
int dstType = CV_32F )
Python
cv.distanceTransform(src, distanceType, maskSize[, dst[, dstType]]) -> dst
cv.distanceTransformWithLabels(src, distanceType, maskSize[, dst[, labels[, labelType]]]) -> dst, labels

#include <opencv2/imgproc.hpp>

這是一個過載成員函式,為方便起見而提供。它與上述函式的唯一區別在於它接受的引數。

引數
src8 位,單通道(二進位制)源影像。
dst帶有計算距離的輸出影像。它是一個 8 位或 32 位浮點單通道影像,與 src 大小相同。
distanceType距離型別,參見 DistanceTypes
maskSize距離變換掩碼的大小,參見 DistanceTransformMasks。對於 DIST_L1DIST_C 距離型別,引數被強制設定為 3,因為 \(3\times 3\) 掩碼與 \(5\times 5\) 或任何更大孔徑的結果相同。
dstType輸出影像的型別。可以是 CV_8U 或 CV_32F。CV_8U 型別只能用於函式的第一種變體,且 distanceType == DIST_L1

◆ distanceTransform() [2/2]

void cv::distanceTransform ( InputArray src,
OutputArray dst,
OutputArray labels,
int distanceType,
int maskSize,
int labelType = DIST_LABEL_CCOMP )
Python
cv.distanceTransform(src, distanceType, maskSize[, dst[, dstType]]) -> dst
cv.distanceTransformWithLabels(src, distanceType, maskSize[, dst[, labels[, labelType]]]) -> dst, labels

#include <opencv2/imgproc.hpp>

計算源影像每個畫素到最近零畫素的距離。

函式 cv::distanceTransform 計算每個二值影像畫素到最近零畫素的近似或精確距離。對於零影像畫素,距離顯然為零。

當 maskSize == DIST_MASK_PRECISE 且 distanceType == DIST_L2 時,函式執行 [87] 中描述的演算法。此演算法使用 TBB 庫並行化。

在其他情況下,使用演算法 [35]。這意味著對於一個畫素,函式會找到到最近零畫素的最短路徑,該路徑由基本位移組成:水平、垂直、對角線或騎士步(最後一種可用於 \(5\times 5\) 掩碼)。總距離計算為這些基本距離的總和。由於距離函式應該是對稱的,所有水平和垂直位移必須具有相同的成本(記為 a),所有對角線位移必須具有相同的成本(記為 b),所有騎士步必須具有相同的成本(記為 c)。對於 DIST_CDIST_L1 型別,距離精確計算,而對於 DIST_L2(歐幾里得距離),距離只能以相對誤差計算(\(5\times 5\) 掩碼提供更準確的結果)。對於 abc,OpenCV 使用原始論文中建議的值

  • DIST_L1:a = 1, b = 2
  • DIST_L2
    • 3 x 3: a=0.955, b=1.3693
    • 5 x 5: a=1, b=1.4, c=2.1969
  • DIST_C: a = 1, b = 1

通常,對於快速、粗略的距離估計,使用 DIST_L2、\(3\times 3\) 掩碼。對於更準確的距離估計,使用 DIST_L2、\(5\times 5\) 掩碼或精確演算法。請注意,精確演算法和近似演算法都對畫素數量呈線性關係。

此函式變體不僅計算每個畫素 \((x, y)\) 的最小距離,還識別由零畫素組成的最近連通分量(labelType==DIST_LABEL_CCOMP)或最近的零畫素(labelType==DIST_LABEL_PIXEL)。分量/畫素的索引儲存在 labels(x, y) 中。當 labelType==DIST_LABEL_CCOMP 時,函式自動在輸入影像中找到零畫素的連通分量並用不同的標籤標記它們。當 labelType==DIST_LABEL_PIXEL 時,函式掃描輸入影像並用不同的標籤標記所有零畫素。

在此模式下,複雜度仍然是線性的。也就是說,該函式提供了一種非常快速的方法來計算二值影像的 Voronoi 圖。目前,第二種變體只能使用近似距離變換演算法,即 maskSize=DIST_MASK_PRECISE 尚未支援。

引數
src8 位,單通道(二進位制)源影像。
dst帶有計算距離的輸出影像。它是一個 8 位或 32 位浮點單通道影像,與 src 大小相同。
labels標籤的二維輸出陣列(離散 Voronoi 圖)。它具有 CV_32SC1 型別,並且與 src 大小相同。
distanceType距離型別,參見 DistanceTypes
maskSize距離變換掩碼的大小,參見 DistanceTransformMasksDIST_MASK_PRECISE 此變體不支援。對於 DIST_L1DIST_C 距離型別,引數被強制設定為 3,因為 \(3\times 3\) 掩碼與 \(5\times 5\) 或任何更大孔徑的結果相同。
labelType要構建的標籤陣列的型別,參見 DistanceTransformLabelTypes

◆ floodFill() [1/2]

int cv::floodFill ( InputOutputArray image,
InputOutputArray mask,
Point seedPoint,
Scalar 用於塗抹斑點的視差值,
Rect * rect = 0,
Scalar loDiff = Scalar(),
Scalar upDiff = Scalar(),
int flags = 4 )
Python
cv.floodFill(image, mask, seedPoint, newVal[, loDiff[, upDiff[, flags]]]) -> retval, image, mask, rect

#include <opencv2/imgproc.hpp>

用給定顏色填充連通分量。

函式 cv::floodFill 從種子點開始填充指定顏色的連通分量。連通性由相鄰畫素的顏色/亮度接近程度決定。在以下情況下,畫素 \((x,y)\) 被認為屬於重繪域:

  • 在灰度影像和浮動範圍的情況下

    \[\texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff}\]

  • 在灰度影像和固定範圍的情況下

    \[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff}\]

  • 在彩色影像和浮動範圍的情況下

    \[\texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r,\]

    \[\texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g\]

    \[\texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b\]

  • 在彩色影像和固定範圍的情況下

    \[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r+ \texttt{upDiff} _r,\]

    \[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g+ \texttt{upDiff} _g\]

    \[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b+ \texttt{upDiff} _b\]

其中 \(src(x',y')\) 是已知屬於該分量的某個相鄰畫素的值。也就是說,要新增到連通分量中,畫素的顏色/亮度應足夠接近:

  • 在其相鄰畫素中已屬於連通分量的一個畫素的顏色/亮度,在浮動範圍的情況下。
  • 在固定範圍的情況下,種子點的顏色/亮度。

使用這些函式可以將連通分量就地標記為指定顏色,或者構建掩碼然後提取輪廓,或者將區域複製到另一個影像,等等。

引數
image輸入/輸出 1 或 3 通道、8 位或浮點影像。除非在函式的第二個變體中設定了 FLOODFILL_MASK_ONLY 標誌,否則該函式會修改影像。詳見下文。
mask操作掩碼應為單通道 8 點陣圖像,比影像寬 2 畫素,高 2 畫素。如果傳入空的 Mat,它將自動建立。由於這既是輸入引數又是輸出引數,您必須負責對其進行初始化。漫水填充不能穿過輸入掩碼中的非零畫素。例如,邊緣檢測器輸出可以用作掩碼,以在邊緣處停止填充。在輸出時,掩碼中對應於影像中填充畫素的畫素被設定為 1 或設定為 flags 中指定的值,如下所述。此外,函式會將掩碼的邊界填充為 1,以簡化內部處理。因此,可以在多次呼叫函式時使用相同的掩碼,以確保填充區域不重疊。
seedPoint起始點。
用於塗抹斑點的視差值重繪域畫素的新值。
loDiff當前觀測畫素與其屬於分量的某個相鄰畫素或被新增到分量的種子畫素之間的最大亮度/顏色下限差異。
upDiff當前觀測畫素與其屬於分量的某個相鄰畫素或被新增到分量的種子畫素之間的最大亮度/顏色上限差異。
rect由函式設定為重繪域的最小包圍矩形的可選輸出引數。
flags操作標誌。前 8 位包含連通性值。預設值 4 表示只考慮最近的四個相鄰畫素(共享一條邊的畫素)。連通性值 8 表示將考慮最近的八個相鄰畫素(共享一個角的畫素)。接下來的 8 位(8-16)包含一個 1 到 255 之間的值,用於填充掩碼(預設值為 1)。例如,4 | ( 255 << 8 ) 將考慮 4 個最近的鄰居,並將掩碼填充為 255。以下附加選項佔據高位,因此可以與連通性和掩碼填充值透過位或 (|) 進一步組合,參見 FloodFillFlags
注意
由於掩碼比填充的影像大,影像中的畫素 \((x, y)\) 對應於掩碼中的畫素 \((x+1, y+1)\)。
另請參見
findContours

◆ floodFill() [2/2]

int cv::floodFill ( InputOutputArray image,
Point seedPoint,
Scalar 用於塗抹斑點的視差值,
Rect * rect = 0,
Scalar loDiff = Scalar(),
Scalar upDiff = Scalar(),
int flags = 4 )
Python
cv.floodFill(image, mask, seedPoint, newVal[, loDiff[, upDiff[, flags]]]) -> retval, image, mask, rect

#include <opencv2/imgproc.hpp>

這是一個過載成員函式,為方便起見而提供。它與上述函式的唯一區別在於它接受的引數。

不帶 `mask` 引數的變體

◆ integral() [1/3]

void cv::integral ( InputArray src,
OutputArray sum,
int sdepth = -1 )
Python
cv.integral(src[, sum[, sdepth]]) -> sum
cv.integral2(src[, sum[, sqsum[, sdepth[, sqdepth]]]]) -> sum, sqsum
cv.integral3(src[, sum[, sqsum[, tilted[, sdepth[, sqdepth]]]]]) -> sum, sqsum, tilted

#include <opencv2/imgproc.hpp>

這是一個過載成員函式,為方便起見而提供。它與上述函式的唯一區別在於它接受的引數。

◆ integral() [2/3]

void cv::integral ( InputArray src,
OutputArray sum,
OutputArray sqsum,
int sdepth = -1,
int sqdepth = -1 )
Python
cv.integral(src[, sum[, sdepth]]) -> sum
cv.integral2(src[, sum[, sqsum[, sdepth[, sqdepth]]]]) -> sum, sqsum
cv.integral3(src[, sum[, sqsum[, tilted[, sdepth[, sqdepth]]]]]) -> sum, sqsum, tilted

#include <opencv2/imgproc.hpp>

這是一個過載成員函式,為方便起見而提供。它與上述函式的唯一區別在於它接受的引數。

◆ integral() [3/3]

void cv::integral ( InputArray src,
OutputArray sum,
OutputArray sqsum,
OutputArray tilted,
int sdepth = -1,
int sqdepth = -1 )
Python
cv.integral(src[, sum[, sdepth]]) -> sum
cv.integral2(src[, sum[, sqsum[, sdepth[, sqdepth]]]]) -> sum, sqsum
cv.integral3(src[, sum[, sqsum[, tilted[, sdepth[, sqdepth]]]]]) -> sum, sqsum, tilted

#include <opencv2/imgproc.hpp>

計算影像的積分。

函式計算源影像的一個或多個積分影像,如下所示:

\[\texttt{sum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)\]

\[\texttt{sqsum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)^2\]

\[\texttt{tilted} (X,Y) = \sum _{y<Y,abs(x-X+1) \leq Y-y-1} \texttt{image} (x,y)\]

使用這些積分影像,可以在常數時間內計算影像中特定直立或旋轉矩形區域的總和、平均值和標準差,例如

\[\sum _{x_1 \leq x < x_2, \, y_1 \leq y < y_2} \texttt{image} (x,y) = \texttt{sum} (x_2,y_2)- \texttt{sum} (x_1,y_2)- \texttt{sum} (x_2,y_1)+ \texttt{sum} (x_1,y_1)\]

這使得可以進行快速模糊或具有可變視窗大小的快速塊相關等操作。對於多通道影像,每個通道的總和獨立累積。

作為一個實際例子,下圖顯示了計算一個直角矩形 Rect(4,4,3,2) 和一個傾斜矩形 Rect(5,1,2,3) 的積分。顯示了原始影像中選定的畫素,以及積分影像 sumtilted 中相關的畫素。

積分計算示例
引數
src輸入影像為 \(W \times H\),8 位或浮點型(32f 或 64f)。
sum積分影像為 \((W+1)\times (H+1)\),32 位整數或浮點型(32f 或 64f)。
sqsum平方畫素值的積分影像;它是 \((W+1)\times (H+1)\) 的雙精度浮點(64f)陣列。
tilted影像旋轉 45 度後的積分影像;它是 \((W+1)\times (H+1)\) 陣列,具有與 sum 相同的資料型別。
sdepth積分影像和傾斜積分影像的所需深度,CV_32S、CV_32F 或 CV_64F。
sqdepth平方畫素值積分影像的所需深度,CV_32F 或 CV_64F。

◆ threshold()

double cv::threshold ( InputArray src,
OutputArray dst,
double thresh,
double 最大值,
int type )
Python
cv.threshold(src, thresh, maxval, type[, dst]) -> retval, dst

#include <opencv2/imgproc.hpp>

對每個陣列元素應用固定級別的閾值。

函式對多通道陣列應用固定級別的閾值處理。該函式通常用於從灰度影像中獲取雙級(二值)影像(compare 也可以用於此目的),或者用於去除噪聲,即過濾掉值過小或過大的畫素。該函式支援多種閾值處理型別。它們由 type 引數決定。

此外,特殊值 THRESH_OTSUTHRESH_TRIANGLE 可以與上述值之一組合。在這些情況下,函式使用 Otsu 或 Triangle 演算法確定最佳閾值,並使用它而不是指定的 thresh。

注意
目前,Otsu 方法僅對 CV_8UC1 和 CV_16UC1 影像實現,而 Triangle 方法僅對 CV_8UC1 影像實現。
引數
src輸入陣列(多通道,CV_8U、CV_16S、CV_16U、CV_32F 或 CV_64F)。
dst與 src 具有相同大小、型別和通道數的輸出陣列。
thresh閾值。
最大值THRESH_BINARYTHRESH_BINARY_INV 閾值型別一起使用的最大值。
type閾值型別(參見 ThresholdTypes)。
返回
如果使用 Otsu 或 Triangle 方法,則為計算出的閾值。
另請參見
thresholdWithMask, adaptiveThreshold, findContours, compare, min, max

◆ thresholdWithMask()

double cv::thresholdWithMask ( InputArray src,
InputOutputArray dst,
InputArray mask,
double thresh,
double 最大值,
int type )
Python
cv.thresholdWithMask(src, dst, mask, thresh, maxval, type) -> retval, dst

#include <opencv2/imgproc.hpp>

threshold 相同,但帶有可選掩碼。

注意
如果掩碼為空,thresholdWithMask 等效於 threshold。如果掩碼不為空,dst 必須與 src 具有相同的大小和型別,以便離群畫素保持不變
引數
src輸入陣列(多通道,8 位或 32 位浮點)。
dst與 src 具有相同大小、型別和通道數的輸出陣列。
mask可選掩碼(與 src 大小相同,8 位)。
thresh閾值。
最大值THRESH_BINARYTHRESH_BINARY_INV 閾值型別一起使用的最大值。
type閾值型別(參見 ThresholdTypes)。
返回
如果使用 Otsu 或 Triangle 方法,則為計算出的閾值。
另請參見
threshold, adaptiveThreshold, findContours, compare, min, max