Improve QR code detection for VR #73

Merged
dsc merged 1 commits from :improve-qr-code-detection into master 3 years ago

@ -184,31 +184,33 @@ namespace wowletvr {
auto results = m_qrDecoder.decodePNG(path);
auto result = wowletvr::WowletVR::checkQRScreenshotResults(results);
qDebug() << "no initial results";
qDebug() << "QR code try #1: " << result;
if(result.isEmpty()) {
qDebug() << "trying to invert the image";
// lets try to invert the image
QImage image(path);
image.invertPixels();
image.save(pathPreview);
results = m_qrDecoder.decodePNG(pathPreview);
result = wowletvr::WowletVR::checkQRScreenshotResults(results);
qDebug() << "QR code try #2: " << result;
}
if(!result.isEmpty()) {
qDebug() << "Found QR code after inverting the image.";
qDebug() << "QR code decoded, trying address validation.";
if(result.toLower().startsWith("wownero:"))
result = result.remove(0, 8);
if(WalletManager::addressValid(result, NetworkType::MAINNET)) {
qDebug() << "QR code appears valid.";
emit qrScreenshotSuccess(result);
QFile file(path);
file.remove();
return;
}
} else {
qDebug() << "QR code found.";
emit qrScreenshotSuccess(result);
QFile file (path);
file.remove();
return;
}
emit qrScreenshotSuccess("No QR code could be detected.");
emit qrScreenshotFailed("No QR code could be detected.");
}
QString WowletVR::checkQRScreenshotResults(std::vector<std::string> results) {

@ -51,13 +51,9 @@ ColumnLayout {
function onQrScreenshotSuccess(address) {
root.takingScreenshot = false;
console.log("onPinLookupReceived", address);
if(!address.startsWith("wownero:")) {
messagePopup.showMessage("Invalid QR code", "QR data did not start with \"wownero:\"");
return;
}
if(sendStateView.currentView === sendStateView.qrPage) {
sendStateController.destinationAddress = address.slice(8);
sendStateController.destinationAddress = address;
sendStateView.state = "transferPage";
}
}

Loading…
Cancel
Save