OpenCV4 学习笔记 DAY1

课程来源: B站 OpenCV4 C++ 快速入门视频30讲

目录

第一节课 OpenCV4.5.1环境配置和搭建

第二节课 图像读取与显示

第三节课 图像色彩空间转换

1. 色彩空间转换函数 —— cvtColor

2. 图像保存 —— imwrite

 第四课 图像对象的创建与赋值



第一节课 OpenCV4.5.1环境配置和搭建

Visual Studio 2017 pro + OpenCV 4.5.1

环境跟着视频做就可以搭好。

要注意的是每次新建一个项目的时候要调为Release x64.

(下载了一个有用的解压软件7-zip)

第二节课 图像读取与显示

imread 读取图像

使用格式:imread(path, color)

                color:IMREAD_GRAYSCALE 灰度,默认彩色

imshow 显示图像

使用格式:imshow(name, data)

                data:数据对象

namedWindow 窗口

使用格式:namedWindow(name, pattern)

                pattern: WINDOW_FREERATIO 调节窗口大小,可以显示全部图片

                             WINDOW_AUTOSIZE 自动,可能不会显示全部图片

#include <opencv2\opencv.hpp>
#include <iostream>

using namespace cv;

int main(int argc, char** argv)
{
	//Mat表示矩阵,是图像
	Mat src = imread("E:/love/default.jpg",IMREAD_GRAYSCALE);//imread读取图像,IMREAD_GRAYSCALE灰度
	if (src.empty())//若为空则输出以下
	{
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("input", WINDOW_FREERATIO);//调节窗口大小,可以显示全部
	imshow("input", src);//imshow显示图像,input是窗口名称,src数据对象
	waitKey(0);//阻塞,让图片显示
	destroyAllWindows();
	return 0;
}

第三节课 图像色彩空间转换

1. 色彩空间转换函数 —— cvtColor

使用格式:cvtColor(mat1, mat2, pattern)——mat1是转换前,mat2是转换后,pattern是转换方式

                  pattern:       COLOR_BGR2GRAY = 6 彩色到灰度

                                        COLOR_GRAY2BGR = 8 灰度到彩色

                                        COLOR_BGR2HSV = 40 BGR到HSV

                                        COLOR_HSV2BGR = 54 HSV到BGR

HSV:色调(H),饱和度(S),明度(V)

2. 图像保存 —— imwrite

使用格式:imwrite(path, data)

void QuickDemo::colorSpace_Demo(Mat &image) {
	Mat gray, hsv;
	cvtColor(image, hsv, COLOR_BGR2HSV);
	cvtColor(image, gray, COLOR_BGR2GRAY);
	imshow("HSV", hsv);
	imshow("灰度", gray);
	imwrite("E:/love/default_hsv.png", hsv);
	imwrite("E:/love/default_gray.png", gray);
}

效果:

 第四节课 图像对象的创建与赋值

 C++中Mat对象的创建

Python中Numpy数组对象

CV_8UC3:8表示8位 U表示无符号 C表示char类型 3表示通道数

//创建方法——克隆
Mat m1 = src.clone();

//复制
Mat m2;
src.copyTo(m2);

//赋值法
Mat m3 = src;

//创建空白图像
Mat m4 = Mat::zeros(src.size(), src.type());
Mat m5 = Mat::zeros(Size(512, 512), CV_8UC3);
Mat m6 = Mat::ones(Size(512, 512),CV_8UC3);

Mat kernel = (Mat_<char>(3, 3) << 0,-1,0,
    -1,5,-1,
    0,-1,0);

E.G.

	Mat m3 = Mat::zeros(Size(8, 8), CV_8UC1);
    //cv_8uc1 8表示8位 u表示无符号 c表示char 1表示通道数
	std::cout << "width:" << m3.cols << " height:" << m3.rows << " channels:" << m3.channels() << std::endl;
	std::cout << m3 << std::endl;

	Mat m3 = Mat::zeros(Size(7, 8), CV_8UC3);
    //cv_8uc1 8表示8位 u表示无符号 c表示char 3表示通道数
	std::cout << "width:" << m3.cols << " height:" << m3.rows << " channels:" << m3.channels() << std::endl;
	std::cout << m3 << std::endl;

 

 显示全蓝色图片的代码段:

	Mat m3 = Mat::zeros(Size(400, 400), CV_8UC3);
    //cv_8uc3 8表示8位 u表示无符号 c表示char 3表示通道数
	//zeros 零 
	//ones 一 给第一个通道赋值
	//Scalar给三个通道赋值,未赋值就是0
	m3 = Scalar(255,0,0);
	std::cout << "width:" << m3.cols << " height:" << m3.rows << " channels:" << m3.channels() << std::endl;
	std::cout << m3 << std::endl;
	imshow("mine", m3);

 注意:

Mat m4=m3;

此时m4就是m3,改变m4则m3也会随之改变。

Mat m4=m3.clone();/copyTo

此时改变m4而m3不会改变。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值