OpenCV(五):图像颜色空间转换

目录

1.图像颜色空间介绍

[RGB 颜色空间](#RGB 颜色空间)

[2.HSV 颜色空间](#2.HSV 颜色空间)

[3.RGBA 颜色空间](#3.RGBA 颜色空间)

2.图像数据类型间的互相转换convertTo()

3.不同颜色空间互相转换cvtColor()

[4.Android JNI demo](#4.Android JNI demo)


1.图像颜色空间介绍

RGB 颜色空间

RGB 颜色空间是最常见的颜色表示方式之一,其中 R、G、B 分别表示红色、绿色和蓝色分量。在 OpenCV 中,RGB 图像可以通过 CvType.CV_8UC3 的类型来表示,其中 8U 表示 8 位无符号整数,C3 表示三个通道。

2.HSV 颜色空间

HSV (Hue, Saturation, Value) 颜色空间是一种将颜色表示为色调、饱和度和亮度三个分量的方式。色调表示颜色的基本色相,取值范围为 0 到 360;饱和度表示颜色的纯度,取值范围为 0 到 1;亮度表示颜色的亮度,取值范围也为 0 到 1。在 OpenCV 中,HSV 图像可以通过 CvType.CV_8UC3 的类型来表示。

3.RGBA 颜色空间

在 RGBA 颜色空间中,每个分量的取值范围为 0 到 255,其中 R、G、B 分别表示红色、绿色和蓝色分量,取值范围为 0-255,而 A 表示透明度分量,取值范围为 0-255,其中 0 表示完全透明,255 表示完全不透明。

2.图像数据类型间的互相转换convertTo()

void cv::Mat::convertTo ( OutputArray m,

int rtype,

double alpha,

double beta ,

  • m:输出图像
  • rtype: 转换后数据类型
  • alpha:缩放系数
  • beta:平移系数

3.不同颜色空间互相转换cvtColor()

void cv::cvtColor ( InputArray src,

OutputArray dst,

int code,

int dstCn

  • src:待转换颜色模型的原始图像。
  • dst:转换颜色模型后的目标图像。
  • code: 颜色空间转换的标志,如由RGB空间到HSV空间。
  • dstCn:目标图像中的通道数,如果参数为0,则从src和代码中自动导出通道数。

4.Android JNI demo

复制代码
#include <jni.h>

#include <string>

#include <android/bitmap.h>

#include <opencv2/opencv.hpp>

#include <iostream>

#include <android/log.h>

using namespace cv;

using namespace std;

extern "C"

JNIEXPORT void JNICALL

Java_com_example_myapplication_MainActivity_opencv_1test(JNIEnv *env, jclass clazz,

jobject bitmap) {

AndroidBitmapInfo info;

void *pixels;

CV_Assert(AndroidBitmap_getInfo(env, bitmap, &info) >= 0);

//判断图片是位图格式有RGB_565 、RGBA_8888

CV_Assert(info.format == ANDROID_BITMAP_FORMAT_RGBA_8888 ||

info.format == ANDROID_BITMAP_FORMAT_RGB_565);

CV_Assert(AndroidBitmap_lockPixels(env, bitmap, &pixels) >= 0);

CV_Assert(pixels);

//将bitmap转化为Mat类

Mat image(info.height, info.width, CV_8UC4, pixels);

Mat image32;

image.convertTo(image32,CV_32F,1/255,0);

Mat HSV;

cvtColor(image,HSV,COLOR_BGR2HSV);

Mat gray;

cvtColor(image,gray,COLOR_BGR2GRAY);

imwrite("/sdcard/DCIM/gray.jpg",gray);//保存图像到手机相册

imwrite("/sdcard/DCIM/HSV.jpg",HSV);

}

(原图) (HSV) (gray)

相关推荐
悬木11 分钟前
从单体到 AI 搜索:一个电商搜索系统的进化
人工智能
m4Rk_19 分钟前
【论文阅读】Agent 记忆机制(69):STITCH——用上下文意图解决“语义相关但情境错误”的记忆检索
论文阅读·人工智能·学习·开源·github
zhikouai27 分钟前
删掉提示词之后,AI的表现反而更好
人工智能
skywalk816330 分钟前
光明之路_Trae开发宣传_济宁聚会 9.12日《光明之路》讲演稿
人工智能·语言·实践
今天AI了吗40 分钟前
什么是 AI Agent?它与直接调用大模型 API 有何区别
java·网络·人工智能·架构·java-ee
Hopetree44 分钟前
AI Agent 实战手记 04:给 Agent 选对 Loop 工作方式_AI
人工智能
掘金酱1 小时前
社区排行榜现已上线
前端·人工智能
zzjyr1 小时前
AI 问答的流式响应是怎么实现的?从 fetch 到 SSE 逐字解析
前端·人工智能·ai编程
用户521133498121 小时前
拍照识别试卷:我在一台 2016 年的 NAS 上做「错题本」,踩了 8 个坑
人工智能
Zzj_tju1 小时前
VLM 读图评测:先审计评分器,再判断读错还是算错
人工智能·深度学习·机器学习·语言模型