opencv Day1

先把代码放这,我饿饿
我吃外卖去了

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

#undef UNICODE
#undef _UNICODE
//test_1用来观察不同颜色模型之间的转换
//图片来自吃不到外卖的rar
//小勾八hzy的图被我雪藏了
inline void test_1(Mat img32) {
    Mat gray, HSV, YUV, Lab;
    cvtColor(img32, HSV, COLOR_BGR2HSV);
    cvtColor(img32, YUV, COLOR_BGR2YUV);
    cvtColor(img32, Lab, COLOR_BGR2Lab);
    cvtColor(img32, gray, COLOR_BGR2GRAY);
    //namedWindow保证图片显示全
    namedWindow("原图", WINDOW_NORMAL);
    namedWindow("HSV", WINDOW_NORMAL);
    namedWindow("YUV", WINDOW_NORMAL);
    namedWindow("Lab", WINDOW_NORMAL);
    namedWindow("gray", WINDOW_NORMAL);
    imshow("原图", img32);
    imshow("HSV", HSV);
    imshow("YUV", YUV);
    imshow("Lab", Lab);
    imshow("gray", gray);
    return;
}
//尝试把一张图片的三个通道分开,并且去掉其中一个来观察结果

inline void test_2(Mat img32) {
    vector <Mat> imgs;
    //split函数的意思是把前面那个分成三份变成后面那个
    split(img32, imgs);
    namedWindow("原图", WINDOW_NORMAL);
    imshow("原图",img32);
    namedWindow("RGB-B通道", WINDOW_NORMAL);
    namedWindow("RGB-G通道", WINDOW_NORMAL);
    namedWindow("RGB-R通道", WINDOW_NORMAL);
    imshow("RGB-B通道", imgs[0]);
    imshow("RGB-G通道", imgs[1]);
    imshow("RGB-R通道", imgs[2]);
    Mat result;
    //result代表结果,temp保存一下原来的值
    Mat temp1 = imgs[0];
    Mat temp2 = imgs[1];
    Mat temp3 = imgs[2];
    vector<int> compression_params;
    compression_params.push_back(IMWRITE_PNG_COMPRESSION);
    compression_params.push_back(9);
    merge(imgs, result);  //合并图像
    
   
    namedWindow("RGB-all", WINDOW_NORMAL);
    imshow("RGB-all", result); 
    
    imwrite("rar2.png", img32, compression_params);
    imgs[2] = 0;
    merge(imgs, result);
    namedWindow("RGB-nored", WINDOW_NORMAL);
    imshow("RGB-nored", result);
    return;
}
int main(){
    cv::Mat img32;
    img32 = imread("../rar.jpg");
    //imshow("test", img32);
    img32.convertTo(img32, CV_32F, 1.0 / 255);
    //cvtColor用来颜色的强制转换
   // test_1(img32);
    test_2(img32);
    waitKey(0);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值