Raj*_*eep 4 c++ opencv visual-studio-2008
这个问题是关于在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;
}
Run Code Online (Sandbox Code Playgroud)

顺化通道看起来太嘈杂和颗粒感.为什么会这样?
在我们看到的真实世界颜色中,由"色调"表示的信息部分会有所不同.红色完全由色调描述.布莱克根本没有色调信息.
但是,当您在HSV中表示颜色时,色调始终是颜色信息的三分之一.
因此,当颜色接近任何灰色阴影时,色调成分将被人为地膨胀.这就是你所看到的颗粒感.越接近灰色,必须放大越多的色调,包括捕获的色调中的错误.
HSV图像窗口也显示信息的劣化.为什么会这样?
转换中会出现舍入错误,但可能没有您想象的那么多.尝试将您的HSV图像转换回BGR以查看实际发生的降级程度.
以及如何解决这个问题.
实际上,您有两种选择.
使用更高质量的相机,或不使用HSV格式.
| 归档时间: |
|
| 查看次数: |
2026 次 |
| 最近记录: |