Opencv图像基本操作

工程文件

OpenCV在图像中的基本操作

色彩空间的基础知识

1.RGB空间

  • 首先RGB在图片信息中指的是三个通道的值,R代表red,G代表green,B代表blue
  • 在opencv中OpenCV默认的RGB彩色空间的通道顺序为BGR
  • 下面介绍图片在代码中的rgb通道的情况
  1. 1 代码介绍

Inline code

//img_rgb= imread("sun.jpg");
上面就是利用opencv导入的sun图片,没有表明const值的情况下默认导入彩图,即rgb图

2.HSI空间

  • 是一个色调,饱和度和亮度描述空间,这个在web网页设计的画图中同样如此,HSI可以从彩色图像携带的彩色信息(色调和饱和度)中消除强度分量的影响,HSI空间对于开发基于彩色描述
    的图像处理算法是一个理想的彩色空间
  • 如果认为rgb是三维向量的话,那么可以通过空间解算出来H,S,I的值
  • 而且在OpenCV中可以使用HSV(色调,饱和度和值)空间来隔离图像颜色与亮度信息,可以实现高效转换

3.灰色空间

  • 在很多的任务场景下,二值化的灰度图也是常用的颜色空间

色彩空间的转换

1.从RGB色彩空间转换到HSV

  • code api
    cvtColor(img_rgb,img_hsv,COLOR_BGR2HSV);    

2.从HSV色彩空间转换到RGB

  • code api
    cvtColor(img_hsv,img_hsv2rgb, COLOR_HSV2RGB);

3.从RGB图转换为GRAY

  • code api
    cvtColor(img_rgb,img_gray,COLOR_BGR2GRAY);

4.从GRAY转换为RGB

  • code api
    cvtColor(img_gray,img_gray2rgb,COLOR_GRAY2BGR);
  • 此处说明,从RGB空间转换为灰度空间
    • 公式为 Y=0.2999 × \times ×R+0.5878 × \times ×G+0.114 × \times ×B
  • 从灰度图转换彩图,可以发现灰度图转换RGB的彩图还是黑白的,原因可能是灰度图的值已经无法回到原图的R,G,B值
    • 公式为 R=Y,G=Y,B=Y

图片处理之后的结果图

  1. 首先导入的是RGB图
    在这里插入图片描述

  2. 将RGB的图转为HSV色彩空间
    在这里插入图片描述

  3. 将HSV的图转换为RGB图
    在这里插入图片描述

  4. 将RGB的图转换为GRAY的图
    在这里插入图片描述

  5. 将GRAY的图转换为RGB图
    在这里插入图片描述

工程源码

1. main.cpp

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


int main() {
    Mat img_rgb,img_gray,img_hsv,img_gray2rgb,img_hsv2rgb;
    //导入向日葵图像
    img_rgb= imread("sun.jpg");
    cvtColor(img_rgb,img_hsv,COLOR_BGR2HSV);
    cvtColor(img_hsv,img_hsv2rgb, COLOR_HSV2RGB);
    cvtColor(img_rgb,img_gray,COLOR_BGR2GRAY);
    cvtColor(img_gray,img_gray2rgb,COLOR_GRAY2BGR);
    imshow("RGB",img_rgb); //显示rgb的值
    imshow("RGB to HSV",img_hsv);//显示rgb图转hsv的图
    imshow("HSV to RGB",img_hsv2rgb);//显示hsv转换为rgb的图
    imshow("RGB to GRAY",img_gray);//显示由色彩图转为灰度图
    imshow("GRAY to RGB",img_gray2rgb);//由灰度图变为色彩图
    //下面来输出各个色彩空间的通道数(用来描述图片的信息)
    cout<<"RGB image 通道数:"<<img_rgb.channels()<<endl;
    cout<<"HSV image 通道数:"<<img_hsv.channels()<<endl;
    cout<<"gray image 通道数:"<<img_gray.channels()<<endl;
    waitKey(0);
    return 0;

}

2. cmakelists.txt

  • 这部分是通过配置cmakelist.txt来实现OpenCV的链接
project(demo06)
#可以将下面的路径单独添加到环境变量OpenCV_DIR
set(OpenCV_DIR "E:\\C_Lib\\Opencv\\Opencv_4\\opencv\\mingw-build\\install")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
set(CMAKE_CXX_STANDARD 14)

add_executable(demo06 main.cpp)

target_link_libraries(demo06 ${OpenCV_LIBS})
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值