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 */
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2019-09-02 C++--- Lambda匿名函数表达式
2019-09-02 qt5--数据类型转换