C++openCV图像的读取、显示、保存、信息
OpenCV支持bmp、jpg、png、tiff等常用图像格式的解析
#include <opencv2/opencv.hpp> //头文件 int main() { cv::Mat img = cv::imread("./tu/马.jpg", cv::IMREAD_UNCHANGED); //读入一张图片 /* 参数2:图像文件解析的方式,支持的方式有如下: cv::IMREAD_UNCHANGED 不对图像文件进行任何转换,直接读取【读入完整图片,包括alpha通道(png有,jpg无)】 IMREAD_GRAYSCALE 将任何图像均转换为灰度图像(单通道)进行读取 IMREAD_COLOR 将任何图像均转为RGB彩色图像(三通道)进行读取【默认参数,读入一副彩色图片,忽略alpha通道】 IMREAD_ANYDEPTH 如果不设置这个参数,16/32位图像将会自动转为8位图像 IMREAD_ANYCOLOR 将按照图像文件设定的颜色格式进行图像读取 IMREAD_LOAD_GDAL 调用gdal库进行图像文件读取。(可以简单地理解为读取TIFF图像文件) */ imshow("new", img); //在窗口中显示载入的图片 //参数1:窗口标题,如果找不到参数1的窗口就新建一个 //imread读入的图像 //imshow函数只支持8位灰度图像、8位彩色图像和32位灰度图像(像素值范围0-1) cv::waitKey(6000); img = cv::imread("./tu/猫.jpg", cv::IMREAD_UNCHANGED); imshow("new", img); cv::waitKey(6000); // 等待6000 ms }
#include <opencv2/opencv.hpp> int main() { cv::Mat img = cv::imread("./tu/马.jpg", cv::IMREAD_UNCHANGED); int w = img.cols; //返回图片的宽度 int h = img.rows; //返回图片的高度 unsigned char* p = img.data; //数据缓存区指针 unsigned int x = (unsigned int)p; x = img.channels(); //返回通道数 x = img.elemSize();//返回的是一个像素占用的字节数 x = img.elemSize() / img.channels() * 8; //深度 std::cout << x << std::endl; cv::waitKey(6000); }
cv::Mat img = cv::imread("./tu/马.jpg", cv::IMREAD_UNCHANGED); std::vector<int> compression_params; compression_params.push_back(cv::IMWRITE_JPEG_QUALITY); compression_params.push_back(50); cv::imwrite("my.jpg", img, compression_params); //保存图片 //参数1:文件名 //参数2:Mat类型的矩阵 /* 参数3:[可选]表示为特定格式保存的参数编码,std::vector<int>类型 看:https://blog.csdn.net/mars_xiaolei/article/details/62233900?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase */