zoukankan      html  css  js  c++  java
  • 摄像头,图片筛选颜色

    #include <opencv2/opencv.hpp>
    #include<iostream>
    #include<string>
    using namespace cv;
    using namespace std;
    Mat img;
    //灰度值归一化
    Mat bgr;
    //HSV图像
    Mat hsv;
    //色相
    int hmin = 8;
    int hmax = 23;
    int smin = 43;
    int smax = 255;
    int vmin = 46;
    int vmax = 255;
    
    int hmin_Max = 180;
    
    int hmax_Max = 180;
    //饱和度
    int smin_Max = 255;
    
    int smax_Max = 255;
    //亮度
    
    int vmin_Max = 255;
    
    int vmax_Max = 255;
    //显示原图的窗口
    string windowName = "src";
    //输出图像的显示窗口
    string dstName = "dst";
    //输出图像
    Mat dst;
    //回调函数
    void callBack(int, void*)
    {
    	//输出图像分配内存
    	dst = Mat::zeros(img.size(), img.type());
    	/*dst =cv::Mat(img.rows,img.cols, CV_8UC3, Scalar(225, 225, 225));*/
    	//掩码
    	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) = bgr.at<Vec3b>(r, c);
    			}
    		}
    	}
    	//输出图像
    	imshow(dstName, dst);
    	imshow("mask", mask);
    }
    
    //视频
    int main()
    {
    
     /* VideoCapture capture(0);*/
    	VideoCapture capture("E://hh.mp4");
    	char key;
      //循环显示每一帧
      while (1)
      {
    	  key = waitKey(30);
          capture >> img;
          imshow(windowName, img);
          bgr = img.clone();
          //颜色空间转换
          cvtColor(bgr, hsv, CV_BGR2HSV);
          
          //定义输出图像的显示窗口
          namedWindow(dstName, 0);
          //调节色相 H
          createTrackbar("hmin", dstName, &hmin, hmin_Max, callBack);
          createTrackbar("hmax", dstName, &hmax, hmax_Max, callBack);
          //调节饱和度 S
          createTrackbar("smin", dstName, &smin, smin_Max, callBack);
          createTrackbar("smax", dstName, &smax, smax_Max, callBack);
          //调节亮度 V
          createTrackbar("vmin", dstName, &vmin, vmin_Max, callBack);
          createTrackbar("vmax", dstName, &vmax, vmax_Max, callBack);
          callBack(0, 0);
          
    
    
          
    
          if (key== 'q') hmin++;
    	  else if (key == 'w') hmin--;
    	  else if (key == 'e') hmax++;
    	  else if (key == 'r') hmax--;
    	  else if (key == '27') break;
      }
      return 0;
    }
    
    //
    ////图片
    //int main()
    //{
    //
    //
    //
    //
    //	//循环显示每一帧
    //
    //	img = imread("G:\电路板.jpg");
    //	namedWindow(windowName, WINDOW_GUI_EXPANDED);
    //	imshow(windowName, img);
    //	bgr = img.clone();
    //	//颜色空间转换
    //	cvtColor(bgr, hsv, CV_BGR2HSV);
    //
    //	//定义输出图像的显示窗口
    //	namedWindow(dstName, WINDOW_GUI_EXPANDED);
    //	//调节色相 H
    //	createTrackbar("hmin", dstName, &hmin, hmin_Max, callBack);
    //	createTrackbar("hmax", dstName, &hmax, hmax_Max, callBack);
    //	//调节饱和度 S
    //	createTrackbar("smin", dstName, &smin, smin_Max, callBack);
    //	createTrackbar("smax", dstName, &smax, smax_Max, callBack);
    //	//调节亮度 V
    //	createTrackbar("vmin", dstName, &vmin, vmin_Max, callBack);
    //	createTrackbar("vmax", dstName, &vmax, vmax_Max, callBack);
    //	callBack(0, 0);
    //
    //
    //
    //
    //
    //	waitKey(0);
    //	return 0;
    //}	
    
  • 相关阅读:
    VMware 安装Windows Server 2008 R2
    Linux系统常用命令
    VMware安装CentOS 7和kali 2019.03
    Windows系统下常用命令
    javaFx 图书管理系统,采用 jfoenix-8.0.4 开源框架,使用 MaterialDesighn 风格
    华中大数据结构课程设计-------基于查找表的单词检索软件--------静态表、动态表、哈希表
    Java语言程序设计 :医院简易挂号管理系统 华科Java实验
    java 通过TCPUDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端
    JAVA 通过 Socket 实现 TCP 编程
    app自动化测试python
  • 原文地址:https://www.cnblogs.com/xingkongcanghai/p/11220156.html
Copyright © 2011-2022 走看看