The ability to determine how many more packets are expected is determined by the transport-layer protocol, or the application-layer protocols (off-topic). For instance, UDP is a best-effort, fire-and-forget, transport-layer protocol which has no such ability because the receiving UDP is not even really expecting to receive any more packets; that would be up to the application-layer protocol (off-topic).
A message from an application will be divided into segments by the transport-layer protocol. The segments, including the transport-layer header must fit in the payload of a packet of MTU size, which must then fit within the payload of a frame for the link.
You need to know the header size of the transport-layer protocol, and the payload size of the network protocol for that link type in order to determine how many packets are needed for the message.
It can get messier if one of the links in the path has a smaller MTU size than the original link. This can cause fragmentation where the larger packets need to be fragmented to traverse the link. The receiving host will need to reassemble the packets making up the fragments of the original packets. Each fragment is a packet, so are you counting them as packets?