OpenCV基础03--创建空白图像和显示

2023-09-11 22:36:33 浏览数 (2)

以下程序也与以前的程序非常相似。唯一的区别是该程序创建一个空白图像,而不是从文件加载现有图像。

将上述简单代码片段复制并粘贴到 IDE 中并运行它。然后,您应该会看到如下图所示的输出。

代码语言:javascript复制
#include <iostream>
#include <opencv2opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
    Mat image(200, 300, CV_8UC3, Scalar(200, 31, 120));
    // 定义一个窗体的名称
    String winName = "blank Image Window";
    // 创建一个窗体用于显示图像
    namedWindow(winName);
    // 把图像显示到创建窗体上面
    imshow(winName, image);
    // 等待输入字符并关闭窗口
    waitKey(0);
    destroyWindow(winName);

本节中新增的 OpenCV 函数说明
代码语言:javascript复制
Mat image(600, 800, CV_8UC3, Scalar(100, 250, 30)); 

这是 Mat 类中可用的众多构造函数之一。它创建一个高 600 像素、宽 800 像素的图像。为图像中的每个像素分配 24 位。24 位将由三个无符号 8 位整数组成,分别代表蓝色、绿色和红色平面。三个整数的值应介于 0 到 255 之间。

然后,此构造函数使用 3 个无符号整数(100、250、30)初始化创建图像的每个像素。因此,它初始化蓝色通道为 100,绿色通道初始化为 250,红色通道初始化为 30。由于绿色通道的值明显大于其他通道的值,因此输出图像为绿色。您可以尝试这三个值的不同组合并查看输出图像。

Mat:**:Mat(int rows, int cols, int type, const Scalar& s)** 此构造函数将创建一个具有指定行数和列数的 Mat 对象,并使用 s 中给出的值初始化每个元素。

  1. row - 2D 数组中的行数(即 - 图像的高度(以像素为单位)
  2. cols - 2D 数组中的列数(即 - 图像的宽度(以像素为单位)
  3. type - 二维数组的数据类型,指定每个通道中每个元素的深度和数据类型以及通道数。(当然,如果通道数大于 2,则 1D 数组变为 2D 数组)。
    • CV_8UC1
  • CV_8UC2
  • CV_8UC3
  • CV_8UC4
  • CV_8UC(n)
  • CV_8SC1
  • CV_8SC2
  • CV_8SC3
  • CV_8SC4
  • CV_8SC(n)
  • CV_16UC1
  • CV_16UC2
  • CV_16UC3
  • CV_16UC4
  • CV_16UC(n)
  • CV_16SC1
  • CV_16SC2
  • CV_16SC3
  • CV_16SC4
  • CV_16SC(n)
  • CV_32SC1
  • CV_32SC2
  • CV_32SC3
  • CV_32SC4
  • CV_32SC(n)
  • CV_32FC1
  • CV_32FC2
  • CV_32FC3
  • CV_32FC4
  • CV_32FC(n)
  • CV_64FC1
  • CV_64FC2
  • CV_64FC3
  • CV_64FC4
  • CV_64FC(n)
  1. s - 使用 s 为每个通道给出的值初始化每个数组元素(像素)。

【小结】

万丈高楼平地起,接触任何技术栈,都先把基础过一遍。

0 人点赞