#include<iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;void color_reduce(Mat& image, int x);
void colorReduce3(Mat& image, int div);//将一张图片的像素改为64x64
void colorReduce4(Mat& image, int div);
void colorReduce5(Mat& image, int div);
int main()
{Mat image = imread("大教堂.jpg");resize(image,image,Size(),0.4,0.4);colorReduce5(image,64);imshow("结果",image);waitKey(0);return 0;
}//方法1
void colorReduce1(Mat& image, int div = 64)//将一张图片的像素改为64x64
{//大体思路:将图片中的每个像素的值改为其像素空间中,256/64大小方格中的中间的值。int n1 = image.rows;//图片的行数。int nc = image.cols * image.channels(); //列数乘以图片的通道值。//因为rgb是逐行连续存储的。r   g    b  for (int j = 0; j < n1; j++){uchar* data = image.ptr<uchar>(j);//取图片第j行的首个像素点for (int i = 0; i < nc; i++){data[i] = data[i] / div * div + div / 2;//将此像素值改为其方格中间的像素值。}}
}//方法2 指针法
void colorReduce2(Mat& image, int div = 64)
{int nl = image.rows;int nc = image.cols*image.channels();for (int i = 0; i < nl; ++i){uchar* p = image.ptr<uchar>(i);for (int j = 0; j < nc; ++j){p[j] = p[j] / div * div + div / 2;}}}//方法3 位运算法。
void colorReduce3(Mat& image, int div = 64)
{//由256到64就是位左移动6位。int nl = image.rows;int nc = image.cols * image.channels();int n = 0xff << static_cast<int>(log(static_cast<double>(div)) / log(2.0));//0xff代表了256  for (int i = 0; i < nl; ++i){uchar* p = image.ptr<uchar>(i);for (int j = 0; j < nc; j++){p[j] = p[j] & n + div / 2;}}}//方法3 at()函数法
void colorReduce4(Mat& image, int div = 64)
{int nl = image.rows;int nc = image.cols;for(int i=0;i<nl;i++)for (int j = 0; j < nc; j++){image.at<uchar>(i, j) = image.at<uchar>(i, j) / div * div + div / 2;}}//方法4 向量vector法。
void colorReduce5(Mat& image, int div = 64)
{Mat_<Vec3b>::iterator it = image.begin<Vec3b>();for (; it != image.end<Vec3b>(); ++it){(*it)[0] = saturate_cast<uchar>(((*it)[0]) / div * div + div / 2);(*it)[1] = saturate_cast<uchar>(((*it)[1]) / div * div + div / 2);(*it)[2] = saturate_cast<uchar>(((*it)[2]) / div * div + div / 2);}}

降低图像分辨率的几种方法相关推荐

  1. python 降低图片分辨率的两种方法

    方法1: # 降低图片分辨率 def ResizeImage(filein, fileout,width,height, scale=1):"""改变图片大小:param ...

  2. 【UE虚幻引擎】UE修改分辨率的3种方法

    虚幻引擎作为一款实时3D创作工具,在游戏.建筑.影视动画.虚拟仿真等领域受到全球各行各业创作者广泛欢迎,在UE中获取和设置分辨率也是3D创作开发工作中的常用功能.本文介绍了在虚幻引擎中修改分辨率的3种 ...

  3. Opencv3编程入门学习笔记(三)之访问图像像素的三种方法

    访问图像像素的三种方法:指针访问,迭代器访问,动态地址访问.访问最快的为指针访问,以下算法在几毫秒,但指针访问容易造成内存泄漏:其次为迭代器访问:最后为动态地址访问. 以下程序是根据<OpenC ...

  4. 计算机控制的分辨率,查看笔记本电脑屏幕分辨率的2种方法

    近段时间写了不少笔记本相关技巧文章.本次,就来科普一下笔记本电脑的屏幕直媛试趺纯?这是一个非常简单的笔记本使用小技巧,希望大家喜欢. 笔记本屏幕分辨率怎么看? 对于大家熟悉的Windows操作系统笔记 ...

  5. c语言程序降低图像分辨率,减少OpenCV读取高分辨率图像的时间示例

    意义 目前无论是工业上还是生活中相机的分辨率也会越来越高,无论是学术上还是工业上使用OpenCV进行图像处理,特别是大批量处理的时候,读取一张高分辨率图像到内存中的时间减少的话对大批量的图像处理的效率 ...

  6. 图像颜色校正的几种方法

    9197 转载路径https://blog.csdn.net/liu_xiao_cheng/article/details/50552762 注:本文主要参考"彩色人脸图像颜色校正及其在肝病 ...

  7. 图像清晰度评价15种方法对比

    在无参考图像的质量评价中,图像的清晰度是衡量图像质量优劣的重要指标,它能够较好的与人的主观感受相对应,图像的清晰度不高表现出图像的模糊.本文针对无参考图像质量评价应用,对目前几种较为常用的.具有代表性 ...

  8. MATLAB实现批量处理图像图片的两种方法

    基本上有两个方法:一个是将你的图像统一进行一次重命名如:1.jpg,2.jpg等,然后利用for循环依次进行处理即可,如下面的语句:假设你的图像共有20副: str='D:\做差\好的图像\'; %我 ...

  9. python降低图像分辨率_python如何更改图像像素

    在Python中,可以使用PIL图像处理库来更改图像像素.方法是:1.利用PIL的load函数导入图片:2.size方法获取宽和高度:3.利用getpixel方法获取图像的像素值,putpixel方法 ...

最新文章

  1. 花了两天,终于把 Python 的 setup.py 给整明白了
  2. 栈和队列的区别 | 每日趣闻
  3. c++11中智能指针的原理,使用,实现
  4. 2017届蓝桥杯java_2017第八届蓝桥杯JavaC组决赛(国赛)试题汇总及试题详解-Go语言中文社区...
  5. ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
  6. java使用阿里云oss上传文件测试案例+上传策略包装类
  7. Git(9)-diff
  8. 传输层(知识架构图)
  9. 斗鱼递交私有化退市文件 与虎牙合并暂无完成时间表
  10. markdown 目录缩进_页面排版很难吗?一起来学Markdown吧!01基础语法
  11. windows的libcurl下zlib1.dll问题
  12. 结构型模式概述(Structural Pattern)
  13. PHPSTORM 6.0.3 Xdebug 配置9
  14. 【备忘】于仕琪的libfacedetection相关
  15. 浏览器是如何渲染网页的
  16. 关于在数据库中如何存储时间这件事
  17. Navicat Premium12安装_破解(亲测成功)时间:2019年7月29日
  18. 字体大宝库:20款超细英文字体免费下载
  19. 汽车使用总结(四)--汽车空调怎么开暖气,汽车暖风开关标志图解
  20. 庖丁解牛TLD(五)——井底之蛙啦~

热门文章

  1. 淘宝天天特价怎么做?大神导航,一个神奇的网站,从此开启大神之路!
  2. MATLAB ode45用法
  3. 祛湿颗粒教你如何快速分辨与治疗湿邪
  4. van Emde Boas Trees(vEB树)(Introduction to Algorithms, 算法导论,CLRS)学习笔记
  5. 办公室想装修?玻璃隔断让你的办公区域成为艺术品!
  6. miniPCIe接口CAN卡为工控机快速扩展CAN通道
  7. js 获取get参数方法
  8. python-语音识别
  9. Excel万能读取Util类初级版 ExcelUtil excel读取 Excel万能
  10. genymotion 下载模拟器下n久特别慢无法下载进度为0教你用迅雷下载这些虚拟机多爽啊想暂停就暂停