本人在学习图像处理时使用vs2017中MFC框架编写了相关的图像处理程序,使用的编程语言是c++,而且没有使用Openvc。关于MFC框架的使用请在网上搜索相关视频或者博客学习,下面给出MFC框架,基本的框架已经搭建好,只需要自己添加程序。

附上框架百度云盘资源:

链接:https://pan.baidu.com/s/1naem-uRNQLVhfF-FwY4kmA
注意:使用VS2017打开的时候平台工具集等提示均选择 “无升级”,当然了,如果直接选择默认的选项然后升级也可以,如果出现平台工具集未更新的问题,请百度解决。

话不多说上代码:

1.分辨率降低一半的源程序

//降质两倍
void CImage_ProcessingView::On2times()
{
    // TODO: 在此添加命令处理程序代码
    if (m_Image.IsNull()) return;//判断图像是否为空,如果对空图像进行操作会出现未知的错误
    int w = m_Image.GetWidth();
    int h = m_Image.GetHeight();
    
    for(int m = 0;m<h/2;++m)//计算降质后图像大小
        for (int n = 0; n < w / 2; ++n)
        {
            //取原图上2*2方阵的左上角像素赋值给降质图像的每个像素
            for (int j = 2 * m; j < (2 * m + 2); j++)      
            {
                for (int k = 2 * n; k < (2 * n + 2); k++)
                {

if (j == 2 * m && k == 2 * n)      //其余像素全部设置为白色
                    {
                        m_Image.m_pBits[0][m][n] = m_Image.m_pBits[0][j][k];
                        m_Image.m_pBits[1][m][n] = m_Image.m_pBits[1][j][k];
                        m_Image.m_pBits[2][m][n] = m_Image.m_pBits[2][j][k];

if (k >= h / 2 || j >= w / 2)
                        {
                            m_Image.m_pBits[0][j][k] = 255;
                            m_Image.m_pBits[1][j][k] = 255;
                            m_Image.m_pBits[2][j][k] = 255;
                        }
                    }
                    else
                    {
                        m_Image.m_pBits[0][j][k] = 255;
                        m_Image.m_pBits[1][j][k] = 255;
                        m_Image.m_pBits[2][j][k] = 255;
                    }                
                }
             }
            //取原图上2*2方阵的左上角像素赋值给降质图像的每个像素
        }
          Invalidate(1); //ONDRAW会绘制图像
}

2.处理结果

原图

降质为1/2

降质为1/16

为了便于比较,三幅图像的对话框全部拖动到和原图大小一样大。

3.存在的一点小问题,这样的处理方法会出现非长宽的图像会处理不全面,存在以下地方没有设置为白色,效果不好看。解决的方法是:先计算出应该隔几个像素采样一个,程序中只要按照这样的顺序进行采样就可以,请读者自己实现。

4.下面说一下在框架上添加要实现的图像处理代码的步骤。

1.添加菜单选项

2.修改属性

3.修改ID,使用英文修改,而且要做到命名可以解释对应的作用

4.添加消息处理函数

添加好程序后直接回调转到代码段,在对应的位置添加代码即可。

C++实现降低一幅图像的空间分辨率相关推荐

  1. 图像的空间分辨率和幅度分辨率

    图像的空间分辨率 是每英寸图像内,有多少个像素,分辨率的单位为PPI(Pixels Per Inch),通常叫做:像素每英寸 采样频率越高空间分配率就越大 幅度分辨率 是指在幅度值是离散的时候,每个像 ...

  2. 遥感图像的空间分辨率,光谱分辨率等

    模数转换 模拟图像向数字图像的转换就叫做模数转换. 模数转换由采样和量化2步组成,采样是空间位置的离散化,量化是电磁辐射能量的离散化.下面用一幅图像来展示这个过程. 正因为遥感图像也是一种数字图像,所 ...

  3. 遥感图像的空间分辨率、光谱分辨率、时间分辨率的含义

    空间分辨率 像素单元代表的地面空间范围大小,类比于比例尺. 时间分辨率 重访周期:重复拍摄某一区域所用的时间间隔. 光谱分辨率 接受目标反射回来的波长中,能分辨的最小波长的间隔,间隔越小,分辨率越高.

  4. 机器学习笔记~图像的空间分辨率

    In terms of digital images, spatial resolution refers to the number of pixels utilized in constructi ...

  5. 数字图像处理(4): 遥感影像中 光谱分辨率、空间分辨率、时间分辨率、全色图像、多光谱图像、高光谱图像 的区别

    目录 1 光谱分辨率.空间分辨率.时间分辨率 2 全色图像.多光谱图像.高光谱图像 2.1 全色图像 2.2 多光谱图像 2.3 高光谱图像 参考资料 1 光谱分辨率.空间分辨率.时间分辨率 遥感(R ...

  6. 数字图像处理学习笔记(三)——空间分辨率和灰度分辨率、等偏爱曲线

    数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...

  7. 微信团队分享:视频图像的超分辨率技术原理和应用场景

    为什么80%的码农都做不了架构师?>>>    本文来自微信多媒体团队高欣玮的技术分享. 1.前言 图像和视频通常包含着大量的视觉信息,且视觉信息本身具有直观高效的描述能力,所以随着 ...

  8. OpenCV之core 模块. 核心功能(1)Mat - 基本图像容器 OpenCV如何扫描图像、利用查找表和计时 矩阵的掩码操作 使用OpenCV对两幅图像求和(求混合(blending))

    Mat - 基本图像容器 目的 从真实世界中获取数字图像有很多方法,比如数码相机.扫描仪.CT或者磁共振成像.无论哪种方法,我们(人类)看到的是图像,而让数字设备来"看"的时候,则 ...

  9. 第2章 Python 数字图像处理(DIP) --数字图像基础2 - 图像感知要素 - 图像取样和量化 - 空间分辨率和灰度分辨率

    目录 图像感知与获取 一个简单的成像模型 图像取样和量化 空间分辨率和灰度分辨率 图像感知与获取 一个简单的成像模型 我们用形如 f(x,y)f(x,y)f(x,y) 的二维函数来表示图像.在空间坐标 ...

最新文章

  1. ijcai statistics
  2. 解决maven项目Cannot change version of project facet Dynamic web module to 3.0
  3. 去别人共享目录下拷贝东西,怎么进入别人的机器
  4. 谷歌浏览器如何抓取grpc_前5名:Google分享gRPC,更好的开源UX等
  5. js面试题:创建一个json对象people,并追加属性:姓名、性别、年龄,追加run方法...
  6. 在ORACLE產生001,002的流水號
  7. Eclipse中配置约束(DTD,XSD)
  8. 免费素材下载:一套超棒的免费UI套件
  9. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_16_常用的函数式接口_Function接口中的方法Apply...
  10. jeecg框架表格合计解决方案
  11. 中国各个省市区(县)级联数据
  12. ThoughtWorks面试经历——武汉java开发
  13. spring boot actuator和K8s容器健康检查
  14. [JZOJ 5804] 简单的序列
  15. java中Switch语句的用法
  16. Gitlab回滚到上次提交
  17. Docker搭建STF
  18. html静态商城网页制作 基于HTML+CSS+JavaScript在线服装商城店铺商城设计毕业论文源码
  19. Archlinux下的优秀软件推荐
  20. webgoat靶场复现

热门文章

  1. 【转载】Matlab与C#连接的几种方式比较
  2. ORA-00054问题解决
  3. eclipse安装sdk和adt
  4. wav文件格式分析与详解
  5. Windows 11 修改桌面文件路径
  6. yield 跟 yield * 的区别
  7. 获取本地与服务器地址
  8. 二叉树的遍历(非递归)整理
  9. Jquery 中 ajaxSubmit使用讲解
  10. 街机游戏linux模拟器_适用于Linux的5种街机风格游戏