Уважаемые знатоки Opencv. Помогите с проблемой.
Камера Ximea. У нее есть API для Python.
Хочу начать что-нибудь делать с потоковым видео с камеры...но все никак...
Стандартный пример для Opencv (не получается запустить):
Пробовал перебирать cv2.VideoCapture(0) - 0,1,2,3...
Вылетает ошибка:
cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'import numpy as np
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()
А вот код примера API работает, просто открывает окно с камеры и выводит потоковое изображение.
Как приспособить к этому апи изменение цвета, поиск контуров? Хотя бы намекните.
from ximea import xiapi
import cv2
#create instance for first connected camera
cam = xiapi.Camera()
#start communication
print('Opening first camera...')
cam.open_device()
#settings
cam.set_exposure(60000)
#create instance of Image to store image data and metadata
img = xiapi.Image()
#start data acquisition
print('Starting data acquisition...')
cam.start_acquisition()
try:
while True:
#get data and pass them from camera to img
cam.get_image(img)
#create numpy array with data from camera. Dimensions of the array are
#determined by imgdataformat
data = img.get_image_data_numpy()
print('data: ' + str(data))
cv2.imshow('111', data)
cv2.waitKey(1)
except KeyboardInterrupt:
cv2.destroyAllWindows()
#stop data acquisition
print('Stopping acquisition...')
cam.stop_acquisition()
#stop communication
cam.close_device()
print('Done.')
Спасибо.