这个问题是关于 VS2008 express 中带有 c++ 的 opencv。
我正在做非常简单的事情。试图从相机图像中获取皮肤值。
正如您在屏幕截图中看到的,相机图像看起来相当不错。我将其转换为 HSV 并将 Hue 通道从中分离出来,以便稍后阈值皮肤值。但是 Hue 通道似乎过于嘈杂和颗粒感。HSV 图像窗口也显示信息的退化。为什么会这样?以及如何解决。如果我们不能通过某种平滑来消除噪音?代码如下:
#include <opencv2/opencv.hpp>
int main(){
cv::VideoCapture cap(0); // open the default camera
cv::Mat hsv, bgr, skin;//make image & skin container
cap >> bgr;
//cvNamedWindow("Image");
//cvNamedWindow("Skin");
//cvNamedWindow("Hue");
cv::cvtColor(bgr, hsv, CV_BGR2HSV);
std::vector<cv::Mat> channels;
cv::split(hsv, channels);
cv::Mat hue;
hue = channels[0];
cv::imshow("Image", bgr);cvMoveWindow("Image",0,0);
cv::imshow("HSV", hsv);cvMoveWindow("HSV",660,0);
cv::imshow("Hue", hue);cvMoveWindow("Hue",0,460);
cvWaitKey(0);//wait for key press
return 0;
}