Index 目錄索引
- 寫在前面
- 函式介紹
- 函式功能演示
- 參考文章
寫在前面
本文主要介紹OpenCV中的setTo()函式,
函式介紹
可以直接在 OpenCV參考檔案 中查閱:

函式功能演示
通過查閱原始碼,我們可以看到setTo()函式的原型如下:
/** @brief Sets all or some of the array elements to the specified value.
This is an advanced variant of the Mat::operator=(const Scalar& s) operator.
@param value Assigned scalar converted to the actual array type.
@param mask Operation mask of the same size as \*this. Its non-zero elements indicate which matrix
elements need to be copied. The mask has to be of type CV_8U and can have 1 or multiple channels
*/
Mat& setTo(InputArray value, InputArray mask=noArray());
用法如下:
src.setTo(0, mask);
該函式的功能,是針對影像矩陣src,在矩陣src中,把矩陣mask中元素不為0的相應像素點位置的像素值全部變為value值1,舉例說明如下:
#include<stdio.h>
#include<opencv2/opencv.hpp>
int main() {
cv::Mat src = (Mat_<uchar>(3, 3) << 0, 100, 0, 0, 205, 160, 0, 0, 0);
cv::Mat mask = (Mat_<uchar>(3, 3) << 0, 120, 0, 150, 0, 130, 0, 0, 0);
src.setTo(0, mask);
std::cout << src << std::endl;
return 0;
}
通過Image Watch這個插件,我們可以看到經過setTo()函式前后,影像src像素值的變化:
setTo()函式處理前:

setTo()函式處理后:

通過這個案例可以發現,setTo()函式相當于是給影像src加了一個mask蒙版,mask中不為0的像素點位置,在影像src中的相應位置都要置為0或其他自定義的value值,
至此,想必各位已經對setTo()函式有了一個相當清晰的了解,寫到這里,差不多本文也就要結束了,之所以會選擇寫這篇文章,是因為本人在學習setTo()這個函式時,發現網上的講解并不是很清晰,對于小白并不是很友好,后來自己動手實踐了后,才將其差不多搞明白,遂將其記錄之,以助后人,如果我的這篇文章幫助到了你,那我也會感到很高興,一個人能走多遠,在于與誰同行,
參考文章
007-Opencv基礎: Mat類里setTo函式詳解 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293065.html
標籤:其他
下一篇:你真的懂語音特征嗎?
