• 大小: 157KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: QTopencv  

资源简介

一般做手形识别,会先做肤色分割,因为人的皮肤颜色(黄种人哈),在HSV颜色空间下,和背景相比有明显的差别,所以利用肤色可以很好的提取手的区域。 在此 我使用形状匹配(matchShapes)来做,手形的对比,识别出手形代表的数字意义。当然这种方法非常依赖于模板的丰富性,有很大的局限性。

资源截图

代码片段和文件信息

/*
 * 摄像头读取-->
 * HSV颜色空间转换及通道分离-->
 * 肤色分割-->
 * 中值滤波-->
 * 轮廓检测及过滤-->
 * 轮廓形状匹配
 *
 */


#include 
#include 

#include 
using namespace cv;
using namespace std;

#define MAXVALUE (80)
#define KERNEL_SIZE (7)

int minVal = 7 maxVal = 20;

int is_using_canny = 0;
int canny_threshold = 3;

Mat frame;                  //原始图像帧
vector  channels;      //HSV通道分离
Mat frameH;                 //H通道
Mat result;                 //最终结果
Mat resultRGB;              //将结果显示在原图

int match_number = -1;

//模板总数
#define TEMPLATE_NUMS   (10)
vector< vector > mContoursTemp;  //轮廓模板集
vector< vector > mContoursProc;  //待处理轮廓集


//分割H通道时的最小值
void trackBarMin(int pos void* userdata)
{}
//分割H通道时的最大值
void trackBarMax(int pos void* userdata)
{}

//是否使用Canny边缘检测
void isUsingCanny(int pos void* userdata)
{}

//分割H通道时的最大值
void cannyThreshold(int pos void* userdata)
{}


//载入模板的轮廓
void init_hand_template(void);

// 对肤色分割、滤波去噪、开运算后图像进行轮廓提取并过滤
void hand_contours(Mat &srcImage);

// 将目标轮廓与模板轮廓进行匹配
void hand_template_match(void);

// 在图片的左上角标注数字
void number_draw(Mat &img int num);

// 将Mat中的每个元素设置为某个数值
void setMatInt(Mat & input_image uchar val);

int main()
{
    // 载入模板的轮廓
    init_hand_template();

#if 1
    namedWindow(“original“);
    namedWindow(“TrackBar“);
    namedWindow(“result“);

    createTrackbar(“minVal“ “TrackBar“ &minVal MAXVALUE trackBarMin);
    createTrackbar(“maxVal“ “TrackBar“ &maxVal MAXVALUE trackBarMax);

    createTrackbar(“is_using_canny“ “TrackBar“ &is_using_canny 1 isUsingCanny);
    createTrackbar(“canny_threshold“ “TrackBar“ &canny_threshold 120 cannyThreshold);

    // 打开摄像头
    VideoCapture capture(0);
    if(false == capture.isOpened())
    {
        cout << “camera open failed!“ << endl;
        return -1;
    }

    Mat kernel = getStructuringElement(MORPH_RECT Size(KERNEL_SIZE KERNEL_SIZE));

    while(true)
    {
        // 获取图片帧
        capture >> frame;
        if(true == frame.empty())
        {
            cout << “get no frame“ << endl;
            break;
        }

        // 显示原始图片
        imshow(“original“ frame);
        resultRGB = frame.clone();

        // 转换HSV颜色通道
        cvtColor(frame frame CV_BGR2HSV);

        // HSV通道分离
        split(frame channels);
        frameH = channels[0];

        // 显示H通道图片
//        imshow(“H-channels“ frameH);

        // 肤色分离-使用OpenCV自带函数
        inRange(frameH Scalar(minVal) Scalar(maxVal) result);

        //------------------------------滤波平滑-----------------------------
        // 中值滤波: 可以很好的去除椒盐噪声,而且ksize越大效果越好。
        medianBlur(result result 11);

        //----------------------------形态学运算-----------------------------
        /*
         * 腐蚀 MORPH_ERODE
         * 膨胀 MORPH_DILATE
         * 开运算 MORPH_OPEN
         * 闭运算 MORPH_CLOSE
         * 形态学梯度 MORPH_GRADIENT
  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5950  2010-04-06 14:48  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\1.bmp

     文件       2822  2010-04-06 20:25  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\10.bmp

     文件       5326  2010-04-06 14:46  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\2.bmp

     文件       4990  2010-04-06 14:49  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\3.bmp

     文件       6758  2010-04-06 20:19  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\4.bmp

     文件       5886  2010-04-06 14:51  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\5.bmp

     文件       4574  2010-04-06 20:21  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\6.bmp

     文件       4878  2010-04-06 20:23  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\7.bmp

     文件       6878  2010-04-06 18:36  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\8.bmp

     文件       3002  2010-04-06 20:24  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\9.bmp

     文件     310114  2017-03-21 16:23  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\HSV_matchShapes.exe

     文件     339928  2017-03-21 16:23  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\main.o

     文件      18090  2017-03-21 16:15  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\Makefile

     文件      14115  2017-03-21 16:15  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\Makefile.Debug

     文件      14146  2017-03-21 16:15  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\Makefile.Release

     文件       2942  2017-02-17 11:39  HSV_matchShapes\HSV_matchShapes\common.pri

     文件        190  2017-03-09 10:22  HSV_matchShapes\HSV_matchShapes\HSV_matchShapes.pro

     文件      18337  2017-03-21 16:58  HSV_matchShapes\HSV_matchShapes\HSV_matchShapes.pro.user

     文件       9914  2017-03-21 16:23  HSV_matchShapes\HSV_matchShapes\main.cpp

     目录          0  2017-03-21 16:23  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug

     目录          0  2017-03-09 10:20  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug\release

     目录          0  2017-03-09 10:22  HSV_matchShapes\build-HSV_matchShapes-Desktop_Qt_5_3_0_MinGW_32bit-Debug

     目录          0  2017-03-21 16:58  HSV_matchShapes\HSV_matchShapes

     目录          0  2017-03-09 10:20  HSV_matchShapes

----------- ---------  ---------- -----  ----

               778840                    24


评论

共有 条评论

相关资源