问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁能帮我解决一个vc的问题

发布网友 发布时间:2022-04-23 23:21

我来回答

4个回答

热心网友 时间:2023-10-13 11:17

太巧了,我正好在做面部识别的项目。不久前也遇到了你所说的问题,但是我刚刚解决了一部分,下面的程序是我自己写的,能检测驱动,但检测不到不会提示错误。搜索和识别算法也是我自己的,目前只能识别瞳孔,鼻孔和眉毛,但那些就不能告诉你了。
视频驱动部分:

下面的代码适用于新建一个基于对话框的视频图像处理模式识别程序VideoCapture。其中部分程序如下:
//头文件部分
// VideoCaptureDlg.cpp : implementation file
//

#include "stdafx.h"
#include "VideoCapture.h"
#include "VideoCaptureDlg.h"
#include "vfw.h"
#pragma comment(lib,"vfw32")
#include<string.h>
#include "PointsOperation.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

////////////////////////*自定义回调函数部分,采用硬盘的文件操作,用于检验中间过程,你也可直接从内存操作*/
LRESULT CALLBACK FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)
{
FILE *in,*in1;//,*in2;
char *TempChar="E:\\1.txt";
int j;
int min=0;
int mybisize=mybiwidth*mybiheight*2;

unsigned char *p;
p=lpVHdr->lpData;
capFileSaveDIB(m_hWndVideo,"E:\\1.bmp");
in=fopen(TempChar,"w");

unsigned short points[640*3][480*3]={0};
int PX=0,PY=0;
for(PY=0,j=0;PY<=480*3-1;PY++){
for(PX=0;PX<=640*3-1;PX++,j++)
points[PX][PY]=p[j];
}
capFileSaveDIB(m_hWndVideo,"E:\\1.bmp");
for(PY=0;PY<=480*3-1;PY++){
for(PX=0;PX<=640*3-1;PX++)fprintf(in,"%d ",points[PX][PY]);

}

fclose(in);
}
return (LRESULT) TRUE ;
}

////////////////////////

///////////////////////

///////////////////////
BOOL CVideoCaptureDlg::OnInitDialog()//初始化
{
capGrabFrame(m_hWndVideo);//调用回调函数

CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu* pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}
}
SetIcon(m_hIcon,TRUE);
SetIcon(m_hIcon,FALSE);
m_hWndVideo=capCreateCaptureWindow(NULL,WS_POPUP,1,1,100,100,m_hWnd,0);//创建预览窗口

//////////////设置相关参数(视频预览时的参数并不因此改变)
// CAPTUREPARMS CaptureParms;
// float FramesPerSec = 15.0;//录制时每秒帧数预设
// capCaptureGetSetup(m_hWndVideo, &CaptureParms, sizeof(CAPTUREPARMS));//获取原设置参数
// CaptureParms.fStepCaptureAt2x=TRUE;
// CaptureParms.dwRequestMicroSecPerFrame = (DWORD) (1.0e6 /FramesPerSec);//变更新参数
// int FramePSec=CaptureParms.dwRequestMicroSecPerFrame/1000;//参数单位转换
// capCaptureSetSetup(m_hWndVideo, &CaptureParms, sizeof (CAPTUREPARMS));//将参数设置成功
//////////////

if(capDriverConnect(m_hWndVideo,0))//连接驱动
{
::SetParent(m_hWndVideo,*this);
::SetWindowLong(m_hWndVideo,GWL_STYLE,WS_CHILD);
capDlgVideoFormat(m_hWndVideo);//调出捕获参数设置窗口
CRect wndRC;
m_Panel.GetClientRect(wndRC);
m_Panel.MapWindowPoints(this,wndRC);
wndRC.DeflateRect(1,1,1,1);
::SetWindowPos(m_hWndVideo,NULL,wndRC.left,wndRC.top,wndRC.Width(),wndRC.Height(),SWP_NOZORDER);
::ShowWindow(m_hWndVideo,SW_SHOW);
capPreviewRate(m_hWndVideo,100);
capPreview(m_hWndVideo,TRUE);
}
//////////////////
capSetCallbackOnFrame(m_hWndVideo, FrameCallbackProc);//注册回调函数于对话框初始化中(定义于初始化前)
BITMAPINFO bmpInfo;
capGetVideoFormat(m_hWndVideo,&bmpInfo,sizeof(BITMAPINFO));//获得bitmap参数
mybiwidth=bmpInfo.bmiHeader.biWidth;
mybiheight=bmpInfo.bmiHeader.biHeight;
//////////////////
//AfxMessageBox("go!");

return TRUE;
}

void CVideoCaptureDlg::OnCancel()
{
capDriverDisconnect(m_hWndVideo);
CDialog::OnCancel();
}

void CVideoCaptureDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CVideoCaptureDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CVideoCaptureDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
我也是新手,刚学VC++才两个月。如果你还有问题可以联系我。QQ:448032116 但我可能会把你拖入黑名单

热心网友 时间:2023-10-13 11:17

建议楼主去写博士论文了,呵呵

最简单的,图像白色的地方就是 脸,脸中又有两个黑色的眼睛^_^

热心网友 时间:2023-10-13 11:18

现实一点吧,百度不是万能的,建议好好利用下学校图书馆的电子资源,学校的电子图书馆对毕业设计是很有用的,出了学校IP访问那些资源都是要收费的

热心网友 时间:2023-10-13 11:18

人脸识别!搞没搞错,我们院长带了几个博士生都研究了很长时间,你一个人就想搞,多叫几个人。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我左腋下下方5厘米左右的肋骨那疼。 没有高血脂和高血糖,血管为什么还是不健康?这个病也不能忽视_百度... 血管硬化会导致高血压吗 美的空调包修期多少年? 动脉硬化的早期信号 脑血管硬化跟高血压有关吗 为什么Excel筛选不能使用自动筛选? 老公长期对我冷暴力三年了又不离婚是什么心态 《完美国际》军衔等级大揭秘介绍_《完美国际》军衔等级大揭秘是什么... 一15Pα与一35pα哪个负压强,哪个负压弱? 你的重要他人有哪些?分别写出他们对你的影响 《影响》作文 关于VC编译器一问题 作文:爷爷,请原谅我。四百字左右? vc构造函数中如何给一个数组赋值 什么是资本市场的PE式腐败? 以“重要他人我感念”为题写作文不超过600字不小于400字 谁是你的重要他人,作文,急需要!!! vc++ 中 struct record *re=per;是什么意思 《重要他人我感念》的作文600字 跪求!!急~~~ 金融里什么叫做“VC”?能举个例子吗? 关于 重要他人300字作文 vc++中,struct record *re=per;是什么意思 VC是什么意思?那PE呢? 作文:我身边的重要他人 思科路由器做pppoe怎么限制用户数? 作文 我的重要他人——王维 VC/PE是什么意思 金融业VC PE是什么意思 什么叫做私募股权融资的PE,VC 语文作文布置抄毕淑敏的散文,求毕淑敏的短篇散文,篇幅要短,越快越好 超简单VC++问题 你的重要他人有哪些? 偏见比无知更可怕作文 生命中的重要他人 音乐的航船读后感作文 体验式作文教学的几点尝试 阅读《谁是你的重要他人》她是我的音乐老师 作文:我与游戏 600字左右 心理学中的“重要他人”概念是哪个提出来的啊? 你认为能对你生活产生影响的重要他人都是谁呢? 如果你能认真回答下面的问题,我将不胜感激! 学JAVA WEB 都学哪些内容? 想要掌握JavaWeb,应该学习那些方面的内容? 我没有开通腾讯视频VIP,微信突然出现自动扣费还说我自动续费????_百度问一问 微信登不上了,腾讯视频自动续费,还会扣费吗,怎么取消?? 昆明有线电视机顶盒,分几种,价格分别是多少? 佛山有线电视机顶盒的价格是多少 如何让电脑每天定时开机,然后定时关机 电脑定时关机怎么弄./? 电脑定时关机?