关于识别不同颜色的错误

ERROR about identify different colors

本文关键字:颜色 错误 于识别 识别      更新时间:2023-10-16
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>

/*IplImage* GetThresholdedImage(IplImage* imgHSV){        
       IplImage* imgThresh=cvCreateImage(cvGetSize(imgHSV),IPL_DEPTH_8U, 1);
       cvInRangeS(imgHSV, cvScalar(170,160,60), cvScalar(180,256,256), imgThresh); 
       return imgThresh;
} */
IplImage* GetThresholdedImage(IplImage* imgHSV, CvScalar lower, CvScalar upper)
{       
    IplImage* imgThresh=cvCreateImage(cvGetSize(imgHSV),IPL_DEPTH_8U, 1);
    cvInRangeS(imgHSV, lower, upper, imgThresh); 
    return imgThresh;
}
IplImage* hsv;

CvScalar blue_upper = cvScalar(120,256,256);
CvScalar green_lower = cvScalar(40,60,10);
CvScalar green_upper = cvScalar(71,256,256);
IplImage* blue_mask = GetThresholdedImage(hsv, blue_lower, blue_upper);
IplImage* green_mask = GetThresholdedImage(hsv, green_lower, green_upper);
int main(){
      CvCapture* capture =0;       
      capture = cvCaptureFromCAM(0);
      if(!capture){
            printf("Capture failuren");
            return -1;
      }
      IplImage* frame=0;
      cvNamedWindow("Video");      
      cvNamedWindow("Ball");

      while(true){
            frame = cvQueryFrame(capture);            
            if(!frame) break;
            frame=cvCloneImage(frame); 
            cvSmooth(frame, frame, CV_GAUSSIAN,3,3); 
            IplImage* imgHSV = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 3); 
            cvCvtColor(frame, imgHSV, CV_BGR2HSV); 
            IplImage* imgThresh = GetThresholdedImage(imgHSV);
            cvSmooth(imgThresh, imgThresh, CV_GAUSSIAN,3,3);
            cvShowImage("Ball", imgThresh);            
            cvShowImage("Video", frame);

            cvReleaseImage(&imgHSV);
            cvReleaseImage(&imgThresh);            
            cvReleaseImage(&frame);

            int c = cvWaitKey(10);
            if((char)c==27 ) break;      
      }
      cvDestroyAllWindows() ;
      cvReleaseCapture(&capture);     
      return 0;
}

上面是我告诉不同颜色的代码,但事实证明 main 函数有问题。 基本上,主要功能只是激活凸轮。 错误是:"GetThresholdedImage 不接受 1 个参数"。 有人可以给我一些提示吗?

IplImage* imgThresh = GetThresholdedImage(imgHSV);

是导致错误的原因。函数的接口

GetThresholdedImage

有三个参数,如

IplImage* blue_mask = GetThresholdedImage(hsv, blue_lower, blue_upper);
IplImage* green_mask = GetThresholdedImage(hsv, green_lower, green_upper);

您必须添加其他两个参数,例如:

IplImage* imgThresh = GetThresholdedImage(imgHSV, blue_lower, blue_upper);

取决于您要对图像执行的操作。