opencv 图像色彩空间转化

今天看了b站贾志刚的课,觉得不错,特地做学习笔记来和小伙伴分享

贾志刚的这个好像是2.0版本,30小时的,语言更加精炼,适合初级入门学习

第一节是常规安装 看他的步骤装就行了,记得配置完点应用再点确定,我第一次就是 没点然后就失败了,又得重配置一次

第二节就是基础的imread读取 imshow输出

Mat src = imread("E:/download/images/test.png",IMREAD_GRAYSCALE);//两个参数imread为读取 im表 image
//imread读取进来以Mat形式存在。Mat表是矩阵 表示二维存储 可逗号加 IMREAD_GRAYSCALE表示灰度
imshow("输入窗口", src);//imshow有两个参数 第一个参数表示名称 第二个表示数据对象
//imshow只支持256位显示和浮点数的显示

输入图片太大,看不见全貌的话 增加代码

namedWindow("输入窗口", WINDOW_FREERATIO);//名字 flag 底下show名称和这个相同

//做的是一个尺寸调整 太大的调整

注意名字 flag 底下show名称和这个相同imshow("输入窗口", src);\

最好能加一个if条件判断错误

if (src.empty()) {

printf("could not load image...\n");

return -1;

}

接下来是第三节 图像色彩空间转换

思路和cpp平时项目相同 一个.h写一类,然后.cpp来实现函数,再将.cpp写入main.cpp文件中,视为添加函数

quick.h

cpp 复制代码
#pragma once

#include<opencv2/opencv.hpp>
using namespace cv;
class QuickDemo {
public:
	void colorSpace_Demo(Mat &image);
};

quickdemo.cpp

cpp 复制代码
#include<quick.h>

void QuickDemo::colorSpace_Demo(Mat &image) {
	Mat gray, hsv;//灰度格式  和hsv格式

	//cv2.cvtcolor函数是Python OpenCV中一个非常常用的函数,
	//主要作用是将图像从一种颜色空间转换为另一种颜色空间
	cvtColor(image, hsv, COLOR_BGR2HSV);//RGB即是代表红、绿、蓝三个通道的颜色
	//HSV三通道  H范围 0->180  S,V都是零到255   H和S表示颜色,V通道决定亮度
	cvtColor(image, gray, COLOR_BGR2GRAY);
	imshow("HSV", hsv);
	imshow("灰度", gray);
	//图像保存   imwrite
	imwrite("E:/hsv.jpg",hsv);//三个参数  保存目录 对象
	imwrite("E:/gray.jpg",gray);
}

test01.cpp

cpp 复制代码
#include<opencv2/opencv.hpp>
#include<quick.h>
#include<iostream>

using namespace cv;
using namespace std;
//imread和imshow
int main(int argc, char** argv) {
	Mat src = imread("E:/download/images/test.png");//两个参数imread为读取 im表 image 
	//imread读取进来以Mat形式存在。Mat表是矩阵  表示二维存储  可逗号加 IMREAD_GRAYSCALE表示灰度

	if (src.empty()) {
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("输入窗口", WINDOW_FREERATIO);//名字 flag  底下show名称和这个相同
	//做的是一个尺寸调整  太大的调整

	imshow("输入窗口", src);//imshow有两个参数  第一个参数表示名称  第二个表示数据对象
	//imshow只支持256位显示和浮点数的显示

	QuickDemo qd;//quickdemo.cpp实现
	qd.colorSpace_Demo(src);//调用函数

	waitKey(0);//会阻塞,类似于pause。上面的图就会一直显示在那
	//waitKey(1);表示停顿一毫秒  以此类推
	destroyAllWindows();//对前面创建的显示窗口都要销毁掉
	return 0;
}

实现效果

相关推荐
CODECOLLECT1 分钟前
技术解析|MDM移动设备管理系统无终身买断制度的底层逻辑
人工智能
北京迅为6 分钟前
《【北京迅为】itop-3568开发板NPU使用手册》- 第 7章 使用RKNN-Toolkit-lite2
linux·人工智能·嵌入式·npu
我是一只puppy12 分钟前
使用AI进行代码审查
javascript·人工智能·git·安全·源代码管理
阿杰学AI13 分钟前
AI核心知识91——大语言模型之 Transformer 架构(简洁且通俗易懂版)
人工智能·深度学习·ai·语言模型·自然语言处理·aigc·transformer
esmap15 分钟前
ESMAP 智慧消防解决方案:以数字孪生技术构建全域感知消防体系,赋能消防安全管理智能化升级
人工智能·物联网·3d·编辑器·智慧城市
LaughingZhu20 分钟前
Product Hunt 每日热榜 | 2026-02-08
大数据·人工智能·经验分享·搜索引擎·产品运营
芷栀夏29 分钟前
CANN ops-math:筑牢 AI 神经网络底层的高性能数学运算算子库核心实现
人工智能·深度学习·神经网络
用户51914958484530 分钟前
CVE-2025-47812:Wing FTP Server 高危RCE漏洞分析与利用
人工智能·aigc
阿里云大数据AI技术34 分钟前
【AAAI2026】阿里云人工智能平台PAI视频编辑算法论文入选
人工智能
玄同76536 分钟前
我的 Trae Skill 实践|使用 UV 工具一键搭建 Python 项目开发环境
开发语言·人工智能·python·langchain·uv·trae·vibe coding