I'm scanning a bunch of old prints from the days before digital photography. Some of those pictures have a date stamp in the lower right. Is there a tool that will check the corners for a date stamp, read it, and then set it in the jpeg's metadata. I'd love for Google Photos and other tools to actually know when each photo was taken.

  • 2
    \$\begingroup\$ sounds like a good idea actually. But I think you're going to be out of luck... \$\endgroup\$
    – osullic
    Oct 21, 2017 at 13:37
  • \$\begingroup\$ This question seems to be a good fit for softwarerecs.stackexchange.com \$\endgroup\$
    – Olivier
    Oct 21, 2017 at 18:19
  • \$\begingroup\$ I was secretly hoping this could be a hobby programming project. I started on the prototype last night. \$\endgroup\$
    – mjk99
    Oct 23, 2017 at 15:37

1 Answer 1


That's a fun (and useful) project and that is a Computer vision project (artifical intelligence applied to real images). The reference open source framework is OpenCV. You have all the needed tools and algorithms included for your project. I won't give you a recipe since it seems it would be your hobby project.

Eventually you might want to use the python interface to call opencv functions, it might be a bit faster to write the program; however writing in c++ is perfectly fine to me, you "just have to" deal with pointers and manage memory yourself, which can be needing skills. In opencv you have several GUI integrations (Qt, winforms, etc), and c++ and python are the right languages (in particular for PyQt and Qt).

To prototype new algorithms, the professionnal practice is to work with Matlab. Prototyping with Matlab is the fastest. It is also the most expensive in terms of money.

Eventually, if you want to use a deep learning framework, you have Torch and Caffe. OpenCV can load Caffe models. But in my opinion, classical computer vision should be sufficient. In the deep mearning case, you don't need Matlab, even though they have since 2017b deep learning integration, which can be a bit faster for prototyping.

The right engineering pratice is usually to prototype fast (matlab, or python, then c++/openmp/cuda), then to go for heavier work with c++ (you can export your matlab functions into c++). Except for deep learning, you go directly with Lua (or Matlab), since it's super heavy on the GPU (without which you can forget doing deep learning), and you let big compagnies such as Nvidia do the low level optimizations in their drivers.

Good luck with your project !

  • \$\begingroup\$ I also found Tesseract, an open-source OCR engine. I'm rolling my own though. I find it's more fun to do it myself than learn how to use a library that can do it. \$\endgroup\$
    – mjk99
    Dec 11, 2017 at 15:38
  • \$\begingroup\$ Didn't try Tesseract, but commercial ones, and they spectacularly underperform in comparison to the state of the art in CV. The good thing with programming our stuff is that we include them in our workflow and engineer it to fit our needs. Eventually if you like your results, you might create an open source deposit, eg. on github. I'm sure other people might contribute and enjoy it. \$\endgroup\$
    – Soleil
    Dec 12, 2017 at 13:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.