以cv::Mat::set举个例子
时间: 2023-07-03 11:27:30 浏览: 91
好的,假设有如下代码:
```
cv::Mat img = cv::Mat::zeros(3, 3, CV_8UC1);
img.setTo(255);
```
这个代码中,我们首先创建了一个大小为3x3的单通道图像 img,并使用 cv::Mat::zeros 函数将其所有像素点都设置为0。接着,我们使用 cv::Mat::setTo 函数将所有像素点都设置为255,这样整个图像就变成了一个全白的图像。
cv::Mat::setTo 函数的第一个参数为要设置的颜色值,可以是一个标量(如上例中的255),也可以是一个向量或矩阵。如果要设置的是一个标量,可以直接传入一个数值;如果要设置的是一个向量或矩阵,需要先使用 cv::Scalar、cv::Vec 或 cv::Matx 等类来创建。
cv::Mat::setTo 函数还可以接受一个可选的掩码参数,用于指定哪些像素点需要被设置。如果掩码值为0,则对应像素点不会被设置。如果掩码值为非0,则对应像素点会被设置为指定颜色值。
相关问题
set opencv
根据提供的引用内容,set函数是OpenCV中的一个函数,用于设置图像的像素值。下面是一个使用set函数的例子:
```python
import cv2
# 创建一个3x3的灰度图像
src = cv2.Mat(3, 3, cv2.CV_8UC1)
src.setTo(0) # 将图像的所有像素值设置为0
# 创建一个3x3的掩码图像
mask = cv2.Mat(3, 3, cv2.CV_8UC1)
mask.setTo(0) # 将掩码图像的所有像素值设置为0
# 使用掩码图像设置原始图像的像素值
src.setTo(255, mask)
# 打印修改后的图像
print(src)
```
这个例子中,我们首先创建了一个3x3的灰度图像和一个3x3的掩码图像,然后将掩码图像的像素值设置为0。最后,我们使用掩码图像设置原始图像的像素值,将原始图像中与掩码图像对应位置为0的像素值设置为255。最终,我们打印修改后的图像。
opencv 2d point set
在OpenCV中,可以使用`cv::Mat`或`std::vector`来表示2D点集。以下是使用`std::vector`的示例代码:
```c++
#include <opencv2/opencv.hpp>
int main() {
// 创建一个包含5个2D点的向量
std::vector<cv::Point2f> points = {
cv::Point2f(0, 0),
cv::Point2f(1, 2),
cv::Point2f(3, 1),
cv::Point2f(2, 5),
cv::Point2f(4, 3)
};
// 遍历点集并打印每个点的坐标
for (const auto& point : points) {
std::cout << "x: " << point.x << ", y: " << point.y << std::endl;
}
return 0;
}
```
在这个例子中,我们使用`cv::Point2f`类来表示每个2D点的坐标。您可以使用`x`和`y`成员变量来访问每个点的坐标。在这里,我们创建一个包含5个点的向量,并遍历它以打印每个点的坐标。
阅读全文