本人是零基础的小白,现在从零开始学习opencv,这是学习的一些简单的笔记,如有错误请指正。
编译环境:vs2017
Windows x64
入门opencv时,必须要了解几个常用的头文件及其它们的作用。在写代码头文件出错时,若不知道头文件的作用,就很难去处理红线错误。
opencv几个常用的头文件:
#include <core.hpp> //包含了opencv的基本数据结构,图像数组的操作相关函数
#include <highgui.hpp> //图像交互界面,视频的捕捉和提取
#include <imgproc.hpp> //图像的变换,滤波直方图,图像形状的描述
#include <video.hpp> //主要在调用摄像头的时候使用
一、图像的读取和输出:
在opencv中一般使用imread来读取图片,那么imread函数的使用格式如下:
imread(“图片的路径”,图片的加载方式)
备注:
1、图片的路径读取方式有相对路径和绝对路径(建议使用绝对路径)
相对路径使用时一般将要处理的图片放在工程目录里面;
绝对路径使用格式请注意:D:\Visual Studio project\ConsoleApplication2\人像.jpg 要将图片复制的路径“\”修改为“\" 或者将“\”用”/“代替也是ok的;
2、图片的加载方式有三种:
IMREAD_COLOR:读取一副彩色图片,图片的透明度会被忽略,默认为该值,实际取值为1;
IMREAD_GRAYSCALE:以灰度模式读取一张图片,实际取值为0
IMREAD_UNCHANGED:加载一副彩色图像,透明度不会被忽略
案例实现:读取一张“图片”
#include "pch.h"
#include <core.hpp> //包含了opencv的基本数据结构
#include <highgui.hpp> //图像交互界面
#include <imgproc.hpp> //图像的变换,滤波直方图
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("D:\\Visual Studio project\\ConsoleApplication2\\风景.jpg");
imshow("风景",img);
waitKey(0);
system("pause");
}
输出结果:
二、图像的缩放:
一般的图像文件格式使用的是Unsiged 8bits,Mat矩阵对应的参数类型就是:
CV_8UC1, CV_8UC2, CV_8UC3
*最后边的1.、2、3表示通道数,比如RGB3通道就用CV_8UC3
图像的缩放一般使用resize函数,他可以将原始图像精确地转化为指定尺寸的目标图像。
方法一:确定图像尺寸的缩放
#include "pch.h"
#include <iostream> //通常包含cin输入内容和cout输出内容
#include <core.hpp> //包含了opencv的基本数据结构
#include <highgui.hpp> //图像交互界面
#include <imgproc.hpp> //图像的变换,滤波直方图
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("D:\\Visual Studio project\\ConsoleApplication2\\风景.jpg"); //mat是用来存储和释放图片的像素
imshow("原始图像", img);
Mat dst =Mat::zeros(512,512,CV_8UC3); //8位无符号3通道
resize(img, dst, dst.size());
imshow("图像缩放", dst);
imwrite(“D:\\Visual Studio project\\ConsoleApplication2\\缩小后风景.jpg”)
waitKey(0);
}
输出结果:
方法二:按照比例进行图像的缩放
#include "pch.h"
#include <core.hpp> //包含了opencv的基本数据结构
#include <highgui.hpp> //图像交互界面
#include <imgproc.hpp> //图像的变换,滤波直方图
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("D:\\Visual Studio project\\ConsoleApplication2\\风景.jpg");
imshow("原始图", img);
Mat dst;
resize(img, dst, Size(), 0.3, 0.3);//图像的长宽都变为原来的0.3倍
imshow("缩放图", dst);
waitKey(0);
system("pause");
}
输出结果:
参考文章:
1.https://www.jianshu.com/p/290d44ac5d0c
2.https://blog.csdn.net/WWWQ2386466490/article/details/79925991