OpenCV图像操作与cv::Mat数据结构详解
1. 图像创建与读取
在OpenCV中,可以创建每像素由3个字节组成的图像,并将其指定为 CV_8UC3
类型。若输入图像保存为灰度图像,那么三个通道将包含相同的值。若想以保存的格式读取图像,只需在 imread
函数中传入一个负值作为第二个参数。可以使用 channels
方法检查图像的通道数,示例代码如下:
std::cout << "This image has "
<< image.channels() << " channel(s)";
在使用 imread
打开图像时,如果未指定完整路径,将使用默认目录。从控制台运行应用程序时,默认目录是当前控制台的目录;若直接从IDE运行应用程序,默认目录通常是包含项目文件的目录。因此,要确保输入图像文件位于正确的目录中。
2. 图像显示
使用 imshow
显示由整数组成的图像(如 CV_16U
表示16位无符号整数, CV_32S
表示32位有符号整数)时,图像的像素值会先除以256,以便用256种灰度显示。对于由浮点数组成的图像,假设可能的值范围在0.0(显示为黑色)到1.0(显示为白色)之间,超出此范围的值,大于1.0的显示为白色,小于0.0的显示为黑色。