DynamicImage

DynamicImage是所有受支持的ImageBuffer

类型的枚举。它的确切图像类型是在运行时确定的。它是打开图像时返回的类型。为了方便,动态图像重新实现了所有的图像处理功能。
DynamicImage实现RGBA像素的一般图像特征。

SubImage
以矩形坐标为界的另一幅图像的视图。它用于在图像的子区域上执行图像处理功能。

extern crate image;use image::{GenericImageView, ImageBuffer, RgbImage, imageops};let mut img: RgbImage = ImageBuffer::new(512, 512);
let subimg = imageops::crop(&mut img, 0, 0, 100, 100);assert!(subimg.dimensions() == (100, 100));

这些是在imageops模块中定义的函数。所有函数都对实现GenericImage trait.的类型进行操作。
blur: 模糊:对提供的图像执行高斯模糊。
brighten: 变亮:变亮提供的图像
huerotate:色调将提供的图像按程度旋转
contrast 对比度:调整提供的图像的对比度
crop:裁剪:将一个可变的视图返回到一个图像中
filter3x3:对提供的图像执行一个3x3框式过滤器。
flip_horizontal: 水平翻转:水平翻转图像
flip_vertical:将图像垂直翻转
grayscale: 灰度:将提供的图像转换为灰度
invert: 反转:反转提供的图像中的每个像素。
resize:调整大小:将提供的图像调整到指定的尺寸
rotate180:顺时针旋转图像180度。
rotate旋转270:顺时针旋转图像270度。
rotate90:顺时针旋转图像90度。
unsharpen: 未锐化:对提供的映像执行未锐化掩码

打开和保存图像
image提供用于从路径打开图像的open函数。图像格式由路径的文件扩展名决定。io模块提供了一个提供更多控制的阅读器。

extern crate image;use image::GenericImageView;fn main() {// Use the open function to load an image from a Path.// `open` returns a `DynamicImage` on success.let img = image::open("tests/images/jpg/progressive/cat.jpg").unwrap();// The dimensions method returns the images width and height.println!("dimensions {:?}", img.dimensions());// The color method returns the image's `ColorType`.println!("{:?}", img.color());// Write the contents of this image to the Writer in PNG format.img.save("test.png").unwrap();
}

生成的分形

//! An example of generating julia fractals.
extern crate image;
extern crate num_complex;fn main() {let imgx = 800;let imgy = 800;let scalex = 3.0 / imgx as f32;let scaley = 3.0 / imgy as f32;// Create a new ImgBuf with width: imgx and height: imgylet mut imgbuf = image::ImageBuffer::new(imgx, imgy);// Iterate over the coordinates and pixels of the imagefor (x, y, pixel) in imgbuf.enumerate_pixels_mut() {let r = (0.3 * x as f32) as u8;let b = (0.3 * y as f32) as u8;*pixel = image::Rgb([r, 0, b]);}// A redundant loop to demonstrate reading image datafor x in 0..imgx {for y in 0..imgy {let cx = y as f32 * scalex - 1.5;let cy = x as f32 * scaley - 1.5;let c = num_complex::Complex::new(-0.4, 0.6);let mut z = num_complex::Complex::new(cx, cy);let mut i = 0;while i < 255 && z.norm() <= 2.0 {z = z * z + c;i += 1;}let pixel = imgbuf.get_pixel_mut(x, y);let image::Rgb(data) = *pixel;*pixel = image::Rgb([data[0], i as u8, data[2]]);}}// Save the image as “fractal.png”, the format is deduced from the pathimgbuf.save("fractal.png").unwrap();
}

写原始缓冲区
如果由于图像是通过其他方式获得的,因此不需要高级接口,则image提供save_buffer函数来将缓冲区保存到文件中。

extern crate image;fn main() {let buffer: &[u8] = unimplemented!(); // Generate the image data// Save the buffer as "image.png"image::save_buffer("image.png", buffer, 800, 600, image::ColorType::Rgb8).unwrap()
}

rust(50)-图像(3)相关推荐

  1. Win8 Metro(C#)数字图像处理--2.50图像运动模糊

    原文:Win8 Metro(C#)数字图像处理--2.50图像运动模糊  [函数名称] 图像运动模糊算法    MotionblurProcess(WriteableBitmap src,int  ...

  2. rust(49)-图像(2)

    GenericImage Trait trait,提供操作图像的函数,参数化图像的像素类型. # use image::{Pixel, Pixels}; pub trait GenericImage ...

  3. Canvas绘制图形图像

    <!DOCTYPE html> <html> <head lang="en"><meta charset="UTF-8" ...

  4. css设置背景颜色/背景图像/背景图像平铺/背景图像位置/背景图像固定显示/综合设置元素背景的方法(学习笔记)

    一.设置背景颜色 在CSS当中,网页元素的背景颜色使用background-color属性来设置,和文本颜色的用法类似. 用法 <style>h2{color:red;backround- ...

  5. opencv图像处理之图像平移

    Hellow,我是jack,今天给大家分享的是图像平移.话不多说,让我们直接进入正题. 平移处理要求: 1)保证图像平移的完整性. 2)图像原始信息可能丢失 接下来让我们看下代码怎么实现: //平移操 ...

  6. 2021年50个酷炫的Web和移动项目创意

    2021年50个酷炫的Web和移动项目创意 当想到项目创意时,很多人都在挣扎.这里列出了50个您可以在2021年完成的很棒的项目构想.我将以下列的技术栈为例,以便您弄清楚自己也可以做到这一点.这些应用 ...

  7. opencv中LUT函数实现颜色空间缩减

    opencv 2中的LUT函数为 : void LUT(InputArray src, InputArray lut, OutputArray dst,int   interpolation);  s ...

  8. 【seaborn】(1) 数据可视化,绘图风格、布局

    各位同学好,今天和大家分享一下如何使用 seaborn 库进行数据可视化.在 matplotlib 的基础上进一步美化绘图.主要内容有:默认风格 sns.set(), 主题风格 sns.set_sty ...

  9. Haar小波变换代码实现

    代码1:以图像的形式显示. # include<opencv2/opencv.hpp> # include<iostream> using namespace std; usi ...

最新文章

  1. milp的matlab的案例代码_Matlab神经网络30个案例第1案例代码
  2. 鸿蒙系统2020正式版,鸿蒙2.0来了!华为开发者大会HDC 2020宣布
  3. 玩嗨的 2 亿快手“老铁”和幕后的极致视觉算法
  4. c语言 sd卡编程,嵌入式系统基础 嵌入式系统中的C语言编程基础 烧写Superboot到SD卡.docx...
  5. 朴实无华,总结200道往年BAT机器学习面试题
  6. 亚马逊便携式小空调冷风机英国站UKCA认证测试标准
  7. hdoj 瞬间移动 5698(逆元)
  8. 风袖电商之重构Theme业务对象
  9. Android 汉字转拼音工具
  10. 科普读书会丨《被讨厌的勇气》:愤怒不是目的,是一种工具
  11. PHP单例模式(转载)
  12. 郑小林——“浙大系”隐私计算产学研创新先锋
  13. 【数学建模 | 快速入门(上)】笔记----(P1-P8)
  14. java进阶第二讲-数组、String类
  15. 上载android应用的apk文件变成了zip-网下转载的解决方案
  16. H5调用微信图片显示预览
  17. 后台的作用以及如何设计后台。
  18. .html右键不能打开,10种HTML禁止鼠标右键方法,你知道几种?
  19. 在服务器上搭建 Chevereto 图床
  20. 13_Course Summary_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

热门文章

  1. iOS Safari 中click点击事件失效的解决办法
  2. 【代码笔记】iOS-长条蓝色button
  3. Mac开发环境配置 就喜欢折腾
  4. 《软件架构与设计模式》关于 抽象工厂模式 的一个小例子
  5. DNS 漏洞发现者 Dan Kaminsky 访谈录
  6. Unity 编译apk启动出异常
  7. struts2和springmvc的区别
  8. 浮点数运算的精度问题:以js语言为例
  9. platform 平台驱动——设备的写作流程
  10. excel如何快速实现数据区域的框选