• 大小: 16.03MB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-02
  • 语言: 其他
  • 标签: OPENCV  RGB  HSV  COLOR  

资源简介

利用HSV和HSI颜色空间中的颜色范围,来检测图片中的黄色区域和蓝色区域。用两种方法来统计图片中黄色区域和蓝色区域的像素点个数。对于使用颜色检测蓝牌和黄牌具有一定的借鉴作用

资源截图

代码片段和文件信息

#include “cv.h“
#include “highgui.h“
#include “cxcore.h“
#include 
using namespace std;
using namespace cv;
#define M_PIR 0.159f 
vector RGBtoHSV(Mat &matRoiMat &matRed);
vector RGBtoHSI(Mat &matRoiMat &matRed);
int main(int argcchar*argv[])
{
Mat frame=imread(“15.jpg“);
/************************************************************************************/
Mat matRedMask(frame.size()CV_8UC1Scalar(0));
vector number=RGBtoHSV(framematRedMask);
int nRedNum=number.at(0);
int nBlueNum=number.at(1);     //存放红色点和蓝色点的个数
int nYellowNum=number.at(2);  //存放黄色点个数

cout<<“nRedNum=“< cout<<“nBlueNum=“< cout<<“nYellowNum=“< imshow(“matRedMaskhsv“matRedMask);
/**************************************************************************************/
Mat matRed(frame.size()CV_8UC1Scalar(0));
vector num=RGBtoHSI(framematRed);
int nRedNum1=num.at(0);
int nBlueNum1=num.at(1);     //存放红色点和蓝色点的个数
int nYellowNum1=num.at(2);  //存放黄色点个数
cout<<“nRedNum1=“< cout<<“nBlueNum1=“< cout<<“nYellowNum1=“< imshow(“matRedhsi“matRed);
/**************************************************************************************/
imshow(“frame“frame);
waitKey();
return 0;
}

vector RGBtoHSV(Mat &matRoiMat &matRed)
{
int nRedNum=0;            //红色像素点个数
int nBlueNum=0;           //蓝色像素点个数
int nYellowNum=0;         //黄色像素点个数
Mat matHsv;
vector vecResult;
cvtColor(matRoimatHsv CV_BGR2HSV);
//Mat matBlue(matRoi.size()CV_8UC1Scalar(0));

//Mat matYellow(matRoi.size()CV_8UC1Scalar(0));
//matRed.convertTo(matRedCV_32FC1);
for(int i=0;i {
      for(int j=0;j   {
   Vec3b vec3=matHsv.at(ij); 
   int nHVal  = vec3.val[0];         //除以255,归一化[01]区间 1/255=0.003921  
   int nSVal = vec3.val[1];
   int nVVal   = vec3.val[2]; 
  
   //计算红色像素点
   bool bIsred = ((nHVal >0&&nHVal < 7)||(nHVal > 150&&nHVal < 180) ) && (nSVal> 60)&& (nVVal > 65&&nVVal < 180);
 
    if( bIsred )
{
//matRed.at(ij) = 255;         //是红色像素,就赋值255
nRedNum++;
}
/*else
{
matRed.at(ij) = 0;   
}*/

//计算蓝色像素点
bool bIsBlue=(nHVal > 100&&nHVal<125)&&(nSVal> 48&&nSVal<180)&& (nVVal > 30&&nVVal < 200);
      
if( bIsBlue )
{
//matBlue.at(ij) = 255;
nBlueNum++;                    //统计蓝色像素的个数
}
/*else
{
matBlue.at(ij) = 0;   
}*/

//计算黄色像素点个数
   //bool bIsYellow=(((fHVal < 0.25f)&&(fHVal > 0.02f))||((fHVal > 0.60f)&&(fHVal <0.98f) )) && (fSVal >0.45f)&& (fIVal > 0.32f)&& (fIVal <0.85f);
          // bool bIsYellow=(nHVal > 30&&nHVal<80)&&(nSVal> 65&&nSVal<180)&& (nVVal > 70&&nVVal < 200);
       bool bIsYellow=((nHVal <32&&nHVal >23)/*||((nHVal > 110)&&(nHVal

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-11-19 15:20  yanse\
     目录           0  2015-11-19 15:20  yanse\Debug\
     文件       80896  2015-11-16 17:37  yanse\Debug\yanse.exe
     文件         406  2015-11-16 09:39  yanse\Debug\yanse.exe.manifest
     文件     4612812  2015-11-16 17:37  yanse\Debug\yanse.ilk
     文件     1911808  2015-11-16 17:37  yanse\Debug\yanse.pdb
     目录           0  2015-11-16 13:37  yanse\ipch\
     目录           0  2015-11-16 13:37  yanse\ipch\yanse-ca69122c\
     文件    56557568  2015-11-16 13:37  yanse\ipch\yanse-ca69122c\yanse-c0bb3d8c.ipch
     目录           0  2015-11-19 15:20  yanse\yanse\
     文件       35381  2015-11-16 10:31  yanse\yanse\111.jpg
     文件       65314  2015-11-16 16:13  yanse\yanse\113.jpg
     文件       37265  2015-11-16 16:46  yanse\yanse\114.jpg
     文件       28543  2015-09-02 16:29  yanse\yanse\14.jpg
     文件       69414  2015-09-02 16:28  yanse\yanse\15.jpg
     文件       42729  2015-09-02 16:32  yanse\yanse\17.jpg
     文件       51073  2015-09-02 16:36  yanse\yanse\20.jpg
     目录           0  2015-11-19 15:20  yanse\yanse\Debug\
     文件       18896  2015-11-16 17:37  yanse\yanse\Debug\CL.read.1.tlog
     文件         352  2015-11-16 17:37  yanse\yanse\Debug\CL.write.1.tlog
     文件         662  2015-11-16 17:37  yanse\yanse\Debug\cl.command.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.1500.read.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.1500.write.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.2884.read.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.2884.write.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.48396.read.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.48396.write.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.49520.read.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.49520.write.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.49900.read.1.tlog
     文件           2  2015-11-16 17:37  yanse\yanse\Debug\link.49900.write.1.tlog
............此处省略22个文件信息

评论

共有 条评论