The migrants, including eight women and 13 minors, were spotted by a helicopter patrolling the seas off Italy on Wednesday as part of an operation launched after two October shipwrecks in which hundreds drowned.
Two of the women were pregnant, the navy said in a statement.
The migrants were transferred on board the San Giorgio frigate and were being taken to the Sicilian port town of Augusta.
Thousands of migrants are continuing to arrive on Italy's shores every month despite rougher seas during winter when there is usually a let-up in landings.
Last week close to 4,500 migrants were rescued over three days, according to the International Organisation of Migration.
Italy began its operation "Mare Nostrum" - ("Our Sea") a Latin reference to the Mediterranean - after more than 400 migrants from Eritrea and Syria perished in twin tragedies off Italian shores in October 2013.
Immigration charities estimate that between 17,000 and 20,000 migrants have died at sea trying to reach Europe over the past 20 years.