MFC之 图形处理 灰度值(圆实现)

C++ MFC打开图片并进行二值化和灰度处理 C++ MFC打开图片并进行二值化和灰度处理 一、新建一个MFC工程,添加两个picture控件和一个按钮控件。 二、添加变量 1、为两个picture控件添加control变量,类型为CStatic,变量名分别为m_picture1和m_picture2. 2、两个picture空间的ID修改成不一样的 3、添加保存图片路径和名称变量,CString类型,变量名strFilePath,strFileName 三、打开图片 1、双击“打开图片”按钮进入消息映射函数,添加以下代码: CFileDialog 阅读详情

MFC有四大类,View类是在框架类之上,所以如果你需要实现画面显示之类的,就只能在VIEW类中响应. 而Doc类是用于存储数据管理的类,他们是关联关系,Doc类储存,View类显示。

另外App类和Doc类都是从CCmdTarget类派生而来,所以只能接收命令消息和控件通知消息,View类与Frame框架类都是从CWnd类派生所以能够接收命令消息和控件通知消息还有windows消息三种消息.
对于三种消息,期响应的顺序是这样的: 首先由框架类接收到该消息,框架类将该消息递交给其子窗口View类,如果View类没有对该消息进行响应,则由View类递交给Doc类,如果Doc类也没有对该消息进行响应,那么它回再次将该消息回交给View类,View类再回交给Frame框架,框架检查自己是否对该消息有相应的处理函数,如果没有则递交给App类,如果App类也没有则由Windows系统自己处理。

下面开始介绍 圆的实现:
step 1 : 创建按钮消息,用于实现圆的显示;
这里写图片描述
这里写图片描述
/*由于我已经做好的代码,所以上面只是显示的是做好的;确定按钮函数OnButtondo()

void CMy456View::OnButtondo()
{
    CMy456Doc* pDoc = GetDocument();  // 关联Doc类
    pDoc->MakeCircle();  //  创建Doc类的函数 MakeCircle()
    Invalidate(FALSE);
}

step 2: CMy456Doc.h 中创建函数,还有声明变量

int PicArray[256*256];   //  显示窗口的大小
void MakeCircle();    //  

CMy456Doc.cpp 在Doc类中实现函数

void CMy456Doc:: MakeCircle()
{
    for(int n = 0; n < 256 * 256; n++)
    {
        PicArray[n] = 0;  // 初始化,画面背景为黑色
    }
    for(int y = 0; y < 256; y++)
    {
        for(int x = 0; x < 256; x++)
        {
            //灰度值0~256, 然后我们要画一个半径为1的圆,后面的-1.0是圆的位置为正中间;
            double xx = ((double)x) * 2.0 / 256 - 1.0;
            double yy = ((double)y) * 2.0 / 256 - 1.0;  
            double rr = sqrt(xx * xx + yy * yy); // 圆半径公式,已经要记得声明 include<match.h>
            if(rr < 0.5)
            {
                PicArray[y * 256 + x]  = 256; //  白色, 有点不理解
            }
            else
            {
                PicArray[y * 256 + 1] = 0;  // 黑, 里面元素数有点理解
            }
        }
    }
}

step 3 CMy456View.cpp 显示图像

void CMy456View::OnDraw(CDC* pDC)
{
    CMy456Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // TODO: add draw code for native data here
    for(int y = 0; y < 256; y++)
    {
        for(int x = 0; x < 256; x++)
        {
            int value = pDoc->PicArray[y*256 +x];
            pDC->SetPixel(x, y, RGB(value,value,value));

        }
    }
}

这里写图片描述

初始化的背景是黑色的; 然后圆设置的颜色是255, 白的; 其他为0,黑色;

MFC初学系列2——画 本文不讨论WIN基本框架的生成。 1.创建单文档应用程序;2.添加对话框;3.设置各自的ID和消息函数;4.分析:利用MFC框架生成一个基本应用程序;点击菜单——》对话框;设置默认的半径和生成一个对话框;获取半径;在视图中利用ondraw()绘制一个形;5.代码片段; 点击菜单下栏目的输入半径菜单;void CMyCirleView::On 阅读详情

相关推荐

MFC实现灰度直方图(附完整源码

MFC实现灰度直方图(附完整源码

希望我的博客,能帮上你解决学习中工作中所遇到的问题 626

将彩色图片转换为灰度图片mfc实现

通过mfc读入bmp图片,然后转化为灰度图片。并进行与原图片对比,也与知识灰度图片对比效果

MFC绘制灰度地图(附完整源码

MFC绘制灰度地图(附完整源码

希望我的博客,能帮上你解决学习中工作中所遇到的问题 748

MFC灰度化以及二值化

可以读取打开一般格式的图像,显示,并进行最基础的灰度化算法以及二值化算法。聚类还有待添加,。

MFC实现灰度图像处理(附完整源码

MFC实现灰度图像处理(附完整源码

希望我的博客,能帮上你解决学习中工作中所遇到的问题 415

MFC几种简单的灰度线性变换

1、,建立一个ImageProcessing Wizard工程; 2、选择菜单里的工程->设置,选择C/C++选项卡,分类下拉条里选择Code Generation,然后在Struct member alignment中选择1 Byte; 3、通过CBmp类读入bmp文件; 4.给C~Dlg类添加一个成员变量CBmp* bmp; 5.在OninitDialog()内添加代码 :bmp=new CBmp; bmp->load_bmp(“C:\cat.bmp”); 6.之后,读取原图、彩色图像灰度化

飞花舞者的博客 656

VS2010 VC++MFC打开图像并且灰化处理

VS2010 VC++MFC打开图像并且灰化处理 转载自:link. 因为原文代码调试的时候有些问题,所以自己添加和屏蔽了几条代码然后就能正常显示图片并灰化了(添加变量与作者原文一致) 第一处问题是因为vector未声明定义,得加上头文件#include “vector” ;和using namespace std; 第二处是image.Destroy(),此处把第一张图片释放了,所以在第二个picture内不会显示图像,把这句直接屏蔽,然后就能显示灰化后的图像了。 //void CUI2Dlg::OnB

Two1ce的博客 650

【OpenCV】学习笔记(一):OpenCV4.5.5文件介绍

最近项目需要,需要做视觉相关的处理,所以学习一些关于OpenCV的知识,通过VS2019的MFC开发+OpenCV4来建立上位机对数字图像和视频进行处理。本篇博客主要介绍OpenCV4.5.5的文件系统各个功能,OpenCV实际是一个开源库,所以有必要对其中所有文件的功能进简单介绍,帮助使用者能够更好地调用OpenCV库。...

weixin_52988524的博客 5192

直方图均衡化与规定化

原文地址:直方图均衡化与规定化作者:云梦之殇 直方图均衡化 直方图均衡化是灰度变换的一个重要应用,它高效且易于实现,广泛应用于图像增强处理中。图像的像素灰度变化是随机的,直方图的图形高低不齐,直方图均衡化就是用一定的算法使直方图大致平和。 均衡化处理后的图象只能是近似均匀分布。均衡化图象的动态范围扩大了,但其本质是扩大了量化间隔,而量化级别反而减少了,因此,原来灰度不同的象素经处理后可能变

SUNJDL的博客 9359

项目【MFC】总结(三)——图像灰度化/彩色化

关于界面左边的按钮事件 “上一帧”、“下一帧”、“跳转至”以及三个“编辑框显示”的功能比较简单,这里就不在记录了。需要注意的是,变量命名一定要规范,这样自己就不容易混乱。比如,原始读入的图像为Img,当前帧为Current_Img,调整帧号为Goto_farme_num等。 这一次记录一下右边的【彩色化】和【灰度化】功能,可能更加偏向图像方面而非MFC了。 灰度化 /彩色化 很简单,灰度化就是将读入的图像直接显示,这里涉及到数组转图像(Vector->Mat)。 数组转图像代码如下: ..

小武的博客 1554

mfc画图程序源代码_(初心者向け)Image Processing 图像处理程序设计

一. 程序概况程序名称:Xin's Image Processing现版本 : .ver 1.72设计环境:WIN32程序功能:完成基本的图像处理基本功能实现设计者 :ZwqXin完成用时:数不清的日夜经历版本: .ver 1.0 完成程序构架的设计,主窗口界面布局的设计,完成BMP文件操作类OperateBMP,实现8BIT, 16BIT, 24BIT, 32BIT图片的读入,显示与保存...

weixin_39940714的博客 809

求取形区域内的平均灰度值

求取形区域内的平均灰度值

KangHui的专栏 8443

C语言灰度图像差比和求边界,一种求取图像中规则心的方法

一种求取图像中规则心的方法【技术领域】[0001] 本发明涉及计算机视觉领域,特别涉及一种求取图像中规则心的方法。【背景技术】[0002] 相机标定、红外放疗定位、光路设计与测试都会用到球形标准体,球体成像在畸变 不大的情况下可以认为是形,形光斑中心求取关系到这些工程基础精度的问题,同时 随着计算机视觉的发展,这类问题显得越来越重要,因此形光斑中心求取问题有着非常 重要的意义。[...

weixin_36397104的博客 965

【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理详解...

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程《数字图像处理》及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片点运算处理,包括图像灰度线性变换、灰度非线性变换、图像阈值化处理、图像均衡化处理等知识,并结合前一篇论文灰度直方图进行展示 。同时文章比较详细基础,希望该篇文章对你有所帮助,尤其是...

weixin_33892359的博客 1455

MFC实现图像灰度、采样和量化功能详解

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程《数字图像处理》及课件进行讲解,主要通过MFC单文档视图实现显示BMP格式图片,并通过Bitmap进行灰度处理、图片采样和量化功能。         个人认为对初学者VC++6.0可能还是很值得学习的工具,所以采用它来讲解,而不是VS或C#。同时文章比较详细基础,希望该篇文章对你有所帮助~        【数字图像处...

ywxk1314的博客 2959

一种简单高效的灰度图画方法——使用MATLAB实现每个像素点只计算一次就把画出来

本文实现了一种简单高效的灰度图画方法,可以用最少的计算次数,在不遍历每一点的情况下绘制一个指定线条宽度的形,同时也有直线绘制的实现。本程序很轻松就可以移植到嵌入式设备上,对C/C++实现比较友好,想必可以在有显示需求的设备上达到不错的效果。

小涛29的博客 2314

灰度图上用opencv circle画形掩膜

import cv2 import numpy as np imgName = '/home/zhongjia/plasmabubble/data/lvbo_XLT_ASA01_IIT_L01_STP_20180120104123__rot180.png' img = cv2.imread(imgName,2) ####图像是uint16 ,flag = 2, 原深度, 1通道灰度图 print(type(img),img.shape,img.dtype,img) # 展示原图 #cv2.i...

zhuiyuanzhongjia的博客 3626

手把手教你建立绘制形的MFC项目

0.说明 第一次接触的朋友通过实践此教程可以初步掌握建立MFC项目绘制基本图形的方法,本教程实现了正真意义上的手把手教,所以有些繁琐,但对于初学者来说是件好事。 先学会建立项目,在学会搭建自己想要的界面,最后是算法设计与实现 本教程重心在于前两步,先一步一步做出个可运行的壳出来,这对我们继续学习会有更大的信心与成就感哟 建议渴望快速掌握的你拿起电脑,一步一步跟着做,效果会更好哟,我会将原项目代码...

努力做个书呆儿 2万+
上一篇: 文件打开
下一篇: 平面坐标, 极坐标 复数以及欧拉公式
qq932827310
博客等级 码龄9年 44粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值