use crate::
{
error::Result,
vision::{ Vision, ImageInput, DetectionResult },
environment::HuggingFaceEnvironment,
};
use serde::Serialize;
#[ derive( Debug, Serialize ) ]
struct DetectionRequest
{
inputs : String,
}
impl< E > Vision< E >
where
E : HuggingFaceEnvironment + crate::environment::EnvironmentInterface + Send + Sync + 'static + Clone,
{
#[ inline ]
pub async fn detect_objects(
&self,
image : ImageInput,
model : impl AsRef< str >
) -> Result< Vec< DetectionResult > >
{
let request = DetectionRequest
{
inputs : image.to_base64(),
};
let endpoint = format!( "/models/{}", model.as_ref() );
let url = self.client.environment.endpoint_url( &endpoint )?;
let results : Vec< DetectionResult > = self.client
.post( url.as_str(), &request )
.await?;
Ok( results )
}
}