Faits: Faits: A. Le 15 décembre 2003, le Ministère public du canton de Neuchâtel a rendu une ordonnance pénale à l'encontre de A._. Il a reconnu celui-ci coupable d'infraction aux art. 90 al. 1 LCR et 41 al. 1bis OCR pour avoir stationné son véhicule automobile pendant plus d'une heure sur un trottoir sans laisser un passage d'au moins 1,5 m pour les piétons. Cette décision, notifiée le 16 décembre 2003 et reçue par A._ le 23 décembre suivant, indique la voie de l'opposition à former auprès du Ministère public, dans les vingt jours suivant sa réception (cf. art. 13 al. 1 CPPN). Le 12 janvier 2004 - soit le dernier jour du délai -, A._ a formé opposition. Sur l'enveloppe contenant la déclaration y relative est apposé un sceau de l'office postal de Neuchâtel portant la date du 13 janvier 2004 à 14h. Le 14 janvier 2004, sans entendre A._, le Procureur général a déclaré l'opposition irrecevable pour tardiveté. Par arrêt du 9 juillet 2004, la Chambre d'accusation du Tribunal cantonal du canton de Neuchâtel a rejeté le recours formé par A._ contre cette décision. Par arrêt du 9 juillet 2004, la Chambre d'accusation du Tribunal cantonal du canton de Neuchâtel a rejeté le recours formé par A._ contre cette décision. B. Agissant par la voie du pourvoi en nullité, A._ demande au Tribunal fédéral d'annuler l'arrêt du 9 juillet 2004 et de renvoyer la cause à la Chambre d'accusation pour nouvelle décision au sens des considérants. Il se plaint d'arbitraire. Il requiert l'assistance judiciaire. La Chambre d'accusation et le Ministère public se réfèrent à l'arrêt attaqué.