質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

受付中

Raspberry Piのカメラモジュールで撮影した映像を、「完全に」消す方法について教えてください。

jmc
jmc

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

2回答

0リアクション

0クリップ

353閲覧

投稿2022/07/12 09:23

前提

  • Raspberry Pi Zero WHを使用しており、本質問ではこれをマイコンと呼んでおります。
  • マイコンにはRaspberry Pi OS (32-bit) with desktop and recomended softwareを入れています。
    このOSにはpython3が付属しています。
  • マイコンへOSをインストールしたあと、さらにopencv-pythonを追加しました。
  • マイコンには、カメラモジュールとしてOV5647を接続しています。
  • マイコンには、swapを禁止しています。
  • マイコンにおいては、rc.localを編集することなどにより、
    次のpythonプログラムが自動起動する設定になっているものとします。

python:get_hash_img.py

# 内容は、カメラから「生画像」を得て、 # それをハッシュ化した「ハッシュ画像」をmicroSDへ保存する、を # 一定間隔で半永久的に繰り返すものです。 import cv2, time ハッシュof = lambda キー: hashlib.sha512(キー).digest() # ハッシュof: bytes -> bytes カメラ = cv2.VideoCaputure(0) # 0: OV5647 実行間隔 = 1 # 秒 class np: empty = type(cv2.VideoCapture(0).read()[1]) @staticmethod def zeros_like(arr): arr = np.empty(arr.shape, dtype=arr.dtype) arr[:] = 0 return arr # こうすることで、numpyをインストール、インポートせずに # np.empty(shape, dtype?)やzeros_likeが利用可 time_ = int(time.time()) while True: # 撮影する _, 生画像 = カメラ.read() # 生画像は ndarray オブジェクト(2592,1944,3) np.uint8 # 映像データをsha512でハッシュ化する。但し1 byte 捨てて 63 byte にする ハッシュ値 = ハッシュof(bytes(生画像.reshape([-1]).tolist()))[:-1] # ハッシュ画像を組み立てる ハッシュ画像 = np.empty([63], dtype="uint8") ハッシュ画像[:] = ハッシュ値 ハッシュ画像 = ハッシュ画像.reshape([3,7,3]) # ハッシュ画像の保存 cv2.imwrite("hash_img.bmp", ハッシュ画像) while int(time.time()) - time_ < 実行間隔: pass time_ = int(time.time()) # ★

実現したいこと

生画像のデータを抹消したいです。
whileループ内の処理が一周すると、後からどんな手段(主メモリを直接読むなど)を使っても生画像のデータを入手できないようにしたいです。
言い換えれば、主記憶装置にも補助記憶装置(microSD)にも、生画像の「痕跡」が一切残らないようにしたいということです。

試したこと

1. 電源は切りたくない

例えば、get_hash_img.pyのところに

python

subprocess.run(['sudo shutdown -h now'], shell=True)

等を入れて、電源を切ってしまうことは、確実な手段かとは思います。
Raspberry Piの主記憶装置が揮発性メモリなので、microSDへ生画像を書き出さない限り、
電源を切ったときに生画像を記憶する術がすべて失われるからです。
しかしこの方法では、ループが難しくなってしまいます。

そこで、電源を落とさず、生画像のデータを抹消できないかと考えております。

2. 生画像[:] = (ランダムデータ)だけで充分でしょうか。

get_hash_img.pyのところを生画像 = np.zeros_like(生画像)とすれば、生画像が0の配列に書き換えられるため、古いデータはどこにも保存されずに消滅しますでしょうか。

この対応で残る不安:

  • キャッシュなどが自動でとられて、電源を落とすまで残ってしまう恐れなどないでしょうか。

3. echo 3 > /proc/sys/vm/drop_cachesを実行すれば安心でしょうか。

2のコードの直後に、次の内容を加えることで、
万が一生画像の内容がキャッシュされていても、ここで消去することができるでしょうか。
(別途import subprocessします)

python

subprocess.run(['sudo echo 3 > /proc/sys/vm/drop_caches'], shell=True)

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。