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.