pub struct TensorImage { /* private fields */ }Expand description
An image represented as a tensor with associated format information.
Implementations§
Source§impl TensorImage
impl TensorImage
Sourcepub fn new(
width: usize,
height: usize,
fourcc: FourCharCode,
memory: Option<TensorMemory>,
) -> Result<Self>
pub fn new( width: usize, height: usize, fourcc: FourCharCode, memory: Option<TensorMemory>, ) -> Result<Self>
Creates a new TensorImage with the specified width, height, format,
and memory type.
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::TensorMemory;
let img = TensorImage::new(640, 480, RGB, Some(TensorMemory::Mem))?;
assert_eq!(img.width(), 640);
assert_eq!(img.height(), 480);
assert_eq!(img.fourcc(), RGB);
assert!(!img.is_planar());Sourcepub fn from_tensor(tensor: Tensor<u8>, fourcc: FourCharCode) -> Result<Self>
pub fn from_tensor(tensor: Tensor<u8>, fourcc: FourCharCode) -> Result<Self>
Creates a new TensorImage from an existing tensor and specified
format.
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::Tensor;
let tensor = Tensor::new(&[720, 1280, 3], None, None)?;
let img = TensorImage::from_tensor(tensor, RGB)?;
assert_eq!(img.width(), 1280);
assert_eq!(img.height(), 720);
assert_eq!(img.fourcc(), RGB);Sourcepub fn load(
image: &[u8],
format: Option<FourCharCode>,
memory: Option<TensorMemory>,
) -> Result<Self>
pub fn load( image: &[u8], format: Option<FourCharCode>, memory: Option<TensorMemory>, ) -> Result<Self>
Loads an image from the given byte slice, attempting to decode it as JPEG or PNG format. Exif orientation is supported. The default format is RGB.
§Examples
use edgefirst_image::{RGBA, TensorImage};
use edgefirst_tensor::TensorMemory;
let jpeg_bytes = include_bytes!("../../../testdata/zidane.png");
let img = TensorImage::load(jpeg_bytes, Some(RGBA), Some(TensorMemory::Mem))?;
assert_eq!(img.width(), 1280);
assert_eq!(img.height(), 720);
assert_eq!(img.fourcc(), RGBA);Sourcepub fn load_jpeg(
image: &[u8],
format: Option<FourCharCode>,
memory: Option<TensorMemory>,
) -> Result<Self>
pub fn load_jpeg( image: &[u8], format: Option<FourCharCode>, memory: Option<TensorMemory>, ) -> Result<Self>
Loads a JPEG image from the given byte slice. Supports EXIF orientation. The default format is RGB.
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::TensorMemory;
let jpeg_bytes = include_bytes!("../../../testdata/zidane.jpg");
let img = TensorImage::load_jpeg(jpeg_bytes, Some(RGB), Some(TensorMemory::Mem))?;
assert_eq!(img.width(), 1280);
assert_eq!(img.height(), 720);
assert_eq!(img.fourcc(), RGB);Sourcepub fn load_png(
image: &[u8],
format: Option<FourCharCode>,
memory: Option<TensorMemory>,
) -> Result<Self>
pub fn load_png( image: &[u8], format: Option<FourCharCode>, memory: Option<TensorMemory>, ) -> Result<Self>
Loads a PNG image from the given byte slice. Supports EXIF orientation. The default format is RGB.
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::TensorMemory;
let png_bytes = include_bytes!("../../../testdata/zidane.png");
let img = TensorImage::load_png(png_bytes, Some(RGB), Some(TensorMemory::Mem))?;
assert_eq!(img.width(), 1280);
assert_eq!(img.height(), 720);
assert_eq!(img.fourcc(), RGB);Sourcepub fn save_jpeg(&self, path: &str, quality: u8) -> Result<()>
pub fn save_jpeg(&self, path: &str, quality: u8) -> Result<()>
Saves the image as a JPEG file at the specified path with the given quality. Only RGB and RGBA formats are supported.
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::Tensor;
let tensor = Tensor::new(&[720, 1280, 3], None, None)?;
let img = TensorImage::from_tensor(tensor, RGB)?;
let save_path = "/tmp/output.jpg";
img.save_jpeg(save_path, 90)?;Sourcepub fn tensor(&self) -> &Tensor<u8>
pub fn tensor(&self) -> &Tensor<u8>
Returns a reference to the underlying tensor.
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::{Tensor, TensorTrait};
let tensor = Tensor::new(&[720, 1280, 3], None, Some("Tensor"))?;
let img = TensorImage::from_tensor(tensor, RGB)?;
let underlying_tensor = img.tensor();
assert_eq!(underlying_tensor.name(), "Tensor");Sourcepub fn fourcc(&self) -> FourCharCode
pub fn fourcc(&self) -> FourCharCode
Returns the FourCC code representing the image format.
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::{Tensor, TensorTrait};
let tensor = Tensor::new(&[720, 1280, 3], None, Some("Tensor"))?;
let img = TensorImage::from_tensor(tensor, RGB)?;
assert_eq!(img.fourcc(), RGB);Sourcepub fn is_planar(&self) -> bool
pub fn is_planar(&self) -> bool
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::{Tensor, TensorTrait};
let tensor = Tensor::new(&[720, 1280, 3], None, Some("Tensor"))?;
let img = TensorImage::from_tensor(tensor, RGB)?;
assert!(!img.is_planar());Sourcepub fn width(&self) -> usize
pub fn width(&self) -> usize
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::{Tensor, TensorTrait};
let tensor = Tensor::new(&[720, 1280, 3], None, Some("Tensor"))?;
let img = TensorImage::from_tensor(tensor, RGB)?;
assert_eq!(img.width(), 1280);Sourcepub fn height(&self) -> usize
pub fn height(&self) -> usize
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::{Tensor, TensorTrait};
let tensor = Tensor::new(&[720, 1280, 3], None, Some("Tensor"))?;
let img = TensorImage::from_tensor(tensor, RGB)?;
assert_eq!(img.height(), 720);Sourcepub fn channels(&self) -> usize
pub fn channels(&self) -> usize
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::{Tensor, TensorTrait};
let tensor = Tensor::new(&[720, 1280, 3], None, Some("Tensor"))?;
let img = TensorImage::from_tensor(tensor, RGB)?;
assert_eq!(img.channels(), 3);Sourcepub fn row_stride(&self) -> usize
pub fn row_stride(&self) -> usize
§Examples
use edgefirst_image::{RGB, TensorImage};
use edgefirst_tensor::{Tensor, TensorTrait};
let tensor = Tensor::new(&[720, 1280, 3], None, Some("Tensor"))?;
let img = TensorImage::from_tensor(tensor, RGB)?;
assert_eq!(img.row_stride(), 1280*3);Trait Implementations§
Source§impl Debug for TensorImage
impl Debug for TensorImage
Source§impl TensorImageDst for TensorImage
impl TensorImageDst for TensorImage
Source§fn tensor_mut(&mut self) -> &mut Tensor<u8>
fn tensor_mut(&mut self) -> &mut Tensor<u8>
Source§fn fourcc(&self) -> FourCharCode
fn fourcc(&self) -> FourCharCode
Source§fn row_stride(&self) -> usize
fn row_stride(&self) -> usize
Source§impl TryFrom<&TensorImage> for G2DSurface
impl TryFrom<&TensorImage> for G2DSurface
Source§impl TryFrom<&mut TensorImage> for G2DSurface
impl TryFrom<&mut TensorImage> for G2DSurface
Auto Trait Implementations§
impl Freeze for TensorImage
impl RefUnwindSafe for TensorImage
impl Send for TensorImage
impl Sync for TensorImage
impl Unpin for TensorImage
impl UnwindSafe for TensorImage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.