【发布时间】:2017-04-18 21:52:28
【问题描述】:
我使用的是 openCV 2.4.9。我使用 OpenCV 在新窗口中运行相机打开相机。我想通过按键更改相机馈送的颜色。例如,当我单击“1”相机馈送变为灰度时,“2”-> 黑白,“3”-> HSV,当我按“ESC”时返回(0)。到目前为止,这是我想出的:
#include <iostream>
#include <conio.h>
using namespace std;
#include<opencv\cv.h>
#include<opencv\highgui.h>
#include "opencv2\core\core.hpp"
#include "opencv2\imgproc\imgproc.hpp"
void main(){
CvCapture *capture = cvCaptureFromCAM(CV_CAP_ANY);
IplImage *frame = 0, *image = 0;
int key = 0, last = 0;
cvNamedWindow("WebCamera", CV_WINDOW_AUTOSIZE);
while(key != 27) {
frame = cvQueryFrame(capture);
image = cvCloneImage(frame);
// i try to use swich and case for this but i can't get it work
// when using cvtColor need to use Mat image but when use cvShowImage need IplImage
// switch(last)
// {
// case '1':
// cvtColor(image,HSVimage,CV_BGR2HSV);
// case '2':
// cvtColor(image,HSVimage,CV_BGR2GRAY);
// case '3':
// .
// .
// default: break;
// }
cvShowImage("WebCamera", image);
cvReleaseImage(&image);
key = cvWaitKey(1);
if (key != -1) last = key;
}
cvDestroyWindow("WebCamera");
cvReleaseCapture(&capture);
exit(0);
}
我想在同一个窗口中一次又一次地更改颜色,或者(如果不可能)为每个滤色器打开和关闭窗口。谢谢你。对不起英语不好
【问题讨论】:
-
不要使用 IplImage 而是使用 Mat。并使用 c++ 语法。
-
我尝试使用 Mat。但我不知道如何在同一个窗口中更改颜色
-
在下面查看我的答案