opencv: converting color 后序

13 篇文章 0 订阅
</pre><pre name="code" class="cpp">#include <opencv2\opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

string winName = "Image";
Mat rgbIm;
int h = 0;
int s = 255;
int v = 255;
void hMoved(int pos, void* x) {
    h = pos;
    Mat hsvIm;
    cvtColor(rgbIm, hsvIm, CV_BGR2HSV);
    Scalar hsv = Scalar((uchar)h, (uchar)s, uchar(v), 0);
    hsvIm.setTo(hsv);
    cvtColor(hsvIm, rgbIm, CV_HSV2BGR);
    imshow(winName, rgbIm);
}

void sMoved(int pos, void* x) {
    v = pos;
    Mat hsvIm;
    cvtColor(rgbIm, hsvIm, CV_BGR2HSV);
    Scalar hsv = Scalar((uchar)h, (uchar)s, uchar(v), 0);
    hsvIm.setTo(hsv);
    cvtColor(hsvIm, rgbIm, CV_HSV2BGR);
    imshow(winName, rgbIm);
}

void vMoved(int pos, void* x) {
    v = pos;
    Mat hsvIm;
    cvtColor(rgbIm, hsvIm, CV_BGR2HSV);
    Scalar hsv = Scalar((uchar)h, (uchar)s, uchar(v), 0);
    hsvIm.setTo(hsv);
    cvtColor(hsvIm, rgbIm, CV_HSV2BGR);
    imshow(winName, rgbIm);
}

int main() {
    rgbIm.create(500, 500, CV_8UC3);
    rgbIm.setTo(Scalar(0, 0, 255));
    namedWindow(winName);
    imshow(winName, rgbIm);
    createTrackbar("H", winName, &h, 180, hMoved, NULL);
    createTrackbar("S", winName, &s, 255, sMoved, NULL);
    createTrackbar("V", winName, &v, 255, vMoved, NULL);
    while(1) {
        int c = waitKey(0);
        if(c == 27) {//esc
            break;
        }
    }
    waitKey(0);
    return 0;
}

运行结果如下:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值