opencv中初始化一张图片的大小和颜色
时间: 2024-10-10 16:16:59 浏览: 61
在OpenCV中,你可以通过创建一个`cv::Mat`对象来初始化一个新的空白图片,并指定其大小和颜色。以下是一个例子,展示了如何初始化一个BGR格式的8位无色图像(灰度图像)以及一个RGB格式的32位彩色图像:
对于灰度图像:
```cpp
cv::Mat gray_image CV_8UC1(width, height, cv::Scalar(255)); // CV_8UC1表示8位 unsigned char类型,width和height是你想要的宽度和高度,初始颜色是白色(255)
```
对于彩色图像(假设为RGB,3 channels):
```cpp
cv::Mat color_image CV_8UC3(width, height); // CV_8UC3表示8位 unsigned char类型的3 channel图像
cv::Scalar initial_color(0, 0, 0); // RGB值,这里是黑色
cv::circle(color_image, cv::Point(width/2, height/2), 50, initial_color, -1); // 添加一个圆作为初始颜色区域,-1表示填充整个形状
```
这里,`cv::Scalar`用于创建一个包含R、G、B分量的一维向量,它们的顺序取决于OpenCV的图像通道顺序。
相关问题
opencv中mat函数的使用方法
在OpenCV中,Mat是一个重要的数据类型,它是用来存储图像的。Mat可以看作是一个多维数组,它包含了图像的像素数据以及图像的元数据(如图像的大小,通道数,数据类型等)。
Mat的常用构造函数有以下几种:
1. Mat(): 创建一个空的Mat对象。
2. Mat(int rows, int cols, int type): 创建一个指定大小和类型的Mat对象。
3. Mat(Size size, int type): 创建一个指定大小和类型的Mat对象。
4. Mat(int rows, int cols, int type, Scalar s): 创建一个指定大小和类型,并用指定颜色初始化的Mat对象。
5. Mat(Size size, int type, Scalar s): 创建一个指定大小和类型,并用指定颜色初始化的Mat对象。
6. Mat(const Mat& m): 创建一个与给定Mat对象大小和类型相同的Mat对象,并复制给定对象的数据。
Mat的一些常用方法:
1. Mat::at(): 用于访问Mat对象中的像素值。
2. Mat::clone(): 创建一个与原Mat对象大小和类型相同的新对象,并将原对象数据复制到新对象中。
3. Mat::convertTo(): 将Mat对象中的像素值转换成指定的数据类型。
4. Mat::copyTo(): 复制一个Mat对象到另一个Mat对象中。
5. Mat::reshape(): 改变Mat对象的大小和通道数。
6. Mat::rows(): 返回Mat对象的行数。
7. Mat::cols(): 返回Mat对象的列数。
8. Mat::size(): 返回Mat对象的大小。
9. Mat::type(): 返回Mat对象的数据类型。
以下是一个简单的Mat的例子:
```
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat image = imread("lena.jpg", IMREAD_COLOR);
if (image.empty())
{
return -1;
}
Mat gray_image;
cvtColor(image, gray_image, COLOR_BGR2GRAY);
imshow("原图", image);
imshow("灰度图", gray_image);
waitKey();
return 0;
}
```
这段代码读取了一张彩色图像,将其转换为灰度图像,并显示在窗口中。
ubuntu opencv画红点
### 在 Ubuntu 上使用 OpenCV 绘制红色点
为了在 Ubuntu 系统上利用 OpenCV 库绘制红色点,需遵循一系列操作流程来设置环境并编写相应代码。
#### 设置开发环境
确保已正确安装配置好 OpenCV 开发库。对于编译链接含有 OpenCV 的 C++ 程序而言,可以采用 pkg-config 工具指定必要的编译选项和链接参数[^3]:
```bash
g++ draw_point.cpp -o draw_point `pkg-config --cflags --libs opencv4`
```
上述命令假设源文件名为 `draw_point.cpp` 并生成可执行文件 `draw_point`。
#### 编写绘图代码
下面展示一段简单的 C++ 代码用于创建图像并在其中特定位置绘制一个红色点:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
// 创建一幅空白图像(黑色背景),大小为800x600像素
Mat image = Mat::zeros(600, 800, CV_8UC3);
// 定义要画红点的位置(x=400,y=300),颜色(BGR顺序)(0,0,255)表示纯红色以及圆点半径与线条粗细程度
Point center(400, 300);
Scalar color(0, 0, 255); // B,G,R values for red color
int radius = 10;
int thickness = FILLED; // Fill the circle completely
// 调用circle函数完成实际绘画工作
circle(image, center, radius, color, thickness);
// 显示结果窗口名称设为 "Red Dot"
namedWindow("Red Dot", WINDOW_AUTOSIZE);
imshow("Red Dot", image);
waitKey(0); // Wait indefinitely until key press event occurs
}
```
这段代码首先初始化了一张尺寸固定的全黑底色图片作为载体;接着定义了目标点位、色彩属性(这里选择了RGB模式下的标准红色)、圆形半径及其填充样式;最后通过调用 OpenCV 提供的 `circle()` 函数实现了预期功能,并借助 `imshow()` 方法呈现最终效果图给用户查看[^5]。
阅读全文