C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)
C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)
- 前言
学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门。觉得自己基础已经有了可以忽略前面两条,直奔OpenCV SDK,学习OpenCV最好的资料是OpenCV社区的教程和文档,其次是各种视频资源与博客文章。
首先是环境配置教程(个人觉得很不错) :
VS2019环境下配置C++ 项目OpenCV4.1.0教程https://blog.csdn.net/m0_37360684/article/details/89716881https://blog.csdn.net/m0_37360684/article/details/89716881
其次是Python环境下Opencv相关教程(有Python基础或学习意向推荐参考):
Python下opencvhttps://blog.csdn.net/on2way/article/details/46789931https://blog.csdn.net/on2way/article/details/46789931
OpenCV概述
OpenCV是一个开源发行的跨平台计算机视觉和机器学习软件库,提供了图像处理和计算机视觉方面的很多通用算法。而现在我们将要学习的是C++环境下Opencv库的使用。
一 . 开始第一步-展示图片
1.main.cpp 源码
#include<iostream>
#include<opencv2/opencv.hpp>//主函数
int main(void)
{//定义Mat 类 对象srccv::Mat src;//读取图像src = cv::imread("DrawPractice.jpg");//展示图片cv::imshow("Draw", src);//暂停 -- 等待下一步操作cv::waitKey(0);return 0;
}
2.当前路径下存有图片 DrawPractice.jpg
3.让我们逐步分析源码语句
第一步在原有C++程序上包含opencv库头文件
(标准输入输出库)常用
#include<iostream>
(Opencv库头文件)
#include<opencv2/opencv.hpp>
抉择-----是否全局引入std命名空间和cv命名空间
using namespace std;
using namespace cv;
这两句是引入工作空间,std是c++标准库的工作空间名,cv是opencv的工作空间名。
(工作空间的目的是避免 如果两个库有相同的函数名,在调用函数时发生冲突,上文这两个库里没有重复的函数名,所以直接引入工作空间不会有影响。)
引入命名空间后 大部分代码块将不再使用cv:: 来进行标识 如(Mat src;) 而不是 (cv::Mat src;)
个人初学时 常使用cv::标识形式 以提醒自己 所调用的函数或类 在 Opencv库中
定义一个Mat 类对象 src
cv::Mat src;
在当前路径下读取图像
src = cv::imread("DrawPractice.jpg");
cv::imread() ---- 函数解析
//读取图像cv::imread("图像路径",读取模式)此处图像路径可以为 当前路径 即 DrawPractice.jpg也可以为 绝对路径 如 F:\\code\\编程练习草稿\\opencv2\\DrawPractice.jpg(备注 :: C++语法中 \ 为转义字符 所以 使用\\ 双斜杠代替 \ 避免路径解析错误) //读取模式未传入参数视为 默认彩色0:读入的为灰度图像(即使图像为彩色的)1:读入的图像为彩色的(默认);//实例//读入灰度图像src = cv::imread("DrawPractice.jpg" , 0);//默认读入彩色图像src = cv::imread("DrawPractice.jpg");
展示上文读取的图像
cv::imshow("Draw", src);参数 : (展示窗口名 , 上文定义的Mat类对象src)
暂停 -- 等待下一步操作
cv::waitKey(0);显示图片后开始等待下一步操作。如果不加这条命令的话,自己屏幕上会有一个黑框一闪而过,图片也不会显示出来,程序显示图片后直接关闭了程序。
二--跑起来看看成果
那么第一期就结束啦
C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)相关推荐
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- OpenCV学习笔记(九)——图像轮廓(下)
<OpenCV轻松入门:面向Python>学习笔记(九) 1-3 查找并绘制轮廓.矩特性及Hu矩 4-5 轮廓拟合及凸包 6. 利用形状场景算法比较轮廓 6.1 计算形状场景距离 6.2 ...
- Opencv学习笔记(八) -- 图像色彩空间转换
1.常见图像色彩空间 RGB RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道 ...
- OpenCV学习笔记(七)——图像梯度及边缘检测
图像梯度计算的是图像变化的速度.对于图像的边缘部分,其灰度值变化较大,梯度值也较大:相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小.一般情况下,图像梯度计算的是图像的边缘信息. ...
- OpenCV学习笔记之图像融合
一.线性融合操作 线性混合操作 也是一种典型的二元(两个输入)的 像素操作 : 通过在范围 内改变 ,这个操可以用来对两幅图像或两段视频产生时间上的 画面叠化 (cross-dissolve)效果 ...
- Opencv学习笔记四——图像形态学操作
需要的库和自定义函数 import cv2 import numpy as np import matplotlib.pyplot as pltdef cv_show(name, mat):cv2.i ...
- opencv学习笔记之图像尺寸、翻转与仿射变换
文章目录 前言 一.图像尺寸变换 二.图像翻转变换 三.图像仿射变换 getRotationMatrix2D()函数用于计算旋转矩阵 getAffineTransform()函数 warpAffine ...
- opencv学习笔记(六)---图像梯度
图像梯度的算法有很多方法:sabel算子,scharr算子,laplacian算子,sanny边缘检测(下个随笔)... 这些算子的原理可参考:https://blog.csdn.net/poem_q ...
- OpenCV学习笔记五-图像混合
将两张图片混合 P6 图像混合 #include<iostream> #include<opencv2/opencv.hpp>using namespace std; usin ...
最新文章
- 1044 Shopping in Mars
- 【数字信号处理】相关函数应用 ( 相关函数应用场景 | 噪声中检测信号原理 )
- 成功解决AttributeError: module ‘tornado.web‘ has no attribute ‘asynchronous‘
- 《系统集成项目管理工程师》必背100个知识点-72配置管理的主要活动
- 自定义View 中很关键的问题View获取宽/高是0 的解决办法
- java安全——类加载器+字节码校验+安全管理器与访问权限
- Java逆向基础之AspectJ的获取成员变量的值
- SPH(光滑粒子流体动力学)流体模拟实现七:屏幕空间流体渲染(SSF)
- yum 查看java版本_如何查找YUM安装的JAVA_HOME环境变量详解
- 硬骨难啃:大众想收购自动驾驶公司Aurora,但被拒绝了
- kali 安装vmware 14 for linux 出现问题
- FORTRAN文件读写操作 from《FORTRAN95 程序设计》
- 使用命令备份、还原驱动程序
- cmos逻辑门传输延迟时间_边沿触发器 || D触发器 || JK触发器 || 逻辑功能转换 工作特性 || 重难点 || 数电...
- QQ空间说说批量删除
- 个性测试:跟乐嘉学性格色彩(图)
- Windows神软Classic Shell停更!经典开始菜单永别了
- Android保活方法
- 大数据研究,不能“忽悠”
- 小马哥经典摘抄语录之 ————-有创业及野心的一定要看
热门文章
- Google 微数据,快速指引。
- 若a,b互素,则a必然存在模b的逆元;若a,b不互素,则a必然不存在模b的逆元
- 疯狂的程序员_戴蓓会客厅第13期|疯狂的程序员 三维家蔡志森的野心
- 【程序员如何买基金 六】买卖指数基金的合适时机
- JavaScript---网络编程(8)-DHTML技术演示(1)
- 微观经济学之供给与需求--第一章第二章
- k8s 详解 pod 生命周期 容器探测(live and ready) 钩子函数 pod的重启策略
- 数据分析研究思维导图
- 面试:如何用最少的老鼠试出有毒的牛奶?
- 有 3 只老鼠,8 瓶水,其中一瓶有毒,喝到有毒的水之后,老鼠一周后会准时死亡。...