11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【OpenCV】OpenCVの画像をEelに表示する

Last updated at Posted at 2020-02-18

はじめに

NGK2020S と言うイベントで
「市販のプレゼンソフトに満足できなくなったお話(画像処理編)」と言う発表をしました。

上記の動画の2:25~あたりのことがやりたかった発表です。
 ⇒スライドの中でリアルタイムにデモを実施

本投稿では、OpenCVからEelの部分の説明をしています。
※たいした内容ではありませんが、、、

ソースコード

Kazuhito00/opencv2eel-sample
opencv2eel_sampleはEel上でOpenCVの画像を表示するサンプルです。

特にひねりもなく、OpenCVで取得した画像をbase64にしてsrcに流し込んでいるだけですね。

opencv2eel.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
import base64

import eel
import cv2 as cv


def main():
    cap = cv.VideoCapture(0)

    # Eelフォルダ設定、および起動 ###############################################
    eel.init('web')
    eel.start(
        'index.html',
        mode='chrome',
        cmdline_args=['--start-fullscreen'],
        block=False)

    while True:
        start_time = time.time()

        eel.sleep(0.01)

        # カメラキャプチャ #####################################################
        ret, frame = cap.read()
        if not ret:
            continue

        # UI側へ転送(画像) #####################################################
        _, imencode_image = cv.imencode('.jpg', frame)
        base64_image = base64.b64encode(imencode_image)
        eel.set_base64image("data:image/jpg;base64," + base64_image.decode("ascii"))

        key = cv.waitKey(1)
        if key == 27:  # ESC
            break

        # UI側へ転送(処理時間) #################################################
        elapsed_time = round((time.time() - start_time), 3)
        eel.set_elapsedtime(elapsed_time)


if __name__ == '__main__':
    main()
index.html
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <script type="text/javascript" src="/eel.js"></script>

        <script>
            eel.expose(set_elapsedtime);
            function set_elapsedtime(elapsedtime) {
                document.getElementById("elapsedtime").innerHTML = "elapsedtime:" + elapsedtime + "s";
            }
            eel.expose(set_base64image);
            function set_base64image(base64image) {
                document.getElementById("python_video").src = base64image;
            }
        </script>
    </head>
    <body>
        <div id="elapsedtime">elapsedtime</div>
        <img id="python_video" width="640" height="480" src="./image/sample.png">
    </body>
</html>

参考

[Python] EelをつかってHTML/CSS/JavaScriptでGUIを構築

以上。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?