Fette rote Warnung von PyCharm verstehen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
benjamin222
User
Beiträge: 6
Registriert: Donnerstag 15. Juli 2021, 16:01

Hallo,

ich habe Code aus einem Tutorial nachgetippt. Es funktioniert auch so wie gedacht aber meine IDE, PyCharm gibt eine dicke rote Warnung aus. Diese würde ich gerne verstehen und beheben.

Code: Alles auswählen

# import opencv and numpy
import cv2
import numpy as np



def nothing(x):
    pass



cv2.namedWindow('controls')

cv2.createTrackbar('r', 'controls', 15, 255, nothing)


while True:


    img = np.zeros((512, 512, 3), np.uint8)

    img_center_y = img.shape[0] // 2
    img_center_x = img.shape[1] // 2


    radius = int(cv2.getTrackbarPos('r', 'controls'))

    cv2.circle(img, (img_center_y, img_center_x), radius, (0, 0, 255), -1)

    cv2.imshow('img', img)
 
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break


cv2.destroyAllWindows()
Warnung lautet:
[ WARN:0] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-sn_xpupm\opencv\modules\highgui\src\window.cpp (704) cv::createTrackbar UI/Trackbar(r@controls): Using 'value' pointer is unsafe and deprecated. Use NULL as value pointer. To fetch trackbar value setup callback.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na das steht doch in der Fehlermeldung: "To fetch trackbar value, setup callback". Das solltest du tun. https://docs.opencv.org/3.4/da/d6a/tuto ... ckbar.html
benjamin222
User
Beiträge: 6
Registriert: Donnerstag 15. Juli 2021, 16:01

Verstehe ich leider nicht. Ich hab doch die Funktion nothing, die den aktuellen Wert von Trackbar als Paramter erhält. das verstehe ich unter "setup callback".
Welche Änderung an dem Code würde denn den Fehler beseitigen?
benjamin222
User
Beiträge: 6
Registriert: Donnerstag 15. Juli 2021, 16:01

Ich habe noch weiter rumgesucht aber in allen Tutorials ist es bisher gleich und ich kriege immer die Warnung. Anbei nochmal der Code als Minimalbeispiel.

Code: Alles auswählen

import cv2 as cv

def nothing(x):
    pass

cv.namedWindow("frame")
cv.createTrackbar("test","frame",50,500,nothing)
cv.waitKey(0)
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn es auch bei dem Beispiel passiert, dann wird er Python wrapper das Problem sein. Es kann sein, dass der zb IMMER einen Wert per Pointer übergibt, auch wenn der nie abgefragt wird. Den kannst du aber nicht beeinflussen. Das müssen die reparieren.
Antworten