広告

UE5.2でOpencvを使ってQRコードの読み込み(その1.5)

その1の続きです
ついでにバーコードの読み込みを追加してみます。

バーコード読み込みの追加

その1で作成したc++にバーコード読み込みの処理を追加します。

ヘッダー

	UFUNCTION(BlueprintCallable)
	static FString ReadBarcode(const FString Path);

CPP

/*
*	バーコードの読み込み
*	@param Path QRコード画像のパス
*	@return QRコードの文字列
*/
FString UOpenCVLibrary::ReadBarcode(const FString Path)
{
	// ファイルチェック
	if (std::filesystem::is_regular_file(TCHAR_TO_UTF8(*Path))) {
		// パスから読み込み
		const cv::Mat input_Image = cv::imread(TCHAR_TO_UTF8(*Path), cv::IMREAD_ANYCOLOR);
		// デコーダー
		cv::barcode::BarcodeDetector detecter;
		// 各種情報取得用
		std::vector< std::string > decode_info;
		std::vector<cv::barcode::BarcodeType> decoded_type;
		std::vector<cv::Point> corners;
		// デコード
		detecter.detectAndDecode(input_Image, decode_info, decoded_type, corners);

		return decode_info.empty() ? FString() : decode_info[0].c_str();
	}

	return FString();
}

あとはQRコードの時と同じように画像をパスで読ませれば、バーコードの文字列が表示されるはずです。
OpenCVのバーコードはJanコード(Ean-8,13 UPC-E,A)しか読めませんのでご注意ください。

コメント

タイトルとURLをコピーしました