#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
Mat bgr;
Mat hsv;
int hmin = 0;
int hmax = 180;
int h_Max = 180;
int smin = 0;
int smax = 255;
int s_Max = 255;
int vmin = 0;
int vmax = 255;
int v_Max = 255;
string windowName = "src";
string dstName = "dst";
Mat dst;
void callBack(int, void*)
{
dst = Mat::zeros(bgr.size(), bgr.type());
Mat mask;
inRange(hsv, Scalar(hmin, smin, vmin), Scalar(hmax, smax, vmax), mask);
for (int r = 0; r < bgr.rows; r++)
{
for (int c = 0; c < bgr.cols; c++)
{
if (mask.at<uchar>(r, c) == 255)
{
dst.at<Vec3b>(r, c)[0] = bgr.at<Vec3b>(r, c)[0];
dst.at<Vec3b>(r, c)[1] = bgr.at<Vec3b>(r, c)[1];
dst.at<Vec3b>(r, c)[2] = bgr.at<Vec3b>(r, c)[2];
}
}
}
imshow("mask", mask);
imshow("dst", dst);
}
int main()
{
Mat srcImage = imread("C:\\Users\\Administrator\\Desktop\\0001.jpg");
if (!srcImage.data){
cout << "图片读取失败" << endl;
system("pause");
return -1;
}
imshow(windowName, srcImage);
bgr = srcImage;
cvtColor(bgr, hsv, COLOR_BGR2HSV);
namedWindow(dstName, 0);
createTrackbar("hmin", dstName, &hmin, h_Max, callBack);
createTrackbar("hmax", dstName, &hmax, h_Max, callBack);
createTrackbar("smin", dstName, &smin, s_Max, callBack);
createTrackbar("smax", dstName, &smax, s_Max, callBack);
createTrackbar("vmin", dstName, &vmin, v_Max, callBack);
createTrackbar("vmax", dstName, &vmax, v_Max, callBack);
callBack(0, 0);
waitKey(0);
return 0;
}