python-3.x cv2

python 3.x - Open Cv Error:(-215: Assertion failed)!_Src.empty() en la función ''cv:: cvtColor''



python-3.x cv2 (1)

Actualmente utilizo Windows 10 con Python 3.7. Intenté ejecutar este código para que la cámara web funcionara en el reconocimiento de números.

def get_img_contour_thresh(img): x, y, w, h = 0, 0, 300, 300 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) blur = cv2.GaussianBlur(gray, (5, 5), 0) ret, thresh1 = cv2.threshold(blur, 175, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) thresh1 = thresh1[y:y + h, x:x + w] contours, hierarchy = cv2.findContours(thresh1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[-2:] return img, contours, thresh1 def show_webcam(mirror=False): # load json and create model json_file = open(''model.json'', ''r'') loaded_model_json = json_file.read() json_file.close() model = model_from_json(loaded_model_json) # load weights into new model model.load_weights("model.h5") print("Loaded model from disk") model.compile(loss=''categorical_crossentropy'', optimizer=''adam'', metrics=[''accuracy'']) cap = cv2.VideoCapture(0) while True: ret, img = cap.read() img, contours, thresh = get_img_contour_thresh(img) ans = '''' if len(contours) > 0: contour = max(contours, key=cv2.contourArea) if cv2.contourArea(contour) > 500: x, y, w, h = cv2.boundingRect(contour) newImage = thresh[y:y + h, x:x + w] newImage = cv2.resize(newImage, (28, 28)) newImage = np.array(newImage) newImage = newImage.astype(''float32'') newImage /= 255 if K.image_data_format() == ''channels_first'': newImage = newImage.reshape(1, 28, 28) else: newImage = newImage.reshape(28, 28, 1) newImage = np.expand_dims(newImage, axis=0) ans = model.predict(newImage).argmax() x, y, w, h = 0, 0, 300, 300 cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.putText(img, "CNN : " + str(ans), (10, 320), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.imshow("Frame", img) cv2.imshow("Contours", thresh) if cv2.waitKey(1) & 0xFF == ord(''q''): break cap.release() cv2.destroyAllWindows() def main(): show_webcam(mirror=True) if __name__ == ''__main__'': main()

Recibo este error

File "cam.py", line 75, in <module> main() File "cam.py", line 71, in main show_webcam(mirror=True) File "cam.py", line 34, in show_webcam img, contours, thresh = get_img_contour_thresh(img) File "cam.py", line 10, in get_img_contour_thresh gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.error: OpenCV(3.4.4) C:/projects/opencv- python/opencv/modules/imgproc/src/color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function ''cv::cvtColor''

He estado buscando una solución por un tiempo, pero no he tenido suerte en resolver esto, traté de mirar a mi alrededor pero no puedo entenderlo, ¿qué piensan ustedes? Apreciamos la ayuda prestada


El error que está viendo es uno que ocurre si None se pasa None en cv2.cvtColor .

Después

ret, img = cap.read()

es una buena idea verificar que img is not None antes de continuar. Dependiendo de su fuente de entrada, cap.read() puede fallar. Una de mis computadoras portátiles, falla al menos una vez antes de comenzar a devolver imágenes válidas.