Opencv: наблюдайте значения пикселей в пороговой области интереса, где некоторые значения отличаются от 0 и 255 - PullRequest
0 голосов
/ 28 мая 2019

Я применил порог для области интереса в видеокадре.Кажется, это работает отлично, так как результат выглядит следующим образом:

threshold

Я отмечаю ROI с помощью функции обратного вызова мыши, а затем просто беру порог с помощьюследующие две строки кода:

ret_thresh, thresh = cv2.threshold(ROI, 80, 255, cv2.THRESH_BINARY)
    gray_frame[pt1[1]+3:pt1[1]+rect_height, pt1[0]+3:pt1[0]+rect_width] = thresh

, где pt1 - верхний левый угол прямоугольника, а +3 - только для того, чтобы убедиться, что я беру порог того, что находится внутри прямоугольника, а не на границепрямоугольника.

Кроме того, я нарисовал круговую арку внутри колеса (как видно на рисунке).Это было достигнуто с помощью кода, приведенного в моем другом вопросе .

Теперь я наблюдаю за точками на круговой арке чуть ниже арки, которую я нарисовал.Эти точки находятся в пределах порога, поэтому они должны иметь значения только 0 или 255:

frameCount += 1
    currentTimestamp = timestamp + frameCount/fps 
    file = open("myFile.txt", "a+") 
    file.write(str(currentTimestamp))
    circleSegment = get_circle_segment(center_pt, 60, 72//2) #center_pt has been specified via mouse callback, radius is 60 px, radius of drawn arch is 70px
    for el in circleSegment: 
        pixel = gray_frame[el[1]][el[0]] #coordinates are (x,y). But accessing an image is always: first y-coordinates (rows) and then x-coordinates (columns)
        #log information
        file.write('\t' + str(pixel))
    file.write('\n')
    file.close()

Выходной txt-файл не содержит 0. Но есть некоторые пустые места, поэтому, возможно, это считается как 0?

4.033327383481244   255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4.066660667642246   255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4.099993951803248
4.13332723596425    255 255 255
4.166660520125252   255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4.199993804286254   255 255 255 255 255 255 255 255 255 255 255 255 255

Также: когда я добавляю сообщение об ошибке, когда мой фрейм-доступ не удается:

for el in circleSegment: 
        pixel = gray_frame[el[1]][el[0]]
        if pixel == False:
            print("Error")
        #log information

, довольно много сообщений об ошибках печатаются на моем терминале.Итак, я предполагаю, что с индексированием моего изображения что-то не так.Но я не вижу проблемы с этим кодом .

...