It worked after 2 tries on my iPhone with a Canadian passport (initially, the RFID step didn't read anything).
Interestingly, I think that you may have the rgb channels wrong during the photo extraction -- the photo was "correct" but the colors were wrong (maybe b and r are flipped?)
I tried another app [0] just to double check and it decoded the photo correctly.
I also found/read a bit of info from the Canadian government about epassports [1]. One interesting tidbit that was news to me: "For the chip [...] to be read, [...] the date of the individual’s birth, the date of expiration of the passport and the passport number must also first be provided to the reader". i.e. the RFID chip does an exchange/check first rather than spit out everything to any nearby RFID reader.
I suppose it's not feasible to brute force all of those pieces of data (passport expiration, etc.) fast enough to read passports in RFID vicinity.
[0] https://www.readid.com/demo-app
[1] https://www.canada.ca/en/news/archive/2014/05/technical-info...