全国文明城市创建标准,竞价网站怎么做seo,免费下载素材网址,宝安中心医院是三甲吗本文详细介绍了使用 OpenCV4 进行图像处理的基础知识和操作。内容包括图像的基础概念、色彩空间理解、以及如何在 C 中进行图像读取、显示和基础操作。 1.图像的基本概念与术语 图像表示 在计算机视觉中#xff0c;图像通常表示为一个二维或三维的数组。二维数组表示灰度图像 中进行图像读取、显示和基础操作。 1.图像的基本概念与术语 图像表示 在计算机视觉中图像通常表示为一个二维或三维的数组。二维数组表示灰度图像其中每个元素代表一个像素的亮度。三维数组表示彩色图像通常使用 RGB红、绿、蓝色彩模型如图1。 图1 RGB色彩模型 首先我们可以将一幅图像定义为一个二维函数ƒ(x,y),其中x和y是空间平面的坐标f是图像在点(x,y)处具有某种性质的F的值而任何一对空间标点(x,y)处的幅值f即为图像在该点的强度和灰度。
接下来我们对坐标点(x,y)使用整数值表示:x0,1,2,…M-1和y 0,1,2...N-1图像可表示为如下所示RaC矩阵形式其中R是图像的行数C为图像的列数而矩阵中的每个元素即为像素。 根据每个像素所代表的信息不同可将图像分为二值图像、灰度图像和彩色图像。
注基础术语
像素Pixel图像的基本单位。分辨率Resolution图像的宽度和高度例如1920x1080。位深度Bit Depth每个像素可以使用的色彩范围例如8位表示256种可能的值 2.图像读取与显示
在opencv中图像可以轻易地读取和显示。
#include opencv2/opencv.hpp
#include opencv2/highgui/highgui.hpp
int main() { // 读取图像 cv::Mat img2 cv::imread(img.jpg); // 创建一个名为 lesson 的窗口 cv::namedWindow(lesson, cv::WINDOW_NORMAL); // 在 lesson 窗口内显示图像 cv::imshow(lesson, img2); // 等待用户按键然后关闭窗口 cv::waitKey(0); return 0;
}
在本程序运行中
1、在C中我们使用cv::Mat来表示图像。cv::imread()函数用于读取图像返回一个cv::Mat对象。
2、cv::namedWindow()函数用于创建一个窗口第一个参数是窗口名称第二个参数是窗口标志。在这里我们使用cv::WINDOW_NORMAL来允许窗口大小被调整。
3、cv::waitKey()函数用于等待用户按键。参数0表示无限等待直到用户按下一个键。这个函数在显示图像时通常很有用因为它允许用户看到图像直到他们决定关闭它。如果用户按下了ESC键ASCII码为27那么程序将退出在结束时返回0表示程序正常退出。
运行上述程序得到的运行结果如图2所示。 图2 程序的运行结果 在实际使用中可以先通过函数cv::namedWindow()来创建一个窗口再让函数 cv::imshow()引用该窗口来显示图像。也可以不创建窗口直接使用函数 cv::imshow()引用一个并不存在的窗口并在其中显示指定图像这样函数 cv::imshow()实际上会完成如下两步操作。 第1步函数 cv::imshow()创建一个指定名称的新窗口。 第2步函数 cv::imshow()将图像显示在刚创建的窗口内。 3.基础图像操作像素读写与算术运算
在OpenCV中可以读取和修改图像中的特定像素。
c代码示例
cv::Vec3b value image.atcv::Vec3b(100, 100);image.atcv::Vec3b(100, 100) cv::Vec3b(255, 0, 0); 第一行代码读取一个像素的值第二行行代码将位于(100, 100)位置的像素值设置为(255, 0, 0)这是一个BGR值对应于红色因为蓝色和绿色通道的值都是0而红色通道的值是255。cv::Vec3b(255, 0, 0)创建了一个新的cv::Vec3b对象其BGR值分别为255、0和0。然后我们使用atcv::Vec3b(100,100)将这个位置的像素值设置为新创建的颜色值。注意在图像处理中(x, y)坐标通常表示列和行而不是传统的数学坐标系统中的x和y轴。