wordpress子域名网站,石排东莞网站建设,安阳seo网站优化,为学校做网站策划怎么写OpenCV颜色空间实战 〇、Coding实战内容一、imread1.1 函数介绍1.2 Flags1.3 Code 二. 色彩空间2.1 获取单色空间2.2. HSV、YUV、RGB2.3. 不同颜色空间应用场景 〇、Coding实战内容
OpenCV imread()方法不同的flags差异性获取单色通道【R通道、G通道、B通道】HSV、YUV、RGB
一… OpenCV颜色空间实战 〇、Coding实战内容一、imread1.1 函数介绍1.2 Flags1.3 Code 二. 色彩空间2.1 获取单色空间2.2. HSV、YUV、RGB2.3. 不同颜色空间应用场景 〇、Coding实战内容
OpenCV imread()方法不同的flags差异性获取单色通道【R通道、G通道、B通道】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 EXIFs 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 stringusing 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 BGRMat 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); // 销毁窗口 helloreturn 0;
}输出结果
二. 色彩空间
2.1 获取单色空间
#include opencv2/opencv.hpp
#include iostream
#include vector
#include string
using namespace cv;
using namespace std;int main(int argc, char *argv[])
{/*** 二、色彩空间* *///红色vectorMat channels;split(image, channels);//bgrchannels[0] Mat::zeros(image.rows, image.cols, CV_8UC1); // bluechannels[1] Mat::zeros(image.rows, image.cols, CV_8UC1); // greenMat red;merge(channels, red);//蓝色vectorMat channels_1;split(image, channels_1);//bgrchannels[1] Mat::zeros(image.rows, image.cols, CV_8UC1); // greenchannels[2] Mat::zeros(image.rows, image.cols, CV_8UC1); // redMat blue;merge(channels, blue);//绿色vectorMat channels_2;split(image, channels_2);//bgrchannels[0] Mat::zeros(image.rows, image.cols, CV_8UC1); // greenchannels[2] Mat::zeros(image.rows, image.cols, CV_8UC1); // redMat green;merge(channels, green);
}输出结果
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;
}输出结果
颜色空间
具体可搜索wikipedia有很详细的介绍
1. HSV vs HSBhttps://en.wikipedia.org/wiki/HSL_and_HSV
2. YUV可参考本人以前的一篇文章https://blog.csdn.net/Scott_S/article/details/118525159?spm1001.2014.3001.55012.3. 不同颜色空间应用场景
RGB视频监视器彩色摄像机HSV [色调、饱和度、亮度]彩色处理为目的CMYK 印刷行业如果用过小米照片打印机就会发现一张照片需要渲染4次按照如下流程 Cyan蓝青色magenta品红、杨红Yellow:黄色Key: (black) YUV 电视信号传输占用极少的带宽