DataScience
[Rust] asser_eq!
Rust 2023. 7. 5. 12:17

assert!(식) 매크로는 "식"에 있는 값이 true이면 테스트가 성공한 것으로 여기고, false 이면 에러인 것으로 취급합니다. assert_eq!() 혹은 assert_ne!() 매크로는 2개의 파라미터를 받아들여 에러가 난 경우 두 파라미터의 값이 어떻게 다른지 출력해 줍니다. assert_eq!(rect.left(), 4); assert_eq!(rect.top(), 5); assert!(rect.contains(rect.left(), rect.top())); assert_eq!() 매크로는 실패하면 아래와 같이 좌, 우 파라미터가 어떻게 다른지 자세하게 출력하게 됩니다. Rust의 assert 매크로는 (다른 test framework과 달리) expected vs actual 의 구분이 없..

article thumbnail
[Rust] error: failed to run custom build command for `clang-sys v1.6.1`
Rust 2023. 7. 4. 14:12

윈도우에서 Rust로 opencv 라이브러리 에러 발생 chocolatey 설치 https://crates.io/crates/opencv https://chocolatey.org/install#generic 윈도우 powershell을 관리자권한으로 실행합니다 powershell에 아래 내용을 실행하면 choco가 설치됩니다. Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadSt..

[Rust] error:linker link.exe not found
Rust 2023. 7. 4. 14:09

Compiling helloworld v0.1.0 (C:\Users\DELL\helloworld) error: linker `link.exe` not found note: The system cannot find the file specified. (os error 2) note: the msvc targets depend on the msvc linker but `link.exe` was not found note: please ensure that VS 2013, VS 2015 or VS 2017 was installed with the Visual C++ option error: aborting due to previous error error: Could not compile `helloworld..

[Rust] video-rs
Rust 2023. 7. 3. 12:35

https://crates.io/crates/video-rs video-rs는 ffmpeg의 libav 계열 라이브러리를 사용하는 Rust용 범용 비디오 라이브러리입니다. 읽기, 쓰기, 믹싱, 인코딩 및 디코딩과 같은 많은 일반적인 비디오 작업에 안정적이고 Rusty 인터페이스를 제공합니다. 설치 먼저 ffmpeg 라이브러리를 설치합니다. 그런 다음 Cargo.toml의 종속성에 다음을 추가합니다: video-rs = "0.4" ndarray 크레이트에서 원시 프레임을 사용할 수 있게 하려면 ndarray 기능을 사용합니다: video-rs = { version = "0.4", features = ["ndarray"] } 예제 Decode a video and print the RGB value for ..

article thumbnail
[Rust] ONNX모델로 detection
Rust 2023. 7. 2. 12:33

웹상에서 이미지 load하면 해당 이미지를 onnx모델로 run하고 웹상으로 띄어줍니다. use std::{sync::Arc, path::Path}; use image::{GenericImageView, imageops::FilterType}; use ndarray::{Array, IxDyn, s, Axis}; use ort::{Environment,SessionBuilder,tensor::InputTensor}; use rocket::{response::content,fs::TempFile,form::Form}; use video_rs::{self, Decoder, Locator}; use std::path::PathBuf; use video_rs::{Encoder, EncoderSettings, Ti..

article thumbnail
[Rust-Python] PyO3
Rust 2023. 6. 30. 11:24

PyO3는 파이썬에서 러스트 코드를 실행할수 있고 반대로 러스트에서 파이썬 코드를 실행할 수 있도록 도와주는 크레이트 입니다. maturin maturin으로 프로젝트를 생성합니다. maturin init -b pyo3 프로젝트를 생성하면 아래와 같이 폴더가 만들어집니다. . ├── Cargo.lock ├── Cargo.toml ├── Pipfile ├── pyproject.toml ├── src └── lib.rs Cargo.toml pyproject.toml 파일에서 패키지와 라이브러리 프로젝트 이름을 변경합니다. 라이브러리 크레이트를 만듭니다. #[pyfunction],#[pymodule]은 PyO3 라이브러리에서 제공하는 Attribute입니다. 러스트 함수를 파이썬 함수로 정의하는데 사용합니다...

Rust Trait
Rust 2023. 6. 20. 09:49

타입들이 공통적으로 갖는 동작에 대하여 추상화하도록 해줍니다. 러스트의 Trait은 java의 interface, python의 class기능과 유사합니다. trait을 제네릭 파라미터의 타입으로 사용하는 상황에서 trait bound를 통해 서로 다른 구조체에 연관성을 제공할 수 있습니다. 쉽게 말해 일종의 인터페이스로, 정의되지 않은 메서드의 선언들을 가질 수 있습니다. Tait 구조 trait 트레잇명 { 선언들 } 트레잇은 impl 키워드를 통해서 구조체(클래스)에 구현됩니다. impl 트레잇명 for 구조체명 { 구현들 } Trait 구현 정적 메서드만 가지는 간단한 트레잇 소스입니다. trait Foo{ fn foo(); } struct Boom{ } impl Foo for Boom{ fn f..