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)

相关推荐
zhizhizhuzhuxia几秒前
电视剧解说配音怎么选工具,从情绪表现到长文本稳定性的一次实测梳理
人工智能·语音识别
阿部多瑞 ABU6 分钟前
复杂社会关系、三层结构与自反性
大数据·人工智能·ai写作
诺伦7 分钟前
Manus 2.0 Cascade降本拆解:Token少用23.2%、成本降32%的工程手段,营销Agent编排能迁移什么 | RiseClaw玄策
人工智能·llm·ai agent·agent编排·增长运营
AI码农小姐姐32 分钟前
一站式 AI 漫剧生产方案:知漫剧,降低多模态内容创作门槛
人工智能
鲲穹AI种草1 小时前
小红书 AI 创作工具怎么选?鲲穹 RedNote 功能实测与横向对比
大数据·人工智能
这张生成的图像能检测吗1 小时前
(论文速读)LogSAD:无需训练的结构异常与逻辑异常统一检测
人工智能·机器学习·计算机视觉·大模型·多模态·异常检测
Ai-_Man1 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
三少爷的鞋2 小时前
AI 时代,我们都将成为通才型开发者:只懂 Android,已经不够了
android
Eric.462 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
搭贝2 小时前
上厕所的时间搭好一套系统:AI自动生成实测
开发语言·人工智能·低代码·ai·php·搭贝