OpenCVでcv2.imread()などを行うと、Mat型のオブジェクトが返ります。
cv::Mat Class Reference
二つのMatオブジェクトをPythonのunittestのテストコードで単純に比較しようとしたらエラーが出てしまいました。
動作確認してません.py
from unittest import TestCase
import cv2
class hogehoge(TestCase):
def hoge(self):
mat1 = cv2.imread('hoge1.jpg')
# mat1を何か処理
mat2 = cv2.imread('hoge2.jpg')
# mat2を何か処理
# mat1とmat2が同じになってるか確かめたい
self.assertEqual(mat1, mat2)
# ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
エラーメッセージに書いてある通り、Mat型のような中身がたくさんあるオブジェクト(曖昧)は単純な比較ができないようです。
Use a.any() or a.all()と書いてあるように、素直にそれらを使いましょう。
次のようにテストコードを修正することで、いい感じにテストを実行できるようになりました。
動作確認してません.py
from unittest import TestCase
import cv2
class hogehoge(TestCase):
def hoge(self):
mat1 = cv2.imread('hoge1.jpg')
# mat1を何か処理
mat2 = cv2.imread('hoge2.jpg')
# mat2を何か処理
# mat1とmat2が同じになってるか確かめたい
self.assertTrue((mat1 == mat2).all())
# Ran 1 tests in 0.037s
#
# OK