精华内容
下载资源
问答
  • OpenCV 里我们可以通过 imread() 读取一张图片的rgb数据到内存。...但是需要注意的是,OpenCV 和 Android 在内存中存储的rgb顺序并不相同,而且恰恰相反。 android: int B = src[pos * 4 + 0] & 0xff; ...

    在 OpenCV 里我们可以通过 imread() 读取一张图片的rgb数据到内存。

    在 Android 的应用中,我们也可以通过读取一张图片到 Bitmap,进而获取图片的rgb数据。

    但是需要注意的是,OpenCV 和 Android 在内存中存储的rgb顺序并不相同,而且恰恰相反。

    android:

    int B = src[pos * 4 + 0] & 0xff;
    int G = src[pos * 4 + 1] & 0xff;
    int R = src[pos * 4 + 2] & 0xff;

    opencv:

    与上面相反。

    其实,rgb的顺序往往不是很重要。只是我们在 Android 应用中使用 OpenCV 的时候,要知道这一点。

    转载于:https://www.cnblogs.com/beautiful-scenery/p/3589846.html

    展开全文
  • Opencv RGB颜色空间

    2021-10-05 13:55:07
    OpenCVRGB颜色空间被定义为BGR,只是存储的排列顺序。 彩色图像中的每一个像素点的一个表示颜色的值就是一个三维的向量,这个向量是由RGB三基色的一个线性表出。 Y(灰度)=0.299R+0.587G+0.114B 黑白图像指图像...

    在OpenCV中RGB颜色空间被定义为BGR,只是存储的排列顺序。

    彩色图像中的每一个像素点的一个表示颜色的值就是一个三维的向量,这个向量是由RGB三基色的一个线性表出。

    Y(灰度)=0.299R+0.587G+0.114B

    黑白图像指图像的每个像素只能是黑或者白,没有中间的过渡,故又称为二值图像。二值图像的像素值为0、1,颜色深度为1。
    灰度图像灰度图像是指每个像素的信息由一个量化的灰度级来描述的图像,没有彩色信息,只有256级的明暗变化,颜色深度为8。
    彩色图像彩色图像是指每个像素的信息由RGB三原色构成的图像,其中RBG是由不同的灰度级来描述的,颜色深度为24。

    展开全文
  • opencv RGB2HVS

    2018-09-04 22:44:09
      使用OpenCV实现RGB转HSV,并通过滑动条动态设定HSV阈值    自己写程序,实现RGB转HSL   1、RGB色彩空间 RGB色彩空间源于使用阴极射线管的彩色电视,RGB分别代表三个基色(R-红色、G-绿色、B-...

    RGB色彩空间和HSV色彩空间的理解

    本文的结构如下: 
    1、RGB色彩空间 
    2、HSV色彩空间(附HSV颜色分量范围表) 
    3、RGB到HSV的转换的Demo 
      使用OpenCV实现RGB转HSV,并通过滑动条动态设定HSV阈值 
      自己写程序,实现RGB转HSL

     

    1、RGB色彩空间

    RGB色彩空间源于使用阴极射线管的彩色电视,RGB分别代表三个基色(R-红色、G-绿色、B-蓝色),具体的色彩值由三个基色叠加而成。在图像处理中,我们往往使用向量表示色彩的值,如(0,0,0)表示黑色、(255, 255, 255)表示白色。其中,255表示色彩空间被量化成255个数,最高亮度值为255(255 = 2^8 - 1,即每个色彩通道用8位表示)。在这个色彩空间中,有256*256*256种颜色。RGB色彩空间如下图所示(图片来自百度百科)。是一个包含Red、Green、Blue的三维空间。

    这里写图片描述

    注: 
    1、在OpenCV中,RGB色彩空间的顺序是BGR,千万不要弄错了 
    2、在Java的Bitmap中,RGB色彩空间被表示为ARGB,其中A代表透明度

    2、HSV色彩空间

    HSV色彩空间(Hue-色调、Saturation-饱和度、Value-值)将亮度从色彩中分解出来,在图像增强算法中用途很广。在我本人接触的图像处理项目中,经常将图像从RGB色彩空间转换到了HSV色彩空间,以便更好地感知图像颜色,利用HSV分量从图像中提取感兴趣的区域。

    HSV色彩空间也被称为HSB(色调、饱和度、亮度),在PS中常被用到。

    HSV色彩空间如下图所示,用一个倒圆锥体表示整个色彩空间:

    这里写图片描述

    注: 
    1、H的范围是[0,360),S和V的范围是[0,1]。但是在OpenCV 中,HSV好像被规范化到了[0, 255],此处求大神指导。 
    2、另外,网上有人总结了HSV颜色对应RGB的分量范围,见下面的表格。参考自: 
    http://www.cnblogs.com/wangyblzu/p/5710715.html 
    http://blog.csdn.net/taily_duan/article/details/51506776

    这里写图片描述

    3、RGB到HSV的转换的Demo

    (1) 使用OpenCV的cv2.cvtColor(src, cv2.COLOR_BGR2HSV)

    OpenCV为我们提供了现成的函数cvtColor(),帮助我们将图像从BGR转换到HSV。

    # -*- coding:utf-8 -*-
    
    import cv2
    
    """
    功能:读取一张图片,显示出来,并转化为HSV色彩空间
    """
    image = cv2.imread('images/my_wife2.jpg') # 根据路径读取一张图片
    cv2.imshow("BGR", image) # 显示图片
    
    
    # 转化图片到HSV色彩空间
    dst = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    cv2.imshow("HSV", dst) # 显示图片
    cv2.waitKey(0) # 等待键盘触发事件,释放窗口

    结果如下:

    这里写图片描述

    挺好看的美女,结果被弄成了这个样子。一些初学者包括我自己有时会问,为什么要把好端端的图片转成HSV色彩空间呢。其实这样做大有用处,比如我们要提取美女的头发区域,就可以通过设置HSV色彩空间的高低阈值来做。

    # -*- coding:utf-8 -*-
    
    import cv2
    import numpy as np   # ------------------改变1
    
    """
    功能:读取一张图片,显示出来,并转化为HSV色彩空间
    """
    image = cv2.imread('images/my_wife2.jpg') # 根据路径读取一张图片
    cv2.imshow("BGR", image) # 显示图片
    
    
    # 转化图片到HSV色彩空间
    dst = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    cv2.imshow("HSV", dst) # 显示图片
    
    
    # 根据HSV提取头发 --------------------------------改变2
    low_hsv = np.array([0, 0, 46])
    high_hsv = np.array([200, 40, 220])
    dst = cv2.inRange(dst, low_hsv, high_hsv)
    cv2.imshow("result", dst) # 显示图片
    
    cv2.waitKey(0) # 等待键盘触发事件,释放窗口

    程序的运行效果如下。我们看到,头发区域显示为白色,这样我们就初步地提取出了头发区域。当然这个效果并不理想,是因为我们设定的阈值不好,如果能动态地设定阈值就好了。

    这里写图片描述

    我们可以利用滑块动态地设置阈值,一边拖动滑块,一边观察图像。OpenCV提供了createTrackbar(),用于创建滑块。代码如下:

    # -*- coding:utf-8 -*-
    
    import cv2
    import numpy as np
    
    """
    功能:读取一张图片,显示出来,转化为HSV色彩空间
         并通过滑块调节HSV阈值,实时显示
    """
    
    image = cv2.imread('images/my_wife2.jpg') # 根据路径读取一张图片
    cv2.imshow("BGR", image) # 显示图片
    
    hsv_low = np.array([0, 0, 0])
    hsv_high = np.array([0, 0, 0])
    
    # 下面几个函数,写得有点冗余
    
    def h_low(value):
        hsv_low[0] = value
    
    def h_high(value):
        hsv_high[0] = value
    
    def s_low(value):
        hsv_low[1] = value
    
    def s_high(value):
        hsv_high[1] = value
    
    def v_low(value):
        hsv_low[2] = value
    
    def v_high(value):
        hsv_high[2] = value
    
    cv2.namedWindow('image')
    cv2.createTrackbar('H low', 'image', 0, 255, h_low) 
    cv2.createTrackbar('H high', 'image', 0, 255, h_high)
    cv2.createTrackbar('S low', 'image', 0, 255, s_low)
    cv2.createTrackbar('S high', 'image', 0, 255, s_high)
    cv2.createTrackbar('V low', 'image', 0, 255, v_low)
    cv2.createTrackbar('V high', 'image', 0, 255, v_high)
    
    while True:
        dst = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # BGR转HSV
        dst = cv2.inRange(dst, hsv_low, hsv_high) # 通过HSV的高低阈值,提取图像部分区域
        cv2.imshow('dst', dst)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cv2.destroyAllWindows()

    程序运行的效果如下,我们拉动滑块会自动改变HSV的高低阈值,进而根据高低阈值提取的图像区域也会改变:

    这里写图片描述

    (2) 自己编写程序实现RGB转HSL

    根据维基百科,RGB转HSV的公式如下: 设 (r, g,b)分别是一个颜色的红、绿和蓝坐标,它们的值是在0到1之间的实数。设max等价于r,g和b中的最大者。设min等于这些值中的最小者。要找到在HSL空间中的 (h, s, l)值,这里的h ∈ [0,360)度是角度的色相角,而s, l ∈ [0,1]是饱和度和亮度,计算为:

    这里写图片描述

    如果要转化为HSV)h的值通常规范化到位于0到360°之间。而h = 0用于max = min的(就是灰色)时候而不是留下h未定义。HSL和HSV有同样的色相定义,但是其他分量不同。HSV颜色的s和v的值定义如下:

    这里写图片描述

    根据以上公式,我们可以写出RGB转HSV的代码:

    def rgb2hsv(r, g, b):
        r, g, b = r / 255.0, g / 255.0, b / 255.0
        mx = max(r, g, b)
        mn = min(r, g, b)
        diff = mx - mn
    
        # 计算H
        if mx == mn:
            h = 0
        elif mx == r:
            if g >= b:
                h = 60 * ((g - b) / diff) + 0
            else:
                h = 60 * ((g - b) / diff) + 360
        elif mx == g:
            h = 60 * ((b - r) / diff) + 120
        elif mx == b:
            h = 60 * ((r - g) / diff) + 240
    
        # 先计算L
        l = (mx + mn) / 2.0
    
        # 再计算S
        if mx == min:
            s = 0
        elif l > 0 and l <= 0.5:
            s = (diff / l) / 2.0
        elif l > 0.5:
            s = (diff / (1 - l)) / 2.0
    
        return h, s, l
    
    # 测试
    h,s,l = rgb2hsv(200, 221, 221)
    print('h=%f s=%f l=%f' % (h, s, l))

    程序运行结果如下: 
    这里写图片描述

    可以根据颜色代码表,判断我们的结果是否正确

    这里写图片描述

    附:

    1、 HSV转RGB的公式

    类似的,给定在HSV中 (h, s, 
    v)值定义的一个颜色,带有如上的h,和分别表示饱和度和明度的s和v变化于0到1之间,在RGB空间中对应的 (r, g, 
    b)三原色可以计算为(R,G,B变化于0到1之间):

    这里写图片描述

    对于每个颜色向量 (r, g, b),

    这里写图片描述

    (参考自维基百科)

    2、RGB转GRAY的公式

    请见:http://blog.csdn.net/xdrt81y/article/details/8289963

    总结: 
    本文包括以下几个部分, 
    1、RGB和HSV色彩空间的理解 
    2、通过OpenCV实现了RGB到HSV的转换,包含一个使用滑动条的小例子 
    3、根据RGB转HSL的公式,自己编程实现了RGB转HSL的程序。

    展开全文
  • PIL 和 opencv读入图片的RGB顺序

    千次阅读 2018-12-24 18:12:57
    PIL默认读入图片的颜色顺序RGB; Opencv默认读入图片的颜色顺序为BGR; 参考 用PIL读入jpg转化成数组RGB排列顺序
    1. PIL默认读入图片的颜色顺序为RGB;
    2. Opencv默认读入图片的颜色顺序为BGR;

    参考

    1. 用PIL读入jpg转化成数组RGB排列顺序
    展开全文
  • 【Computer vision】OPENCV RGB与BGR互换

    千次阅读 2015-03-02 14:10:57
    opencv中为什么图像局矩阵是以BGR而不是RGB显示像素的大小,这个其实与图像的表示定义有关,几个最初定义它的大牛互相不认同,就产生了如今的BGR与RGB混乱的局面,不过总体上来说,大部分还是默认RGB的格式,比如...
  • 左边是opencv,右边是matlab 直接上代码: Mat a = imread("11.jpg"); Mat b,c; vector<Mat>channels; ///*for (int i = 0; i < a.rows; i++) //{ // for (int j = 0; j < a.cols; j++) // { // ...
  • OpenCV ios 摄像头获取和磁盘读取的图像RGB顺序问题 1.摄像头  - (void)processImage:(cv::Mat&)image  {  // Do some OpenCV processing with the image    } 在这个函数中,遵从...
  • opencvRGB转HSV

    千次阅读 2014-10-11 15:49:59
    OPENCV 中 H、S、V、顺序分别为3*x+0 3*x+1 3*x+2 opencv中的 H分量是 0~180, S分量是0~255, V分量是0~255 但是HSV颜色空间却规定的是,H范围0~360,S范围0~1,V范围0~1 所以你需要自己转换一下,H*2,V/2
  • OpenCV——RGB三通道分离

    万次阅读 2014-10-18 21:15:12
    opencv 和 matlab 在处理彩色图像的时候,
  • 我就废话不多说了,直接上代码吧!...#openCV中图像存储方式为(h,w,channel),顺序为BGR import cv2 import sys if __name__=='__main__': if len(sys.argv)>1: img=cv2.imread(sys.argv[1],cv2.CV_LOAD_I
  • OpenCvRGB占据三通道,类似于树状结构,每个像素点下面有三个子节点。下面为RGB三通道输出代码以及输出结果: 注:matlab 的排列顺序是R,G,B; 而在opencv中,排列顺序是B,G,R。 代码: #include "highgui.h" #...
  • Opencv——RGB图像的颜色分割

    千次阅读 2019-02-17 11:44:03
    利用Opencv做颜色分割也是突发奇想,虽然比较简单,但是还是把代码放上来看一下,对于色彩较多的图像可能用颜色来做分割比较困难,但不排除这可以应用在一些特殊情况下,比如说…X光射线图。 代码放上来: import cv...
  • opencv画线的时候,RGB颜色顺序

    千次阅读 2011-12-29 09:44:11
    今天在使用cvLine画线和使用cvPolyLine画封闭区域线的时候,发现颜色总是不对,仔细一看才发现,犯了个地级错误啊。 里面的颜色参数分别使用的cvScalar和CV_RGB两个...cvScalar的顺序是B-G-R,而CV_RGB顺序是R-G-B。
  • opencv求取RGB分量

    2019-02-23 10:19:28
    opencv求取RGB分量
  • 环境 ... 编译环境: vs2015 Opencv 3.4.2 一、RGB数组来自BMP文件,直接输出在文件系统上 1.1 代码 void bmptojpg24(const char *strSourceFileName, constchar *strDestFileName) {  BITMAPFIL...
  • Python-openCVRGB通道图

    千次阅读 2018-03-26 19:20:21
    #coding=utf-8 '''openCV中最核心的的类是Mat,他是matrix的缩写代表矩阵,该类在头文件opencv2\core\core.hpp中,它含有很多...#openCV中图像存储方式为(h,w,channel),顺序为BGR import cv2 import sys if __nam...
  • 在Python中,将RGB顺序的图像转成BGR顺序,需要调整channel dimension的各颜色通道顺序。 方法1: img = cv2.imread(“001.jpg”) img_ = img[:,:,::-1].transpose((2,0,1)) ① 在opencv里,图格式HWC,其余都是...
  • YUV2RGB Opencv

    万次阅读 2017-04-20 21:04:38
    YUV2RGB OpenCV(C/C++/Python)参考:百度百科:YUV 维基百科:YUV YUV Colorspace:http://softpixel.com/~cwright/programming/colorspace/yuv/ YUV420P格式分析:...
  • 。 import numpy as np np.random.seed(1337) # for reproducibility from keras.datasets import mnist ...T=Image.merge("RGB",(b,g,r)) print(type(T),np.shape(T)) plt.imshow(T) plt.show()
  • opencv读取RGB直方图

    千次阅读 2011-12-29 11:01:43
    //注意顺序为BGR,OpenCV中不管是Windows中Load的还是摄像头取得的都是BGR顺序排列的 //计算直方图 //int h_bins = 100,s_bins = 32; int hist_size = 100; int hist_height = 100; float range[] = {0...
  • OpenCV读取图片顺序

    2020-10-13 10:40:17
    import cv2 import matplotlib.pyplot as plt img = cv2.imread("E:/Python_list/Muti_decom/data/456.jpg") cv2.imshow("img",img) b,g,r = cv2.split(img) #opencv的图片读取顺序为bgr img_rgb = cv2.merge([r,g,...
  • 图像RGB顺序

    千次阅读 2016-10-17 20:04:55
    channels.at(0) 对应蓝色通道 channels.at(1) 对应绿色通道 channels.at(2) 对应红色通道 opencv中图像存储模式为BGR
  • 文章目录0 安装1 RGB / HSV / HSL1.1 RGB1.2 HSV1.3 HSL2 画框画圈2.1 画矩形框2.2 画圆3 Selective Search ...【python】OpenCVRGB, Rectangle, Circle, SS(1) 【python】OpenCV—Blur, Threshold, Gr

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,943
精华内容 2,777
关键字:

opencvrgb的顺序