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)

相关推荐
剑穗挂着新流苏3122 分钟前
204_从回归到分类:Softmax 回归、损失函数与多分类实战
人工智能·pytorch·python·深度学习
人工智能AI技术4 分钟前
字节开源 DeerFlow 2.0——登顶 GitHub Trending 1,让 AI 可做任何事情
人工智能
spider'4 分钟前
系统的架构
人工智能
zhangren024686 分钟前
Laravel9.x核心特性全解析
android
莱歌数字7 分钟前
强化学习如何重构芯片热管理?
人工智能·重构·制造·cae·散热
光仔December7 分钟前
【从0学习Spring AI Alibaba】2、Spring AI Alibaba版本选型及环境搭建
人工智能·大模型·saa·spring ai·ai alibaba
凸头11 分钟前
从“搜了就答”到“智能决策”:拥抱 RAG 2.0 时代的架构演进 ——Java 后端工程师视角下的 AI 应用工程化落地
java·人工智能·架构·rag
float_com16 分钟前
LangChain4j 核心知识体系与 “AI 编程小助手“ 实战解析
人工智能
Yao.Li16 分钟前
Dify 本地运行实操笔记
人工智能·笔记·python
gaozhiyong081316 分钟前
2026年三大顶级AI模型实战对比:Gemini 3.1 Pro vs GPT-5.4 vs Claude 4.6深度评测
人工智能