Harkirat Singh
Harkirat Singh

Reputation: 25

Opencv error init done

I have been running python script with nodejs using python-shell package.. and i am getting this error:

Error: init done

at PythonShell.parseError (F:\github\pythonShellDemo\node_modules\python-shell\index.js:191:17)
at terminateIfNeeded (F:\github\pythonShellDemo\node_modules\python-shell\index.js:98:28)
at ChildProcess.<anonymous> (F:\github\pythonShellDemo\node_modules\python-shell\index.js:89:9)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)

after some debugging and research i got to know that this error is with opencv but i cant find any solution..

here is the code:

import cv2
import zbar
from PIL import Image
import sys

video = cv2.VideoCapture(0)
count=0
qrcode=[]
while True:
  ret, frame = video.read()
  cv2.imshow('Camera', frame)
  if cv2.waitKey(1) & 0xFF == ord('q'):
    break
  grayscale = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
  image = Image.fromarray(grayscale)
  width, height = image.size
  zbarimage = zbar.Image(width, height,'Y800', image.tobytes())
  scanner = zbar.ImageScanner()
  scanner.scan(zbarimage)
  for x in zbarimage:
    if count == 0:
      qrcode=x.data
      count=count+1
  if qrcode:
    break
video.release()
cv2.destroyAllWindows()

print(qrcode)
sys.stdout.flush()

I am using python 2.7

UPDATE: nodejs code for calling python script:

PythonShell.run('python/scan.py', options, function (err, results) {
  if (err) {
    console.log(err)
    reject(err)
  }
  // results is an array consisting of messages collected during execution
  console.log(results)
  resolve(results)
})

UPDATE: i tried running opencv only without zbar.. still got the error

import cv2

cap = cv2.VideoCapture(0)

while(True):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Upvotes: 1

Views: 177

Answers (1)

BlackJack
BlackJack

Reputation: 4679

The OpenCV library prints init done to the standard error output. It's not an error, but just a debug print. python-shell then turns this into an error. From the python-shell documentation:

If the script writes to stderr or exits with a non-zero code, an error will be thrown.

Suppressing the output seems to be only possible by recompiling the library with a parameter set.

Upvotes: 1

Related Questions