资源简介
VS2017最新版MFC以及Opencv3.4,在对话框中打开摄像头并有手动截图功能,例程能跑起来的前提是你已经配置好了opencv的开发环境,配置步骤网上多的一笔,这里不给了。
代码片段和文件信息
void zzc::MatToCImage(Mat& mat CImage& cimage)
{
if (0 == mat.total())
{
return;
}
int nChannels = mat.channels();
if ((1 != nChannels) && (3 != nChannels))
{
return;
}
int nWidth = mat.cols;
int nHeight = mat.rows;
//重建cimage
cimage.Destroy();
cimage.Create(nWidth nHeight 8 * nChannels);
//拷贝数据
uchar* pucRow; //指向数据区的行指针
uchar* pucImage = (uchar*)cimage.GetBits(); //指向数据区的指针
int nStep = cimage.GetPitch(); //每行的字节数注意这个返回值有正有负
if (1 == nChannels) //对于单通道的图像需要初始化调色板
{
RGBQUAD* rgbquadColorTable;
int nMaxColors = 256;
rgbquadColorTable = new RGBQUAD[nMaxColors];
cimage.GetColorTable(0 nMaxColors rgbquadColorTable);
for (int nColor = 0; nColor < nMaxColors; nColor++)
{
rgbquadColorTable[nColor].rgbBlue = (uchar)nColor;
rgbquadColorTable[nColor].rgbGreen = (uchar)nColor;
rgbquadColorTable[nColor].rgbRed = (uchar)nColor;
}
cimage.SetColorTable(0 nMaxColors rgbquadColorTable);
delete[]rgbquadColorTable;
}
for (int nRow = 0; nRow < nHeight; nRow++)
{
pucRow = (mat.ptr(nRow));
for (int nCol = 0; nCol < nWidth; nCol++)
{
if (1 == nChannels)
{
*(pucImage + nRow * nStep + nCol) = pucRow[nCol];
}
else if (3 == nChannels)
{
for (int nCha = 0; nCha < 3; nCha++)
{
*(pucImage + nRow * nStep + nCol * 3 + nCha) = pucRow[nCol * 3 + nCha];
}
}
}
}
}
void zzc::CImageToMat(CImage& cimage Mat& mat)
{
if (true == cimage.IsNull())
{
return;
}
int nChannels = cimage.GetBPP() / 8;
if ((1 != nChannels) && (3 != nChannels))
{
return;
}
int nWidth = cimage.GetWidth();
int nHeight = cimage.GetHeight();
//重建mat
if (1 == nChannels)
{
mat.create(nHeight nWidth CV_8UC1);
}
else if (3 == nChannels)
{
mat.create(nHeight nWidth CV_8UC3);
}
//拷贝数据
uchar* pucRow; //指向数据区的行指针
uchar* pucImage = (uchar*)cimage.GetBits(); //指向数据区的指针
int nStep = cimage.GetPitch(); //每行的字节数注意这个返回值有正有负
for (int nRow = 0; nRow < nHeight; nRow++)
{
pucRow = (mat.ptr(nRow));
for (int nCol = 0; nCol < nWidth; nCol++)
{
if (1 == nChannels)
{
pucRow[nCol] = *(pucImage + nRow * nStep + nCol);
}
else if (3 == nChannels)
{
for (int nCha = 0; nCha < 3; nCha++)
{
pucRow[nCol * 3 + nCha] = *(pucImage + nRow * nStep + nCol * 3 + nCha);
}
}
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-04 16:27 Camera2\
目录 0 2018-04-04 09:15 Camera2\.vs\
目录 0 2018-04-04 09:15 Camera2\.vs\Camera\
目录 0 2018-04-10 10:52 Camera2\.vs\Camera\v15\
文件 44544 2018-04-10 10:52 Camera2\.vs\Camera\v15\.suo
文件 87093248 2018-04-10 10:52 Camera2\.vs\Camera\v15\Browse.VC.db
目录 0 2018-04-04 14:03 Camera2\.vs\Camera\v15\ipch\
文件 135135232 2018-04-10 10:51 Camera2\.vs\Camera\v15\ipch\70d0155568924191.ipch
目录 0 2018-04-10 10:52 Camera2\.vs\Camera\v15\ipch\AutoPCH\
目录 0 2018-04-10 10:51 Camera2\Camera\
文件 109376 2018-04-10 10:51 Camera2\Camera\Camera.aps
文件 4126 2018-04-04 09:15 Camera2\Camera\Camera.cpp
文件 800 2018-04-04 09:15 Camera2\Camera\Camera.h
文件 11350 2018-04-10 10:51 Camera2\Camera\Camera.rc
文件 10489 2018-04-04 11:05 Camera2\Camera\Camera.vcxproj
文件 2347 2018-04-04 11:05 Camera2\Camera\Camera.vcxproj.filters
文件 229 2018-04-04 14:20 Camera2\Camera\Camera.vcxproj.user
文件 10810 2018-04-10 10:51 Camera2\Camera\CameraDlg.cpp
文件 1876 2018-04-04 16:49 Camera2\Camera\CameraDlg.h
文件 6540 2018-03-30 11:25 Camera2\Camera\CvvImage.cpp
文件 1586 2018-03-30 11:27 Camera2\Camera\CvvImage.h
目录 0 2018-04-04 09:15 Camera2\Camera\res\
文件 67777 2018-02-17 16:43 Camera2\Camera\res\Camera.ico
文件 668 2018-04-04 09:15 Camera2\Camera\res\Camera.rc2
文件 598 2018-02-17 16:43 Camera2\Camera\res\Toolbar.bmp
文件 2994 2018-02-17 16:43 Camera2\Camera\res\Toolbar256.bmp
文件 1874 2018-04-04 16:33 Camera2\Camera\resource.h
文件 222 2018-04-04 09:15 Camera2\Camera\stdafx.cpp
文件 2912 2018-04-04 09:15 Camera2\Camera\stdafx.h
文件 370 2018-04-04 09:15 Camera2\Camera\targetver.h
目录 0 2018-04-04 10:15 Camera2\Camera\x64\
............此处省略33个文件信息
相关资源
- 基于MFC OpenCV条码识别
- MFC实现串口通信16进制发送接收
- C++编程思想两卷合订本.pdf 电子书(完
- 中国象棋 陶善文源码 VC++2013 MFC 游戏
- MFC绘图软件
- 基于MFC海康威视摄像头Demo含抓图显示
- MFC下写的一个基于TCP的聊天室程序
- VS MFC 聊天程序
- win32 API函数 MFC函数 msdn中文文档
- MFC鼠标中键拖动、同时滚轮缩放根据
- MFC绘图程序
- 基于VS2017编写的MFC职工工资管理系统
- 《MFC.Windows程序设计(第2版)修订版
- MFC+SQL Server 2014搭建高校教师信息管理
- 基于VS2015的MFC的多线程同步套接字网
- 基于vs mfc的井字棋游戏代码
- mfcc特征提取,c++代码实现
- MFC函数库手册中文版)
- 基于MFC做的简单的二维CAD软件
- 精通MFC程序设计(全本)
- IEC104从站 C++源码 可以直接编译使用
- MFC 实现 图片的拖动 放大缩小和区域
- 基于MFC的多人聊天室
- C++、MFC连接MYSQL实现增删改查
- vc_mbcsmfc
- MFC 使用Opencv调用摄像头并显示画面,
- haar分类器人脸检测MFC实现
- 基于SQL vs2013的学生成绩管理系统
- OpenGL+MFC三维绘图
- MFC界面 8数码A星算法
评论
共有 条评论