シミュレータChoreonoidに関するtipsを掲載します。
今回は、ChoreonoidでQRコードを貼ったモデルを表示したとき、QRコードの色が変化してしまうことについて解説します。

QRコードをモデルに貼り付けたときQRコードの色が赤くなってしまった

モデルにQRコードをテクスチャとして貼り付けてChoreonoidで読み込むと、QRコードが貼られたモデルが表示されます。しかし、下図のようにQRコードの白い部分が赤で表示されることがあります。


QRコード

色が変化したQRコードを張り付けたモデル

原因

QRコードをカラー画像(RGB)ではなく、モノクロ画像(白と黒の2色)で作成したときにこの現象が起きます。
QRコードがモノクロ画像で作成される例として、qrコマンドでの作成が挙げられます。
pipで[qrcode]ライブラリをインストールし、以下のコマンドを実行してQRコードを作成します。

$ pip install qrcode
$ qr "text for qrcode" > qrcode.png

このコマンドで、「text for qrcode」という内容のQRコードが「qrcode.png」というファイル名で保存されます。単純なコマンドで作成できるので、WEBサイトで作成するより簡単に作成できますが、qrコマンドでQRコードを作成すると画像は基本モノクロ画像で保存されてしまいます。

解決方法

カラー画像でQRコードを作成します。

1) WEBサイトで作成
作成する数が少ない場合、QRコードを作成するWEBサイトを使用するのが一番早いと思います。WEBサイトで作成するとカラー画像で保存されるので、そのままChoreonoidで使用することができます。
例えば、以下のようなWEBサイトです。
QRのススメ

2)プログラムで作成
もし作成する数が多い場合、プログラムで作成するのがよいと思います。以下は参考サイトを元に作成したPythonプログラムです。
(参考サイト)
https://note.nkmk.me/python-pillow-qrcode/

import qrcode
from PIL import Image

qr = qrcode.QRCode(
  version=1,
  error_correction=qrcode.constants.ERROR_CORRECT_H,
  box_size=10
)
qr.add_data('text for qrcode')
qr.make()
qrimage = qr.make_image().convert('RGB')

print(type(qrimage))

qrimage.save('./qrcode.png')

ここでポイントになるのは[convert('RGB')]です。convert('RGB')で変換することで、カラー画像としてQRコードが保存されます。そのため、Choreonoidで表示した場合でも正常に表示することができます。
ちなみに、convert('RGB')で変換しない場合はモノクロ画像で保存されます。

いかがでしたでしょうか。
QRコードに限らずChoreonoidで画像を使用するとき、画像の形式次第で起こりうることだと思いますので、皆様の参考になればとコラムを掲載しました。