Heim >Backend-Entwicklung >Golang >Zeitweilige NSInternalInconsistencyException bei Verwendung von gocv unter macOS

Zeitweilige NSInternalInconsistencyException bei Verwendung von gocv unter macOS

WBOY
WBOYnach vorne
2024-02-06 11:00:07999Durchsuche

在 macOS 上使用 gocv 时间歇性出现 NSInternalInconsistencyException

Frageninhalt

Ich habe Code, der gocv verwendet (stellt Go-Sprachbindungen für opencv bereit). Es werden lediglich einige Rechtecke auf das Bild gezeichnet und das Ergebnis angezeigt.

func main() {
resp, err := http.get("http://localhost:6060/template-match")
if err != nil {
    panic(err)
}

defer resp.body.close()
body, err := ioutil.readall(resp.body)
if err != nil {
    panic(err)
}
fmt.println(string(body))
var data response
err = json.unmarshal(body, &data)
if err != nil {
    panic(err)
}
srcimage := gocv.imread("./images/src1.jpg", gocv.imreadcolor)
for i := 0; i < len(data.data); i++ {
    gocv.rectangle(&srcimage, data.data[i], color.rgba{r: 255}, 2)
}
window := gocv.newwindow("match-result")
window.imshow(srcimage)
gocv.waitkey(0)
fmt.println(data.data, data.msg)

Ich erhalte diese Fehlermeldung:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow drag regions should only be invalidated on the Main Thread!'

Ich bin wirklich verwirrt, weil dieser Fehler nicht jedes Mal auftritt


Richtige Antwort


Ich habe diese Bibliothek nicht verwendet, aber es sieht so aus, als wäre es ein bekanntes Problem – und da Sie es erwähnt haben, passiert es nur Manchmal hört es sich also so an, als ob der Fehler vom Thread-Kontext abhängt. Die Antwort dort (vom Autor der Bibliothek) verweist auf https://github.com/golang/go/wiki/lockosthread, daher sollte Ihr Hauptpaket etwas Ähnliches implementieren

func init() {
    runtime.LockOSThread()
}

Das obige ist der detaillierte Inhalt vonZeitweilige NSInternalInconsistencyException bei Verwendung von gocv unter macOS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen