【OpenCV实战】3.OpenCV颜色空间实战

这篇具有很好参考价值的文章主要介绍了【OpenCV实战】3.OpenCV颜色空间实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

〇、Coding实战内容

  1. OpenCV imread()方法不同的flags差异性
  2. 获取单色通道【R通道、G通道、B通道】
  3. HSV、YUV、RGB

一、imread

1.1 函数介绍

/**
The function imread loads an image from the specified file and returns it
@param filename Name of file to be loaded.
@param flags Flag that can take values of cv::ImreadModes
**/
CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );

1.2 Flags

// enum ImreadModes {
//        IMREAD_UNCHANGED            = -1, //!< If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). Ignore EXIF orientation.
//        IMREAD_GRAYSCALE            = 0,  //!< If set, always convert image to the single channel grayscale image (codec internal conversion).
//        IMREAD_COLOR                = 1,  //!< If set, always convert image to the 3 channel BGR color image.
//        IMREAD_ANYDEPTH             = 2,  //!< If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit.
//        IMREAD_ANYCOLOR             = 4,  //!< If set, the image is read in any possible color format.
//        IMREAD_LOAD_GDAL            = 8,  //!< If set, use the gdal driver for loading the image.
//        IMREAD_REDUCED_GRAYSCALE_2  = 16, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/2.
//        IMREAD_REDUCED_COLOR_2      = 17, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/2.
//        IMREAD_REDUCED_GRAYSCALE_4  = 32, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/4.
//        IMREAD_REDUCED_COLOR_4      = 33, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/4.
//        IMREAD_REDUCED_GRAYSCALE_8  = 64, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/8.
//        IMREAD_REDUCED_COLOR_8      = 65, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/8.
//        IMREAD_IGNORE_ORIENTATION   = 128 //!< If set, do not rotate the image according to EXIF's orientation flag.
//      };

常用的有三种
a. -1 IMREAD_UNCHANGED:忽视alpha通道
b. 0 IMREAD_GRAYSCALE:灰度图
c. 1 IMREAD_COLOR 不填默认值,且格式为BGR

1.3 Code

assign_2.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <string>

using namespace cv;
using namespace std;

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <string>
using namespace cv;
using namespace std;

int main(int argc, char *argv[])
{
    std::string filePath = std::string(__FILE__);
    size_t pos = filePath.find_last_of("/\\");
    std::string rootPath = filePath.substr(0, pos); // string path = string(__BASE_FILE__)+"/img.webp";
    cout << rootPath;
    
    //IMREAD_COLOR BGR
    Mat image = imread(rootPath+"/img.webp",IMREAD_COLOR);
    //IMREAD_UNCHANGED, 无alpha通道
    Mat image1 = imread(rootPath+"/img.webp",IMREAD_UNCHANGED);
    //IMREAD_GRAYSCALE 灰度图
    Mat image2 = imread(rootPath+"/img.webp",IMREAD_GRAYSCALE);
  
 	namedWindow("imread imread_unchanged");    // 创建一个标题为 "hello" 的窗口
    imshow("hello", image); // image1, image2 //在窗口 "hello" 中显示图片
    waitKey(0);              // 等待用户按下键盘
    destroyWindow("hello");  // 销毁窗口 "hello"
    return 0;
}

输出结果:
【OpenCV实战】3.OpenCV颜色空间实战,OpenCV,计算摄影学,opencv,人工智能,计算机视觉【OpenCV实战】3.OpenCV颜色空间实战,OpenCV,计算摄影学,opencv,人工智能,计算机视觉【OpenCV实战】3.OpenCV颜色空间实战,OpenCV,计算摄影学,opencv,人工智能,计算机视觉

二. 色彩空间

2.1 获取单色空间

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <string>
using namespace cv;
using namespace std;

int main(int argc, char *argv[])
{
    /**
     * 二、色彩空间
     * */
    //红色
    vector<Mat> channels;
    split(image, channels);//bgr
    channels[0] = Mat::zeros(image.rows, image.cols, CV_8UC1); // blue
    channels[1] = Mat::zeros(image.rows, image.cols, CV_8UC1); // green
    Mat red;
    merge(channels, red);
	
	//蓝色
	vector<Mat> channels_1;
	split(image, channels_1);//bgr
    channels[1] = Mat::zeros(image.rows, image.cols, CV_8UC1); // green
    channels[2] = Mat::zeros(image.rows, image.cols, CV_8UC1); // red
    Mat blue;
    merge(channels, blue);
    
	//绿色
	vector<Mat> channels_2;
	split(image, channels_2);//bgr
    channels[0] = Mat::zeros(image.rows, image.cols, CV_8UC1); // green
    channels[2] = Mat::zeros(image.rows, image.cols, CV_8UC1); // red
    Mat green;
    merge(channels, green);
}

输出结果
【OpenCV实战】3.OpenCV颜色空间实战,OpenCV,计算摄影学,opencv,人工智能,计算机视觉【OpenCV实战】3.OpenCV颜色空间实战,OpenCV,计算摄影学,opencv,人工智能,计算机视觉【OpenCV实战】3.OpenCV颜色空间实战,OpenCV,计算摄影学,opencv,人工智能,计算机视觉

2.2. HSV、YUV、RGB

int main(int argc, char *argv[])
{
    std::string filePath = std::string(__FILE__);
    size_t pos = filePath.find_last_of("/\\");
    std::string rootPath = filePath.substr(0, pos); // string path = string(__BASE_FILE__)+"/img.webp";
    cout << rootPath;
    Mat image = imread(rootPath+"/img.webp",IMREAD_COLOR);
    
    /**
     * 三、色彩空间
     **/
    Mat hsv;
    cvtColor(image,hsv,COLOR_BGR2HSV);

    Mat rgb;
    cvtColor(image,hsv,COLOR_BGR2RGB);
    
    Mat yuv;
    cvtColor(image,yuv,COLOR_BGR2YUV);
    
    namedWindow("hsv");    
    imshow("hsv", hsv); 
    waitKey(0);            
    destroyWindow("hsv"); 
    return 0;
}

输出结果
【OpenCV实战】3.OpenCV颜色空间实战,OpenCV,计算摄影学,opencv,人工智能,计算机视觉【OpenCV实战】3.OpenCV颜色空间实战,OpenCV,计算摄影学,opencv,人工智能,计算机视觉【OpenCV实战】3.OpenCV颜色空间实战,OpenCV,计算摄影学,opencv,人工智能,计算机视觉文章来源地址https://www.toymoban.com/news/detail-696720.html

颜色空间:
具体可搜索wikipedia,有很详细的介绍
1. HSV vs HSB:https://en.wikipedia.org/wiki/HSL_and_HSV
2. YUV:可参考本人以前的一篇文章,https://blog.csdn.net/Scott_S/article/details/118525159?spm=1001.2014.3001.5501

2.3. 不同颜色空间应用场景

  1. RGB:视频监视器,彩色摄像机
  2. HSV [色调、饱和度、亮度]:彩色处理为目的
  3. CMYK :印刷行业,如果用过小米照片打印机,就会发现一张照片需要渲染4次,按照如下流程
    • Cyan:蓝青色;
    • magenta:品红、杨红;
    • Yellow:黄色;
    • Key: (black)
  4. YUV :电视信号传输,占用极少的带宽

到了这里,关于【OpenCV实战】3.OpenCV颜色空间实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv(7): 颜色空间的转换

    前面说过,图像的像素值是由 颜色空间、图像深度 决定的。 opencv常用的颜色空间转换有两个。 作用 :cv2.cvtColor()方法用于 将图像从一种颜色空间转换为另一种颜色空间 。 OpenCV提供了150多种color-space转换方法。我们将在下面使用一些颜色空间转换代码。 在从RGB颜色空间转换

    2024年01月20日
    浏览(43)
  • OpenCV 入门教程:颜色空间转换

    2023年07月12日
    浏览(55)
  • 【OpenCV • c++】颜色数据结构与颜色空间转换

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月11日
    浏览(40)
  • opencv+图像处理(Image Processing in OpenCV) 4-0改变颜色空间

    本专栏代码地址 https://github.com/xiawei20161308104/xv_opencv_tutorials 本节代码路径 xv_opencv_tutorials/ImageProcessinginOpenCV/changing_colorspaces.py 参考 图像工程第4版,张毓晋,清华大学出版社 颜色空间转化函数 cv.cvtColor() “Indeed rays,properly expressed,are not colored”——牛顿。 光线为不同频率的电

    2024年02月03日
    浏览(87)
  • OpenCV的HSV颜色空间在无人车中颜色识别的应用

    RGB属于三基色空间,是大家最为熟悉的,看到的任何一种颜色都可以由三基色进行混合而成。然而一般对颜色空间的图像进行有效处理都是在HSV空间进行的, HSV(色调Hue,饱和度Saturation,亮度Value) 是根据颜色的直观特性创建的一种颜色空间, 也称 六角锥体模型 。   在OpenCV中H

    2024年02月16日
    浏览(38)
  • Python-OpenCV中的图像处理-颜色空间转换

    在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会 发现我们经常用到的也就两种: BGR G r a y 和 B G R Gray 和 BGR G r a y 和 BGR HSV。 注意:在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范围是 [0, 179],S(饱和度)的取值范围 [0, 255], V(亮度)的取值范围 [0,

    2024年02月13日
    浏览(43)
  • 【OpenCV 例程300篇】209. HSV 颜色空间的彩色图像分割

    OpenCV 例程200篇 总目录 5.1 HSV 颜色空间的彩色图像分割 HSV 模型是针对用户观感的一种颜色模型。 HSV 颜色空间的各通道分别表示色调(Hue)、饱和度(Saturation)和明度(Value),可以直观地表达色彩的明暗、色调及鲜艳程度。 HSV 颜色空间可以用一个圆锥空间模型来描述。圆

    2024年02月04日
    浏览(47)
  • C++ opencv HSV颜色空间转换+RGB三通道提升亮度

    #include iostream #include iomanip #includeopencv2//opencv.hpp using namespace std; using namespace cv; //函数adjustBrightness用于图片增加亮度 void adjustBrightness(cv::Mat image, int targetBrightness) {     // 获取图像的通道数     int channels = image.channels();     // 计算调整亮度的因子     float factor = 1.0f;     if

    2024年03月09日
    浏览(52)
  • OpenCV - C++实战(05) — 颜色检测

    目录 第5章  颜色检测 5.1 实现原理 5.2 Lab颜色模型 5.3 cv :: threshold() 阈值函数  5.4 计算图像之间的距离 5.4.1 公式计算 5.4.2 cv::absdiff() 5.4.3 cv::floodFill()   5.5 完整代码 Github代码地址:GitHub - Qinong/OpenCV         颜色检测用来识别图像中所有像素的某种颜色。这个算法必领输

    2024年02月09日
    浏览(39)
  • opencv-20 深入理解HSV 色彩空间(通过指定,标记颜色等来拓展ROI区域)

    RGB 色彩空间是一种被广泛接受的色彩空间,但是该色彩空间过于抽象,我们不能够直接通过其值感知具体的色彩。 我们更习惯使用直观的方式来感知颜色,HSV 色彩空间提供了这样 的方式。 通过 HSV色彩空间,我们能够更加方便地通过色调、饱和度和亮度来感知颜色。 其实,

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包