OpenCV Mat 图像处理基本操作
1. 图片加载、灰度图、 显示和保存
cv::Mat img = cv::imread("01.jpg");
//cv::Mat img = cv::imread("01.jpg", 0); //以灰度图读入cv::cvtColor(img, img, cv::COLOR_BGR2GRAY);cv::imshow("img_show", img);
cv::waitKey();cv::imwrite("save.jpg", img);
2. 图片宽、高、通道模式、平均值获取
cv::Mat img = cv::imread("01.jpg");int width = img.cols;
int height = img.rows;
int channel_model = img.channels();cv::Scalar tempVal = cv::mean(img);
float mean_B = tempVal.val[0];
float mean_G = tempVal.val[1];
float mean_R = tempVal.val[2];
3. 创建指定大小,指定通道类型的空图像
cv::Mat img = cv::imread("01.jpg");cv::Mat img_new1(300, 500, CV_8UC3); //高300,宽500
cv::Mat img_new2(img.size(), CV_8UC1);
4. 访问和操作图像像素
int point_height = 50;
int point_width = 100;cv::Mat img = cv::imread("01.jpg");img.at<cv::Vec3b>(point_height, point_width)[0] = 255;
int point_value_B = img.at<cv::Vec3b>(point_height, point_width)[0];cv::Mat img_gray;
cv::cvtColor(img, img_gray, cv::COLOR_BGR2GRAY);int point_value_gray = img_gray.at<uchar>(point_height, point_width);img_gray.convertTo(img_gray, CV_32F); //转为float类型
float point_value_gray_f = img_gray.at<float>(point_height, point_width);
5. 图像通道分离和合并
cv::Mat img = cv::imread("01.jpg");std::vector<cv::Mat> rgb_images;
cv::split(img, rgb_images);cv::Mat B = rgb_images[0];
cv::Mat G = rgb_images[1] ;
cv::Mat R = rgb_images[2];cv::Mat merged_img;
cv::merge(rgb_images, merged_img);
6. 在图像上输出文字
cv::Mat img = cv::imread("01.jpg");
cv::putText(img, "Text", cv::Point(50, 100), 0, 2, cv::Scalar(0, 0, 255));
7. 图像缩放
cv::Mat img = cv::imread("01.jpg");
cv::resize(img, img, cv::Size(0.5 * img.cols , 0.5 * img.rows), 0, 0, cv::INTER_CUBIC);
8. 查找非零值像素位置
// Created by 牧野 CSDN https://blog.csdn.net/dcrmg
cv::Mat img = cv::imread("01.jpg", 0);
std::vector<cv::Point> locations;
cv::findNonZero(img, locations); //查找非0像素位置for (int i = 0; i < locations.size(); i++) {cv::Point pt = locations[i];int pt_value = img.at<uchar>(pt);std::cout<<pt_value<<std::endl;
}
9. 图像阈值分割、 二值化
cv::Mat img = cv::imread("01.jpg", 0);
cv::Mat img_binary;
cv::threshold(img, img_binary, 100, 255, cv::THRESH_BINARY); //指定阈值分割cv::Mat img_Otsu;
cv::threshold(img, img_Otsu, 0, 255, cv::THRESH_OTSU); //大津阈值
10. 图像裁剪、ROI
cv::Mat img = cv::imread("01.jpg");
cv::Rect rect(100, 200, 500, 300); //left-up point x, left-up point y, width, height
cv::Mat roi = img(rect).clone();
OpenCV Mat 图像处理基本操作相关推荐
- Qt:OpenCV—Q图像处理基本操作(Code)
原文链接:http://www.cnblogs.com/emouse/archive/2013/03/31/2991333.html 作者写作一系列:http://www.cnblogs.com/em ...
- opencv将图像处理之后显示在label上(Mat转化为qimage)转换之后label显示全黑
opencv将图像处理之后显示在label上(Mat转化为qimage)转换之后label显示全黑 1.本实验要完成的功能:利用opencv将原图像灰度处理,然后显示在label上 2.图像处理程序: ...
- 【OpenCv】c++ 入门认识 Mat 类,单通道 Mat 的基本操作
文章目录 前言 Mat 类 Mat 类的构造方式 Mat 基本操作 单通道 Mat 的基本操作 使用成员变量 rows 和 cols 获取矩阵的行数和列数 使用成员函数 size() 来获取矩阵的尺寸 ...
- 微软符号服务器opencv的符号,Opencv Mat类详解和用法1
Mat OpenCV 自 2001 年出现以来.在那些日子里库是围绕C接口构建的.在那些日子里,他们使用名为IplImage C 的结构在内存中存储图像.这是您将在大多数较旧的教程和教材中看到的那个. ...
- OpenCV实战(1)——OpenCV与图像处理基础
OpenCV实战(1)--OpenCV与图像处理基础 0. 前言 1. OpenCV 基础 1.1 安装 OpenCV 1.2 OpenCV 主要模块 1.3 使用 Qt 进行 OpenCV 开发 2 ...
- OpenCV Mat类详解
光心:每个透镜主轴上都有一个特殊点,凡是通过该点的光,其传播方向不变,这个点叫光心. 光线经过透镜后不会发生折射,仍然沿原方向射出. 基础矩阵(Fundamental matrix)是一个3×3的矩阵 ...
- OpenCV Mat类详解和用法(官网原文)
参考文章:OpenCV Mat类详解和用法 我马克一下,日后更 官网原文链接:https://docs.opencv.org/3.2.0/d6/d6d/tutorial_mat_the_basic_i ...
- OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽
OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...
- OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换
OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...
最新文章
- C++ dll 动态链接库的创建与调用
- Rsync+Inotify-tools实现数据实时同步
- android系统内置HttpClient库(WebView+ Http(s)URLConnection(ok-http)+ HttpClient(apache-http))
- chrome 69 免安装_ElasticSearch安装elasticsearch-head插件
- MapReduce过程详解及其性能优化
- Java加密与解密的艺术~AES-GCM-NoPadding实现
- 无法远程到2008R2的解决方法
- java字符串拼接_Java 8中字符串拼接新姿势:StringJoiner
- sql 获取当前整点时间,当前时间减去12小时
- Excel导入导出SQL server数据库
- android中期检查表,基于Android的车载视频播控系统的中期检查表.docx
- AI+护肤领域带来的产业价值
- vscode下golang build tags
- 一些花里胡哨——底盘旋转、闪烁星星
- 微信小程序getUserProfile详解
- 去除迅雷右侧资源信息栏和迅雷广告,以及迅雷的速度限制修改
- python是什么语言编写的程序称为_Python 学习(一)【Python语言简介-Python是什么】...
- 低通,高通,带通,带阻滤波器的定义
- 【LOJ #6617】「THUPC 2019」摆家具 / furniture(DP / BSGS / 矩阵快速幂)
- 考研数学-基础阶段几何串讲1主讲人:王淳 -2020年06月26日