资源简介
使用VC++6.0做开发工具, 采用简单的SDI框架结构 ,一次处理一幅位图(有兴趣的可以作成MDI)
1)位图信息的数据是从左下往右下为一行,一行一行往上排的。
2)每行像素应该是4的倍数,不足的地方用空点补齐,读的时候注意跳过冗余点。
3)主要数据都存在Doc里面,BMP的主要数据存在一个由ImgData指向的BYTE型的内存空间(根据位图的大小,动态分配的)。
4)数据读进来以后,注
意向内存中贴图,以保证刷新的效率。
5)程序执行流程
应用程序生成--》打开--》CDipView的OnFileOpen 函数--》
调用CDipDoc的FileOpen 函数--》并使用myDoc->UpdateAllViews(NULL); 刷新
自动调用CDipView的OnPaint函数--》调用CDipView的OnDraw函数----一个像素点一个像素点的画
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
比较重要的地方
读BMP文件,只能打开256色 (可以是灰度)
显示和内存贴图技术
关于调色板: 调色板实际上是一个数组,4个BYTE 分别是 B,G,R,和 Reserved
每一个像素点都有一个相应的数组。
关于VC和windows 的绘图机制:
使用GDI(图形设备接口)对象,通常使用CDC 类,CPaintDC也一样(device-context)设备上下文
windows下的MFC编程机制,消息驱动,事件等待!
全局的app(应用程序对象)
注意 手工分配内存的清除 和CDC对象的删除 以释放系统的GDI资源
每一个new操作符都要对应一个delete
虽然已经弄出来了,还是希望大家好好读读源程序。
你们以后的工作:
在菜单中添加菜单项,通过ClassWizzard 生成消息响应函数(当然也可手动添加),
所有的操作应当是对 BYTE* ImgData;进行的。
在完成相应的功能后 将 isnewfile 和 isnewiamge 置为真 ,并使用myDoc->UpdateAllViews(NULL); 刷新
当然,可以更加有个性化一点,有能力的同学可以自己完成。
随着课程的进行,菜单功能逐渐丰富,最后完成基本的数字图像处理的功能,而不必最后一下完成一个大的作业。
代码片段和文件信息
// AnnBP.cpp: implementation of the CAnnBP class.
//
//////////////////////////////////////////////////////////////////////
#include “StdAfx.h“
#include “AnnBP.h“
#include “math.h“
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CAnnBP::CAnnBP()
{
eta1=0.3;
momentum1=0.3;
}
CAnnBP::~CAnnBP()
{
}
double CAnnBP::drnd()
{
return ((double) rand() / (double) BIGRND);
}
/*** 返回-1.0到1.0之间的双精度随机数 ***/
double CAnnBP::dpn1()
{
return (double) (rand())/(32767/2)-1;
}
/*** 作用函数,目前是S型函数 ***/
double CAnnBP::squash(double x)
{
return (1.0 / (1.0 + exp(-x)));
}
/*** 申请1维双精度实数数组 ***/
double* CAnnBP::alloc_1d_dbl(int n)
{
double *new1;
new1 = (double *) malloc ((unsigned) (n * sizeof (double)));
if (new1 == NULL) {
AfxMessageBox(“ALLOC_1D_DBL: Couldn‘t allocate array of doubles\n“);
return (NULL);
}
return (new1);
}
/*** 申请2维双精度实数数组 ***/
double** CAnnBP::alloc_2d_dbl(int m int n)
{
int i;
double **new1;
new1 = (double **) malloc ((unsigned) (m * sizeof (double *)));
if (new1 == NULL) {
AfxMessageBox(“ALLOC_2D_DBL: Couldn‘t allocate array of dbl ptrs\n“);
return (NULL);
}
for (i = 0; i < m; i++) {
new1[i] = alloc_1d_dbl(n);
}
return (new1);
}
/*** 随机初始化权值 ***/
void CAnnBP::bpnn_randomize_weights(double **w int m int n)
{
int i j;
for (i = 0; i <= m; i++) {
for (j = 0; j <= n; j++) {
w[i][j] = dpn1();
}
}
}
/*** 0初始化权值 ***/
void CAnnBP::bpnn_zero_weights(double **w int m int n)
{
int i j;
for (i = 0; i <= m; i++) {
for (j = 0; j <= n; j++) {
w[i][j] = 0.0;
}
}
}
/*** 设置随机数种子 ***/
void CAnnBP::bpnn_initialize(int seed)
{
CString msgs;
msg=“Random number generator seed:“;
s.Format(“%d“seed);
AfxMessageBox(msg+s);
srand(seed);
}
/*** 创建BP网络 ***/
BPNN* CAnnBP::bpnn_internal_create(int n_in int n_hidden int n_out)
{
BPNN *newnet;
newnet = (BPNN *) malloc (sizeof (BPNN));
if (newnet == NULL) {
printf(“BPNN_CREATE: Couldn‘t allocate neural network\n“);
return (NULL);
}
newnet->input_n = n_in;
newnet->hidden_n = n_hidden;
newnet->output_n = n_out;
newnet->input_units = alloc_1d_dbl(n_in + 1);
newnet->hidden_units = alloc_1d_dbl(n_hidden + 1);
newnet->output_units = alloc_1d_dbl(n_out + 1);
newnet->hidden_delta = alloc_1d_dbl(n_hidden + 1);
newnet->output_delta = alloc_1d_dbl(n_out + 1);
newnet->target = alloc_1d_dbl(n_out + 1);
newnet->input_weights = alloc_2d_dbl(n_in + 1 n_hidden + 1);
newnet->hidden_weights = alloc_2d_dbl(n_hidden + 1 n_out + 1);
newnet->input_prev_weights = alloc_2d_dbl(n_in + 1 n_hidden + 1);
newnet->hidden_prev_weights = alloc_2d_dbl(n_hidden + 1 n_out + 1);
return (newnet);
}
/* 释放BP网络所占地内存空间 */
void CAnnBP::bpnn_free(BPNN *net)
{
int n1 n2 i;
n1 = net->
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11579 2004-06-02 12:08 opencv车牌识别系统2018\AnnBP.cpp
文件 2971 2004-06-02 11:54 opencv车牌识别系统2018\AnnBP.h
文件 20020 2004-06-14 01:40 opencv车牌识别系统2018\char.bp
文件 1456 2004-06-05 15:26 opencv车牌识别系统2018\CharView.cpp
文件 1547 2004-06-05 15:26 opencv车牌识别系统2018\CharView.h
文件 24900 2004-06-14 01:40 opencv车牌识别系统2018\char_num.bp
文件 1232 2004-06-14 01:40 opencv车牌识别系统2018\chdata.ch
文件 50212 2009-11-22 12:55 opencv车牌识别系统2018\Debug\AnnBP.obj
文件 0 2009-11-22 12:55 opencv车牌识别系统2018\Debug\AnnBP.sbr
文件 7048 2009-11-22 12:59 opencv车牌识别系统2018\Debug\BuildLog.htm
文件 33902 2009-11-22 12:55 opencv车牌识别系统2018\Debug\CharView.obj
文件 0 2009-11-22 12:55 opencv车牌识别系统2018\Debug\CharView.sbr
文件 31803 2009-11-22 12:55 opencv车牌识别系统2018\Debug\DigitClass.obj
文件 0 2009-11-22 12:55 opencv车牌识别系统2018\Debug\DigitClass.sbr
文件 5901312 2009-11-22 12:59 opencv车牌识别系统2018\Debug\dip.bsc
文件 2048 2009-11-22 12:55 opencv车牌识别系统2018\Debug\dip.exe.em
文件 35863 2009-11-22 12:55 opencv车牌识别系统2018\Debug\dip.obj
文件 16515072 2009-11-22 12:55 opencv车牌识别系统2018\Debug\dip.pch
文件 0 2009-11-22 12:55 opencv车牌识别系统2018\Debug\dip.sbr
文件 51642 2009-11-22 12:55 opencv车牌识别系统2018\Debug\dipDoc.obj
文件 0 2009-11-22 12:55 opencv车牌识别系统2018\Debug\dipDoc.sbr
文件 0 2009-11-22 12:59 opencv车牌识别系统2018\Debug\dipView.sbr
文件 22892 2009-11-22 12:55 opencv车牌识别系统2018\Debug\GreyDlg.obj
文件 0 2009-11-22 12:55 opencv车牌识别系统2018\Debug\GreyDlg.sbr
文件 36504 2009-11-22 12:55 opencv车牌识别系统2018\Debug\MainFrm.obj
文件 0 2009-11-22 12:55 opencv车牌识别系统2018\Debug\MainFrm.sbr
文件 18801 2009-11-22 12:55 opencv车牌识别系统2018\Debug\Mdlg.obj
文件 0 2009-11-22 12:55 opencv车牌识别系统2018\Debug\Mdlg.sbr
文件 21613 2009-11-22 12:55 opencv车牌识别系统2018\Debug\RecvChar.obj
文件 0 2009-11-22 12:55 opencv车牌识别系统2018\Debug\RecvChar.sbr
............此处省略66个文件信息
相关资源
- OpenCV_MFC_版本1.0.1
- OpenCV_MFC_版本1.0
- opencv MFC 摄像头 人脸识别
- 实用的角度识别OPENCV
- opencv结合MFC进行人脸检测
- 基于opencv的傅里叶描述子VC++代码
- 简单的OpenCV实现摄像头实时显示和视
- Mastering Opencv3英文第二版
- Opencv+MFC框架图像处理
- opencv之数字识别
- grabcut的c++源代码
- 遥感图像拉伸代码
- 车牌识别 openCV mfc BP神经网络
- 基于VC++与OpenCV的圆心坐标提取
- vc下的sift程序
- 用openCV实现图像灰度化并保存,MFC实
- OpenCV多通道图像混合程序 by浅墨
- 经典手眼标定算法C++代码
- OpenCV打开图片和网络摄像头(C++)
- python3.x Opencv Toturial
- 利用MFC和OpenCV实现的图片浏览器,支
- SURF特征点检测 程序 by浅墨
- OpenCV图片翻转(重映射)程序 by浅墨
- OpenCV检测图片中的角点程序 by浅墨
- OpenCV直线检测程序 by浅墨
- OpenCV高级形态学程序 by浅墨
- OpenCV滚动条的创建程序 by浅墨
- OpenCV调整图片对比度&亮度 程序 by浅墨
- 基于OpenCV的步态能量图源代码GEI Gai
- 非线性滤波
评论
共有 条评论