【发布时间】:2017-08-01 00:40:12
【问题描述】:
这个问题是关于在 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;
}
【问题讨论】:
-
嗯,原图也很吵。我对色调嘈杂并不感到惊讶。看看这堵墙——随机的一堆 r g b salt-pepper 像素,它们创建了一个灰色的墙。
标签: c++ visual-studio-2008 opencv