image - 如何将 DynamicImage 转换为 ImageBuffer?
问题描述
当我运行以下代码时,最后一行会导致此错误:
error[E0308]: mismatched types
--> src\main.rs:25:13
|
25 | box_filter(&img, 5, 5);
| ^^^^ expected struct `ImageBuffer`, found enum `DynamicImage`
|
= note: expected reference `&ImageBuffer<Luma<u8>, Vec<u8>>`
found reference `&DynamicImage`
extern crate image;
extern crate imageproc;
use image::GenericImageView;
use imageproc::filter::box_filter;
fn main() {
println!("Hello, world!");
// Use the open function to load an image from a Path.
// `open` returns a `DynamicImage` on success.
// `unwrap` returns a `panic` when it receives a `None`.
let img = image::open(
"C:/Users/hp/Desktop/Multiprocessor real-time scheduling/Project2/data/aLIEz.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(
"C:/Users/hp/Desktop/Multiprocessor real-time scheduling/Project2/data_output/test.png",
)
.unwrap();
box_filter(&img, 5, 5);
}
我不知道如何将 a 转换DynamicImage
为 anImageBuffer
以便我可以应用过滤器。我已经看过image 0.23.12
依赖的文档,但我不明白该怎么做。
解决方案
image::open().unwrap()
结果是image::DynamicImage
imageproc::filter::box_filter()
需要一个image::GrayImage
- 将 a 转换
image::DynamicImage
为 aimage::GrayImage
使用to_luma8()
方法
这个更新的示例应该可以工作:
extern crate image;
extern crate imageproc;
use image::GenericImageView;
use imageproc::filter::box_filter;
fn main() {
let dynamic_image = image::open("path/here").unwrap();
let gray_image = dynamic_image.to_luma8();
let result = box_filter(&gray_image, 5, 5);
}
如果您需要image::RgbImage
orimage::RgbaImage
然后调用into_rgb8()
or into_rgba8()
。不过box_filter()
只支持image::GrayImage
.
推荐阅读
- java - Java Criteria API - 如何使用 MySQL 的 ANY_VALUE
- c# - 以用户身份使用 selenium 打开 Chrome
- nginx - 扩展 realurl - 在 URL 中显示 SQL 查询部分
- java - Kotlin函数返回类型中的`out Interface`
- java - 为什么Java接口常量被Checkstyle中的ConstantName检查视为非公共的
- javascript - 带有 jQuery json 数据的动态菜单
- javascript - 如何在浏览器通知 Web API 中添加自定义按钮?
- version-control - 将 bcompare 与 clearcase 一起使用
- javascript - 如何在 HTML 字符串中放置 for 循环
- python-3.x - 如何将此命令与现有命令结合使用?