由于项目需要,进行过一段时间的 PariticalFilter 研究。主要的工作就是将网络上的Console代码和Mfc融合在一起,并且添加了Mfc端的控制功能。

      程序还有不完善的地方,现将相关的函数发布出来,大家相互研究。程序运行界面
程序的核心为两个部分,一个是核心PF函数,一个是界面操作
核心函数
.
    #.
    #.
    #.
    #.
     );
     );
    sd  );    , histo );
    s  );
    v  );
    cvSplit( imgs, h, s, v, NULL );
        ; r ; c ;
        }
        cvReleaseImage( , inv_sum;
    ; i . ; i  );
    cvCopy( frame, tmp, NULL );
    cvResetImageROI( frame );
    histos  );
    normalize_histogram( histos );
    cvReleaseImage( ;
    particles ;
    y ;
    ; j .;
        particles[k].width ;
    }
    ;
    ;
        y ;
        particles[k].x0 .;
        particles[k].width ;
        i  ) .
    #.
    #.
    .
    #.
    #.0000
    ., MIN( (., x ) );
    y ., MIN( (., y ) );
    s . ) . ) .;
    pn.s ., s );
    pn.xp ;
    ;
  ; i . ;
    ;
    ;
}

    IplImage matimg(matSrc);
    IplImage, r , w, h ) );
    tmp  );
    cvCopy( img, tmp, NULL );
    cvResetImageROI( img );
    histo  );
    cvReleaseImage( ;
    ; i ; i ;
    ; i ; j ];
exit. . ,,));
}
界面处理相关
void CGOMfcTemplate2Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
    CRect rect_ctr;  
    (this->GetDlgItem(IDC_CAM))->GetWindowRect(&rect_ctr);//获取Picture控件相对屏幕左上角的坐标,  
    ScreenToClient(rect_ctr);//获取Picture控件相对对话框客户区左上角的坐标  
    instant_position.x = point.x;
    instant_position.y = point.y;
    picture_ordinate_x = point.x - rect_ctr.left;
    picture_ordinate_y = point.y - rect_ctr.top;//point获取的是鼠标相对对话框客户区左上角的坐标,减去rect_ctr.left和rect_ctr.top后,即为鼠标相对Picture控件左上角的坐标  
    if ((nFlags == MK_LBUTTON) && Is_LeftButton_Down)
    {
        ::SetCursor(cross);
        CClientDC dc(this);
        CBrush *OldBrush;
        OldBrush=(CBrush*)dc.SelectStockObject(NULL_BRUSH);
        dc.SetROP2(R2_NOT);
        dc.Rectangle(CRect(chosen_position,instant_position));
        dc.Rectangle(CRect(chosen_position,point));
        dc.SelectObject(OldBrush);
        instant_position=point;
    }
    else
        ::SetCursor(arrow);
    CDialogEx::OnMouseMove(nFlags, point);
}

void CGOMfcTemplate2Dlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    Is_LeftButton_Down = true;
    ::SetCursor(cross);
    chosen_position = instant_position = point;
    CDialogEx::OnLButtonDown(nFlags, point);
}
void CGOMfcTemplate2Dlg::OnLButtonUp(UINT nFlags, CPoint point)
{
    if (Is_LeftButton_Down)
    {
        Is_LeftButton_Down = false;
        ::SetCursor(arrow);
        CClientDC dc(this);
        CPen* pOldPen=(CPen*)dc.SelectObject(&pen);
        dc.MoveTo(chosen_position);
        dc.LineTo(chosen_position.x,instant_position.y);
        dc.LineTo(instant_position);
        dc.LineTo(instant_position.x,chosen_position.y);
        dc.LineTo(chosen_position);
        //写到rect_res中区
        int rect_x = min(chosen_position.x,instant_position.x);
        int rect_y = min(chosen_position.y,instant_position.y);
        int rect_w = abs(chosen_position.x - instant_position.x);
        int rect_h = abs(chosen_position.y - instant_position.y);
        rectStart = Rect(rect_x,rect_y,rect_w,rect_h);
    }
    CDialogEx::OnLButtonUp(nFlags, point);
}

PariticalFilter在MFC上的运行,源代码公开的更多相关文章

  1. Arduino可穿戴教程之第一个程序——上传运行程序(四)

    Arduino可穿戴教程之第一个程序——上传运行程序(四) 2.4.5  上传程序 现在所有Arduino IDE的设置都完成了,我们就可以将示例程序上传到板子中了.这非常简单,只需要单击如图2.45 ...

  2. MFC上显示摄像头JPEG图片数据的两种方法

    其一是借助opencv,其二是利用流对象. 方法一: CvMat *mat; ,,CV_8UC1); ,,CV_8UC1,JPEGBuf); /*初始化矩阵信息头,这里的JPEGBuf就是JPEG图像 ...

  3. iOS开发之使用Storyboard预览UI在不同屏幕上的运行效果

    在公司做项目一直使用Storyboard,虽然有时会遇到团队合作的Storyboard冲突问题,但是对于Storyboard开发效率之高还是比较划算的.在之前的博客中也提到过,团队合作使用Storyb ...

  4. Windows OS上安装运行Apache Kafka教程

    Windows OS上安装运行Apache Kafka教程 下面是分步指南,教你如何在Windows OS上安装运行Apache Zookeeper和Apache Kafka. 简介 本文讲述了如何在 ...

  5. [转].NET程序在windows操作系统上独立运行的技术要点

    发现一个不错的网站,转载一篇文章方便查看 转自 http://www.linuxdot.net/bbsfile-3354   ===================================== ...

  6. 让MFC程序隐藏运行界面

    在MFC中隐藏运行界面确实花花点功力. 针对对话框程序,一种不是很好地实现方法是在OnPaint函数中添加如下代码: CWnd::ShowWindow(SW_HIDE); 添加后执行会发现屏幕会闪烁一 ...

  7. 利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开(转)

    源:利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开 //---------------------------------------------------------------- ...

  8. PowerShell执行脚本时“系统上禁止运行脚本”问题解决

    PowerShell执行脚本策略错误 错误信息:PowerShell运行脚本错误--"系统上禁止运行脚本" 原因:默认执行策略为Restricted 解决:执行Set-Execut ...

  9. npm run dev 在Linux上持久运行

    关于node.js应用程序如何持久运行,我在node.js服务端程序在Linux上持久运行用过. 这次主要是针对是一个vue.js应用程序. vue.js应用程序通常运行命令是npm run dev. ...

随机推荐

  1. PAT (Advanced Level) 1085. Perfect Sequence (25)

    可以用双指针(尺取法),也可以枚举起点,二分终点. #include<cstdio> #include<cstring> #include<cmath> #incl ...

  2. Linux内核源代码目录树结构

    Linux内核源代码目录树结构. arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录.和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分).mm(内 ...

  3. Freertos之系统配置

    Freertos之系统配置 http://blog.csdn.net/liyuanbhu/article/details/7912170/

  4. MAC使用GITHUB

    作者:珊姗是个小太阳链接:https://www.zhihu.com/question/20070065/answer/79557687来源:知乎著作权归作者所有,转载请联系作者获得授权. #什么是 ...

  5. 11.10document对象练习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. ios开发环境配置及cordova安装与常用命令

    一.ios开发环境配置 1.首先要有台Mac Book,如果有Mac Book,跳过步骤2.3.4,如果没有,执行步骤2.3.4: 2.下载并安装VMware Workstation,最好是下最新版本 ...

  7. SQL 复习二(数据查询语言)

    1.1 数据查询语言 DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECT selection_list /*要查询的列名称*/ FR ...

  8. [iOS Animation]-CALayer 视觉效果

    视觉效果 嗯,圆和椭圆还不错,但如果是带圆角的矩形呢? 我们现在能做到那样了么? 史蒂芬·乔布斯 我们在第三章『图层几何学』中讨论了图层的frame,第二章『寄宿图』则讨论了图层的寄宿图.但是图层不仅 ...

  9. mysql trouble shooting---- 从库停止同步lock_wait_timeout_exceeded_try_restarting_transaction

    问题描述: 数据库从库停止同步. 问题分析: show slave status\G;(也可使用show full processlist) 显示 某个update语句出错,Lock wait tim ...

  10. UVa11555 - Aspen Avenue

    今晚CF GYM A题,神坑.. 原题: Aspen Avenue ``Phew, that was the last one!'' exclaimed the garden helper Tim a ...