gpt4 book ai didi

generics - Rust image::SubImage,找不到类型为 `put_pixel`的方法吗?

转载 作者:行者123 更新时间:2023-12-03 11:48:17 25 4
gpt4 key购买 nike

以下代码
cargo.toml

[dependencies]
image = "0.23.6"
src/main.rs
extern crate image;
use image::*;

fn main() {
let mut img: RgbImage = ImageBuffer::new(512, 512);

let a = SubImage::new(img, 0, 0, 1, 1);
a.put_pixel(Rgb::from_channels(0, 0, 0, 0));
}
产生错误:
error[E0599]: no method named `put_pixel` found for type `image::SubImage<image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<u8>>>` in the current scope
--> src/main.rs:8:7
|
8 | a.put_pixel(Rgb::from_channels(0, 0, 0, 0));
| ^^^^^^^^^ method not found in `image::SubImage<image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<u8>>>`
|
= note: the method `put_pixel` exists but the following trait bounds were not satisfied:
`image::SubImage<image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<u8>>> : image::GenericImage`
这是为什么? SubImage明确实现了 GenericImage。我应该怎么做才能使用 SubImage::put_pixel()

最佳答案

SubImage clearly implements GenericImage. What should I do to use put_pixel()?


由于传递了不可变的引用,因此可以访问 impl GenericImageView
可以通过以下方式传递可变引用来访问 impl GenericImage:
let mut sub_image = SubImage::new(&mut img, 0, 0, 1, 1);
let mut sub_image = SubImage::new(img.inner_mut(), 0, 0, 1, 1);
更习惯地说,可以使用 sub_image() 方法,因为 img是可变的:
let mut sub_image = img.sub_image(0, 0, 1, 1);

关于generics - Rust image::SubImage,找不到类型为 `put_pixel`的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62856136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com