opencv 滑动条

编程入门 行业动态 更新时间:2024-10-23 13:26:27

<a href=https://www.elefans.com/category/jswz/34/1769967.html style=opencv 滑动条"/>

opencv 滑动条

滑动条改变HSV等(似乎有些地方不对……?)
写得超级繁琐。

#include<opencv2/core/core.hpp>
#include<iostream>
#include<opencv2\opencv.hpp>
#include"opencv2\highgui\highgui.hpp"
#include<vector>
using namespace std;
using namespace cv;Mat dstImage;
Mat srcImage;
int g_RedValue;
int g_BlueValue;
int g_GreenValue;
static void on_R(int, void*);
static void on_G(int, void*);
static void on_B(int, void*);int g_VValue;
int g_HValue;
int g_SValue;
static void on_H(int, void*);
static void on_S(int, void*);
static void on_V(int, void*);int g_gValue;
static void on_Gray(int, void*);vector<Mat> channels;
static void on_Gray2(int, void*);int main()
{srcImage=imread("tbbt.jpg");if (!srcImage.data){cout << "请确定目录下是否有图片!" << endl;return 0;}dstImage = srcImage.clone();g_BlueValue = 80;g_RedValue = 80;g_GreenValue = 80;namedWindow("RGB效果图窗口", 1);createTrackbar("蓝色B", "RGB效果图窗口", &g_BlueValue, 255, on_B);createTrackbar("红色R", "RGB效果图窗口", &g_RedValue, 255, on_R);createTrackbar("绿色G", "RGB效果图窗口", &g_GreenValue, 255, on_G);on_B(g_BlueValue, 0);on_R(g_RedValue, 0);on_G(g_GreenValue, 0);waitKey(0);srcImage = imread("tbbt.jpg");//目录下必须有这个图片cvtColor(srcImage, dstImage, COLOR_RGB2HSV);g_HValue = 80;g_SValue = 80;g_VValue = 80;namedWindow("HSV效果图窗口", 1);createTrackbar("色相H", "HSV效果图窗口", &g_HValue, 255, on_H);createTrackbar("饱和度S", "HSV效果图窗口", &g_SValue, 255, on_S);createTrackbar("色调V", "HSV效果图窗口", &g_VValue, 255, on_V);on_H(g_HValue, 0);on_S(g_SValue, 0);on_V(g_VValue, 0);//cvtColor(dstImage, dstImage, COLOR_HSV2BGR);waitKey(0);srcImage = imread("tbbt.jpg");cvtColor(srcImage, dstImage, COLOR_RGB2GRAY);g_gValue = 80;namedWindow("GRAY效果图窗口");createTrackbar("灰度G","GRAY效果图窗口",&g_gValue,255,on_Gray);on_Gray(g_gValue, 0);waitKey(0);srcImage = imread("tbbt.jpg");cvtColor(srcImage, dstImage, COLOR_RGB2GRAY);g_gValue = 80;namedWindow("GRAY效果图窗口2");createTrackbar("灰度G", "GRAY效果图窗口2", &g_gValue, 255, on_Gray2);on_Gray2(g_gValue, 0);waitKey(0);}static void on_R(int, void*)
{Mat CopyImage = srcImage.clone();namedWindow("原始图窗口", 1);for (int y = 0; y < srcImage.rows; y++){for (int x = 0; x < srcImage.cols; x++){CopyImage.at<Vec3b>(y, x)[2] =saturate_cast<uchar>(g_RedValue+ (CopyImage.at<Vec3b>(y, x)[2]));//CopyImage=CopyImage+Scalar(g_nBrightValue,,)}}imshow("原始图窗口", srcImage);imshow("RGB效果图窗口", CopyImage);
}
static void on_G(int, void*)
{Mat CopyImage = srcImage.clone();namedWindow("原始图窗口", 1);for (int y = 0; y < srcImage.rows; y++){for (int x = 0; x < srcImage.cols; x++){CopyImage.at<Vec3b>(y, x)[1] =saturate_cast<uchar>(g_GreenValue+ (CopyImage.at<Vec3b>(y, x)[1]));//CopyImage = CopyImage + Scalar(g_nBrightValue, , )}}imshow("原始图窗口", srcImage);imshow("RGB效果图窗口", CopyImage);
}
static void on_B(int, void*)
{Mat CopyImage = srcImage.clone();namedWindow("原始图窗口", 1);for (int y = 0; y < srcImage.rows; y++){for (int x = 0; x < srcImage.cols; x++){CopyImage.at<Vec3b>(y, x)[0] =saturate_cast<uchar>(g_BlueValue+ (CopyImage.at<Vec3b>(y, x)[0]));//CopyImage = CopyImage + Scalar(g_B, , )}}imshow("原始图窗口", srcImage);imshow("RGB效果图窗口", CopyImage);
}
static void on_H(int, void*)
{Mat CopyImage = dstImage.clone();namedWindow("原始图窗口", 1);for (int y = 0; y < srcImage.rows; y++){for (int x = 0; x < srcImage.cols; x++){CopyImage.at<Vec3b>(y, x)[0] =saturate_cast<uchar>(g_HValue + (CopyImage.at<Vec3b>(y, x)[0]));//CopyImage=CopyImage+Scalar(g_nBrightValue,,)}}imshow("原始图窗口", srcImage);imshow("HSV效果图窗口", CopyImage);
}
static void on_S(int, void*)
{Mat CopyImage = dstImage.clone();namedWindow("原始图窗口", 1);for (int y = 0; y < srcImage.rows; y++){for (int x = 0; x < srcImage.cols; x++){CopyImage.at<Vec3b>(y, x)[1] =saturate_cast<uchar>(g_SValue + (CopyImage.at<Vec3b>(y, x)[1]));//CopyImage=CopyImage+Scalar(g_nBrightValue,,)}}imshow("原始图窗口", srcImage);imshow("HSV效果图窗口", CopyImage);
}
static void on_V(int, void*)
{Mat CopyImage = dstImage.clone();namedWindow("原始图窗口", 1);for (int y = 0; y < srcImage.rows; y++){for (int x = 0; x < srcImage.cols; x++){CopyImage.at<Vec3b>(y, x)[2] =saturate_cast<uchar>(g_VValue + (CopyImage.at<Vec3b>(y, x)[2]));//CopyImage=CopyImage+Scalar(g_nBrightValue,,)}}imshow("原始图窗口", srcImage);imshow("HSV效果图窗口", CopyImage);
}
static void on_Gray(int, void*)
{Mat CopyImage=dstImage.clone();for (int y = 0; y < srcImage.rows; y++){for (int x = 0; x < srcImage.cols; x++){CopyImage.at<uchar>(y,x) =saturate_cast<uchar>(g_gValue + (CopyImage.at<uchar>(y,x)));}}imshow("原始图窗口",srcImage);imshow("GRAY效果图窗口", CopyImage);
}
static void on_Gray2(int, void*)
{split(srcImage, channels);Mat gray = channels.at(0) + g_gValue;channels.clear();channels.push_back(gray);merge(channels, dstImage);imshow("GRAY效果图窗口2", dstImage);
}

更多推荐

opencv 滑动条

本文发布于:2024-03-14 02:40:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1735449.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:opencv

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!