如何在python中将图像作为输入和输出进行单元测试?

如何在python中将图像作为输入和输出进行单元测试?,python,unit-testing,opencv,oop,hough-transform,Python,Unit Testing,Opencv,Oop,Hough Transform,我正在用Python对对象检测(公认答案)进行单元测试。我知道在单元测试中,我们基本上把测试参数输入到我们在程序中定义的函数中,然后输入预期的结果。如果预期的结果是输出,我们得到OK,否则,我们将得到一个错误 因此,我的问题是,我的输入是图像,我的输出也是一个图像(即在图像中检测到的对象),然后,使用条形图和带滑块的直方图表示结果如何对此类数据进行单元测试? 到目前为止,这是我尝试过的(保存为圈码) 现在,我不知道如何测试def circle函数。此外,我不确定这是否是测试查找圆功能的正确方法

我正在用Python对对象检测(公认答案)进行单元测试。我知道在单元测试中,我们基本上把测试参数输入到我们在程序中定义的函数中,然后输入预期的结果。如果预期的结果是输出,我们得到OK,否则,我们将得到一个错误

因此,我的问题是,我的输入图像,我的输出也是一个图像(即在图像中检测到的对象),然后,使用条形图和带滑块的直方图表示结果如何对此类数据进行单元测试?

到目前为止,这是我尝试过的(保存为圈码)

现在,我不知道如何测试def circle函数。此外,我不确定这是否是测试查找圆功能的正确方法


你们有没有更好的办法来做这个函数的单元测试,以及我如何继续对圆函数进行单元测试?

不确定你们在问什么,我想你们是在问opencv函数和变量的单元测试方法

下面的opencv python测试示例怎么样?他们做了一个类似的工作,你正试图做已经。他们有几十个样本测试用例

e、 g


它是否返回位图?对于已知的输入是否相同?如果是这样,您至少可以对返回的位图与预期的位图进行二进制比较。@MarcinOrlowski它返回来自Otsu方法的阈值,这些圆提供有关圆心坐标、半径和平均RGB值、输出文件名以及负圆和正圆数的信息。所以,不,它不会返回位图。但是在一个大图像上进行二进制比较会很困难,不是吗?我想对代码(链接)中的函数进行单元测试。我在问题“…如何测试def circle函数中提到了它。另外,我不确定这是否是测试find_circles函数的正确方法。”。谢谢你的链接。我一定会去看看:)。我希望它能给我一个更好的视角来看待如何进一步进行。
from unittest import TestCase

import unittest
from unittest import TestCase
import cirCode

class TestFind_circles(TestCase):

        def setUp(self):
            pass

        def tearDown(self):
            pass

        #def test_circle(self):
         #   self.fail()

        def test_find_circles(self):

            Negative_circles, Positive_circles, out_filepath, circles, threshold = cirCode.find_circles('blobs.jpg')

            self.assertEqual(Negative_circles, 20)
            self.assertEqual(Positive_circles, 8)

if __name__ == '__main__':
    unittest.main()
import cv2 as cv
import numpy as np
import sys
from numpy import pi, sin, cos

from tests_common import NewOpenCVTests

def circleApproximation(circle):

    nPoints = 30
    dPhi = 2*pi / nPoints
    contour = []
    for i in range(nPoints):
        contour.append(([circle[0] + circle[2]*cos(i*dPhi),
            circle[1] + circle[2]*sin(i*dPhi)]))

    return np.array(contour).astype(int)