2010-01-15

Installing PyQt4

Currently, the best combination is:
  • Python 2.6.4 - more compatible with third party packages than Python 3.0
  • PyQt4 version 4.6.2
Most importantly, get the 32-bit installer for Python even if your machine & OS are 64 bit -- PyQt4 only works with 32 bit Python.

    2010-01-12

    RANSAC dan good features to track

    http://en.wikipedia.org/wiki/RANSAC

    http://mrl.nyu.edu/~bregler/classes/vision_fall06/shi_tomasi_94.pdf

    2010-01-06

    How to install pyqt4 on ubuntu linux

    Install and run "hello world" example
    • Install it
    sudo apt-get install python-qt4
    • Create a file ~/tmp/helloworld.py
    import sys
    from PyQt4.QtGui import *
    app = QApplication(sys.argv)
    button = QPushButton("Hello World", None)
    button.show()
    app.exec_()
    

    • Run it:
    python ~/tmp/helloworld.py


  • You should see a window with a single button pop up.



  • Install additional examples
    • For more examples, install the python-qt4-doc package: 

    sudo apt-get install python-qt4-doc

    • After installation, the examples are located at: 
    /usr/share/doc/python-qt4-doc/examples

    2010-01-05

    Good PyQt4 Tutorial

    http://zetcode.com/tutorials/pyqt4

    2009-12-28

    How to use openCV with Python

    Here's a short example showing how to use openCV with Python.It reads an image from a file, displays the image, the Harris corner detector on that image and the Canny edge image:
    (save this in a file named tmp.py and run with: python tmp.py )



    http://pythonimage.blogspot.com/2009/04/opencv-example.html

    How to crop images in Python OpenCV

    http://amiest-devblog.blogspot.com/2008/08/how-to-crop-images-with-opencv-in.html

    2009-09-08

    Converting SVG to PDF

    Inkscape output to PDF or save to PDF is no good. It changes the fonts to ugly Bitstream Vera whatever. Use Batik Rasterizer instead.


    Install it anywhere you like. In my case, it's located in /opt/batik.

    To convert files, use the command as shown (assuming you're in the directory where the SVG file is located):

    $ java -jar /opt/batik/batik-rasterizer.jar -m application/pdf Figure1.svg


    2009-09-03

    Getting LibSVM to work with Weka on Mac

    Somehow, the only way to use LibSVM with Weka is by using the bash command-line.

    Step 1: Get Weka.
    Assume the bleeding edge version 3.7.0. Unzip and put in /Applications folder.

    Step 2: Get LibSVM.
    a. Iowa State site (http://www.cs.iastate.edu/~yasser/wlsvm/wlsvm.zip):
    If you use Safari to download, it will be unzipped in the Downloads directory. The files you need are ~/Downloads/WLSVM/lib/wlsvm.jar and /Downloads/WLSVM/lib/libsvm.jar
    b. Taiwan site(http://www.csie.ntu.edu.tw/~cjlin/libsvm/libsvm-2.89.zip):
    Using Safari to download, the file you need is ~/Downloads/libsvm-2.89/java/libsvm.jar

    Step 3: Open Terminal and copy to Weka.app. Assume you have privileges to write into Weka.app.
    a. Iowa State version:
    $ cp ~/Downloads/WLSVM/lib/*.jar /Applications/Weka/weka-3-7-0.app/Contents/Resources/Java
    b. Taiwan version:
    $ cp ~/Downloads/libsvm-2.89/java/libsvm.jar /Applications/Weka/weka-3-7-0.app/Contents/Resources/Java

    Step 4: Set CLASSPATH
    $ export CLASSPATH=$CLASSPATH:/Applications/Weka/weka-3-7-0.app/Contents/Resources/Java/

    Step 5:Run Weka from Terminal!
    $ java -classpath $CLASSPATH:weka.jar:libsvm.jar weka.gui.GUIChooser &

    Conclusion: Bash sucks less!

    2009-08-13

    Screen Capture on Mac

    Unlike the PC, the Mac has no PrtScreen button. To capture a screen, use cmd-shift-4 to take screenshots and save to disk, and cmd-ctrl-shift-4 to take screenshots and copy to clipboard.

    The captured screen will be on the desktop named Picture 1.pdf, Picture 2.pdf and so on. Some blogs say the default filetype is PNG, but not on my Mac.

    To change default filetype to some other filetype, launch Terminal, and depending on what file type you want outputted, type (or copy and paste) the appropriate line below followed by return:

    defaults write com.apple.screencapture type pdf
    defaults write com.apple.screencapture type png
    defaults write com.apple.screencapture type jpg
    defaults write com.apple.screencapture type tif


    Quit Terminal, log out of your account and log in for the change to take effect right away. To revert to the default png format, type 'defaults write com.apple.screencapture type png' as shown above (no single quotes), or delete the com.apple.screencapture plist file in your user preferences folder (no need to restart).

    Using Canny edge detection in OpenCV

    The second Python example works on my MacBook. So HighGUI does work on the Mac OS X.

    Batch Image Processing with Python

    Adapted from http://www.coderholic.com/batch-image-processing-with-python/

    If you want to make changes to a single image, such as resizing or converting from one file format to another, then you’ll probably load up the image in an editor and manually make the required changes. This approach is great for a single image, but it doesn’t really scale past more than a few images, at which point it becomes time consuming, not to mention boring!

    This is where Python and the Python Imaging Library (or PIL) come in, allowing you to write scripts that process images in batch.

    Batch Processing

    No matter what processing we want to do on our images the script outline will be the same: loop over all provided arguments, and perform the processing. The code to do this is shown below:


    #!/usr/bin/env python
    import sys
    import Image

    # Loop through all provided arguments
    for i in range(1, len(sys.argv)):
    try:
    # Attempt to open an image file
    filepath = sys.argv[i]
    image = Image.open(filepath)
    except IOError, e:
    # Report error, and then skip to the next argument
    print "Problem opening", filepath, ":", e
    continue
    # Perform operations on the image here

    This will allow our script to be called in all of the following ways:

    $ batch_process.py image.gif
    $ batch_process.py image1.png image2.gif image3.jpg
    $ batch_process.py *.png
    $ batch_process.py image1.gif, *.png


    With the help of PIL the image processing is really simple. Below is a collection of just some of the operations we could perform. For more details see the PIL documentation.

    #Resize an image
    image = image.resize((width, height), Image.ANTIALIAS)

    # Convert to greyscale
    image = image.convert('L')

    # Blur
    image = image.filter(ImageFilter.BLUR)

    # Sharpen
    image = image.filter(ImageFilter.SHARPEN)

    Saving

    Once we’ve processed the image we need to save the changes. In some instances we might just want to save over the original filename. If that’s the case we can just call the save method of image with its original filename. If we want to save the file under a different name, or as a different filetype we need to do a little more work:

    # Split our original filename into name and extension
    (name, extension) = os.path.splitext(filepath)

    # Save with "_changed" added to the filename
    image.save(name + '_changed' + extension)

    # Save the image as a JPG
    image.save(name + '.jpg')

    Notice in the last example how PIL takes care of the conversion to JPG for us. All we do is provide the file extension and PIL does the rest for us.

    A Complete Example

    Each of the steps above can easily be put together to create a batch image processing script. Below is a complete script which creates thumbnails of all provided images, and saves them as PNG images, not matter what their original format:

    !/usr/bin/env python
    # Batch thumbnail generation script using PIL

    import sys
    import os.path
    import Image

    thumbnail_size = (28, 28)

    # Loop through all provided arguments
    for i in range(1, len(sys.argv)):
    try:
    # Attempt to open an image file
    filepath = sys.argv[i]
    image = Image.open(filepath)
    except IOError, e:
    # Report error, and then skip to the next argument
    print "Problem opening", filepath, ":", e
    continue

    # Resize the image
    image = image.resize(thumbnail_size, Image.ANTIALIAS)

    # Split our original filename into name and extension
    (name, extension) = os.path.splitext(filepath)

    # Save the thumbnail as "(original_name)_thumb.png"
    image.save(name + '_thumb.png')

    Instaling Eclipse for Python

    Be default, we all can use python interpreter to test smaller codes but really, it is not a feasible way to write fast code so you can use Eclipse, probably the best open source IDE in the market and create and manage python programs using it.

    IBM's Eclipse project was a veritable breath of fresh air, at a moment when it was most needed. The development of open source IDEs seemed to have stopped – with a lot of users sticking to emacs and vi, despite spectacular (but unfruitful) development from Kdevelop and Anjuta.

    Eclipse is very extensible and able to work with just about any programming language. In this short tutorial, we will talk about how to set up a Python development environment, using Eclipse and PyDev. The reference distribution is Ubuntu, but aside from the command to install packages, everything will be identical on any distribution.

    Step 1.
    Obtain and install the Java Runtime Environment (JRE). In most cases, there is a package readily available for most distributions, and it is a dependency for Eclipse. You only need to install JRE manually if there is no readily-available package, or if your package manager does not resolve dependencies automatically (and unless you are using plain RPM, without Yum, or Slackware's package manager without a tool like slapt-get, chances are it does)

    Step 2.
    Install Python. The version you use depends on your needs. PyDev has a rather wide support.

    Step 3.
    Install Eclipse and PyDev. Most distributions have a separate package for Eclipse and PyDev. However, there are a lot of distributions which do not provide a PyDev package, since Eclipse can install it itself.

    If PyDev cannot be installed by using the distribution's package manager, it can be installed by using Eclipse's Update Manager. To install PyDev from Eclipse, go to Help, Software Updates and click Find and Install.

    In the wizard window that appears, choose “Search for new features to install” and click Next. This will open a new window. Click “New Remote Site”, and in the dialog box that appears, enter “PyDev Extensions” in the Name text box, and http://www.pydev.com.br/updates in the URL text box. Click Ok and follow the subsequent on-screen instructions.

    Step 4.
    Configure the Python interpreter. After you have installed PyDev, open Eclipse and go to Window, Preferences, PyDev, Interpretor – Python (or Jython if you use it instead of Python). Near the Python interpreters list box, click New and navigate to the Python executable on your system (it's usually /usr/bin/python. If it's not there, run the command 'which python' without quotes, and use the path it returns). PyDev will automatically detect some required settings. Once this is over, you are ready to go.

    You can now use Eclipse to work on your Python projects. Most project management functions should be familiar to you, and PyDev has a wide range of features, from code completion to refactoring tools.

    2009-08-12

    Installing Java on Ubuntu 9.04

    Currently Ubuntu has the following Java packages

    sun-java6-bin – Contains the binaries

    sun-java6-demo – Contains demos and examples

    sun-java6-doc – Contains the documentation

    sun-java6-fonts – Contains the Lucida TrueType fonts from the JRE

    sun-java6-jdk – Contains the metapackage for the JDK

    sun-java6-jre – Contains the metapackage for the JRE

    sun-java6-plugin – Contains the plug-in for Mozilla-based browsers

    sun-java6-source – Contains source files for the JDK


    Use the following command from a terminal

    sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts

    MacPorts commonly used commands

    As usual, this blog is for keeping notes, as I, like, keep forgetting commands.

    Installing a port (example given is for php):

    port search php
    port info php5
    port variants php5 sudo
    port -v install php5 +apache2 +mysql5

    Upgrade all outdated packages:

    sudo port selfupdate
    sudo port upgrade outdated

    Use the upgrade command with care. In the case of Python 2.5, it will update some of the libraries to 2.6, breaking half of the modules.

    For a complete list of all installed ports:

    sudo port installed

    2009-07-05

    2008-11-01

    ExifTool: It really saved my day

    Problem 1: My Coolpix has the year set to 2009, and we took close to a hundred pictures before we realized the error.

    Problem 2: This is really a Canon vs Nikon thing. I like my Nikon camera but I like the Canon software better which creates folders according to the picture creation date. If the Canon software would just download data from a Nikon camera, this wouldn't be problem.

    So today I discovered ExifTool, installed in on MacBook and voila! Windows users have to install Perl first.

    Of course, first you have to navigate to the folder containing the pictures.

    To solve problem #1, give this command.


    exiftool "-AllDates-=1:: 0" *.jpg


    To solve problem 2, give this command:

    exiftool -d %Y_%m_%d "-directory<datetimeoriginal" jpg="">