この質問は、VS2008 Express の c++ を使用した opencv に関するものです。
私は非常に単純なことをしています。カメラ画像から肌の値を取得しようとしています。
スクリーンショットでわかるように、カメラの画像はかなりきれいに見えます。私はそれを HSV に変換し、色相チャネルをそれから分離して、後でスキン値のしきい値を設定しています。しかし、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;
}