目錄
1.圖像顏色空間介紹
RGB 顏色空間
2.HSV 顏色空間
3.RGBA 顏色空間
4.YUV
2.圖像數(shù)據(jù)類型間的互相轉(zhuǎn)換convertTo()
3.不同顏色空間互相轉(zhuǎn)換cvtColor()
?4.Android JNI demo
1.圖像顏色空間介紹
-
RGB 顏色空間
RGB 顏色空間是最常見的顏色表示方式之一,其中 R、G、B 分別表示紅色、綠色和藍(lán)色分量。在 OpenCV 中,RGB 圖像可以通過 CvType.CV_8UC3 的類型來表示,其中 8U 表示 8 位無符號(hào)整數(shù),C3 表示三個(gè)通道。
2.HSV 顏色空間
?HSV (Hue, Saturation, Value) 顏色空間是一種將顏色表示為色調(diào)、飽和度和亮度三個(gè)分量的方式。色調(diào)表示顏色的基本色相,取值范圍為 0 到 360;飽和度表示顏色的純度,取值范圍為 0 到 1;亮度表示顏色的亮度,取值范圍也為 0 到 1。在 OpenCV 中,HSV 圖像可以通過 CvType.CV_8UC3 的類型來表示。
3.RGBA 顏色空間
在 RGBA 顏色空間中,每個(gè)分量的取值范圍為 0 到 255,其中 R、G、B 分別表示紅色、綠色和藍(lán)色分量,取值范圍為 0-255,而 A 表示透明度分量,取值范圍為 0-255,其中 0 表示完全透明,255 表示完全不透明。
4.YUV
? ? ? ?YUV主要應(yīng)用于優(yōu)化彩色視頻信號(hào)的傳輸,與RGB相比,YUV只需要占用極少的頻寬(RGB需要三個(gè)獨(dú)立的視頻信號(hào)同時(shí)傳輸)。YUV中Y代表明亮度,也稱灰階值;U與V表示的則是色度 (色調(diào)和飽和度)也可以記作:YCbCr。如果只有Y數(shù)據(jù),那么表示的圖像就是黑白的。
YUV和RGB的轉(zhuǎn)換:
Y=0.299R +0.587G +0.114BU=-0.147R-0.289G-0.436B
V=0.615-0.515G-0.100B
R = Y +1.140VG=Y-0.395U-0.581V
B=Y+2.032U
?
2.圖像數(shù)據(jù)類型間的互相轉(zhuǎn)換convertTo()
void cv::Mat::convertTo ( OutputArray m,
int? ? ? ? ?rtype,
double? ?alpha,
double? ?beta ,
)? ? ??
- m:輸出圖像
- rtype: 轉(zhuǎn)換后數(shù)據(jù)類型
- alpha:縮放系數(shù)
- beta:平移系數(shù)
3.不同顏色空間互相轉(zhuǎn)換cvtColor()
void cv::cvtColor ( InputArray? src,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OutputArray? dst,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int? ?code,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int? ??dstCn?
)
- src:待轉(zhuǎn)換顏色模型的原始圖像。
- dst:轉(zhuǎn)換顏色模型后的目標(biāo)圖像。
- code: 顏色空間轉(zhuǎn)換的標(biāo)志,如由RGB空間到HSV空間。
- dstCn:目標(biāo)圖像中的通道數(shù),如果參數(shù)為0,則從src和代碼中自動(dòng)導(dǎo)出通道數(shù)。
?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轉(zhuǎn)化為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);//保存圖像到手機(jī)相冊
imwrite("/sdcard/DCIM/HSV.jpg",HSV);
}
? ? ? ? ??
? ? ? ? ?
文章來源:http://www.zghlxwxcb.cn/news/detail-681066.html
? ? ?(原圖)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (HSV)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (gray)文章來源地址http://www.zghlxwxcb.cn/news/detail-681066.html
到了這里,關(guān)于圖像顏色空間轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!