本文介绍了ERROR关于识别不同的颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
#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 failure\n");
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;
}
是我的代码,告诉不同的颜色,功能。基本上主要功能只是主动凸轮。错误是:GetThresholdedImage不接受1个参数。有人可以给我一些提示吗?
above is my code to tell different colors but turns out something wrong with the main function. basically the main function is just active the cam. the error is: "GetThresholdedImage does not take 1 arguments". can someone give me some hints?
推荐答案
行
IplImage* imgThresh = GetThresholdedImage(imgHSV);
是导致错误的原因。您的函数接口
is what causes the error. The interface to your function
GetThresholdedImage
有三个参数,用于
IplImage* blue_mask = GetThresholdedImage(hsv, blue_lower, blue_upper);
IplImage* green_mask = GetThresholdedImage(hsv, green_lower, green_upper);
您必须添加其他两个参数,例如:
You will have to add the other two parameters, say:
IplImage* imgThresh = GetThresholdedImage(imgHSV, blue_lower, blue_upper);
取决于您要对图像执行的操作。
depending on what you want to do with the image.
这篇关于ERROR关于识别不同的颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!