gocv は gif マルチフレーム イメージ、mp4 ビデオ イメージ、opencv、VideoCaptureFile、opencv_ffmpeg を読み取ります。

GIF画像を読む

ライセンス上の理由により、GIF 画像は opencv で読み込むことができません。代わりに、ビデオキャプチャまたはサードパーティの PIL ライブラリ (Python) を使用します。ただし、実際には、Golang の基本ライブラリにはimageGIF 画像を読み取る方法があります。簡単な例は次のとおりです

func ReadAndShowGIF(filename string) {
    
    
	w := gocv.NewWindow(filename)

	f, _ := os.Open(filename)
	defer f.Close()

	gi, _ := gif.DecodeAll(f)

	for k, v := range gi.Image {
    
    
		img, err := gocv.ImageToMatRGB(v)
		if err != nil {
    
    
			log.Fatal(err)
		}

		w.IMShow(img)
		w.WaitKey(gi.Delay[k] * 10) // delay 单位是百分之一秒,waitkey参数为毫秒
	}

	w.WaitKey(0)
}

ここでは gif 画像は 1 回だけ再生されます。また、gif 内の LoopCount を解析してループ再生ロジックを追加することもできます。

mp4ビデオファイルを読み取る

まず、 cmake のインストール中に依存関係が正常にインストールされていることを確認しますopencv_ffmpeg_64.dll and opencv_ffmpeg.dll。そうしないと、 またはgocv.VideoCaptureFileの呼び出しgocv.OpenVideoCapture時にエラーが報告されますError opening file: showimage/video1.mp4

opencv がコンパイルされてインストールされているパスを開きますC:\opencv\build\libが、これら 2 つの依存関係が実際には見つからないので、どうすればよいでしょうか?

opencv をコンパイルすると、まず現在のシステムに ffmpeg がインストールされているかどうかがチェックされ、インストールされていない場合は、ダウンロードしてインストールされます。ただし、ダウンロード中に失敗する可能性があるため、この依存関係はインストールされません。ダウンロード失敗が見られるので、opencv/build/CMakeDownloadLog.txtラダーソフトを開いてopencvを再コンパイルします。

gocv.VideoCaptureFile(filename)または を使用してビデオ ファイルを読み取りgocv.OpenVideoCapture(filename)、フレームごとに処理します。

func ReadAndShowVideo(filename string) {
    
    
	w := gocv.NewWindow(filename)
	vc, err := gocv.VideoCaptureFile(filename)
	if err != nil {
    
    
		fmt.Println(err)
		return
	}

	mat := gocv.NewMat()

	for {
    
    
		if vc.Read(&mat) {
    
    
			w.IMShow(mat)
			w.WaitKey(10)
		} else {
    
    
			break
		}
	}
	w.WaitKey(0)
}

実際、ReadAndShowVideo関数を使用して GIF 画像を読み取ることもできますが、ReadAndShowGIFコントロールほど詳細ではありません。

おすすめ

転載: blog.csdn.net/raoxiaoya/article/details/131472425