Mark Whitis's Website Home Page Linux Book: Linux Programming Unleashed My Resume Genealogical Data Contact Info Security About

[HOME(Mark Whitis)] [Contact] [Resume] [Browser Friendly] [No Spam] [FEL] [DBD]

QV-10A

The QV-10A does not do well in low light levels, such as normal indoor lighting (it does even worse in lower light levels such as a bar) and produces underexposed, noisy (grainy) images which are often blurry because of the long exposure time used at these light levels; otherwise, I would have taken more pictures during the talks. The QV-10A can store 96 separate 320x240 resolution (after aspect ratio correction) still images. The newer QV-100 and QV-300 models can do 640x480. A dye sublimation printer is available which talks directly to the camera for printing the images. Note that the new QV-700 model has a flash.

These images have been processed with cjpeg/djpeg and NetPBM under linux to correct aspect ratio, brightness, and rotation and to produce the thumbnails.

There is a command line program called QVplay available on the net which runs under various un*x variants as well as ms-dos and windows and which allows upload and download of images and taking a picture. There seem to be some utilities for other brands on the same ftp site. Note that while QVplay's documentation is all in Japanese, it is pretty easy to install. Untar, run configure, run make, copy binary. And this command will list available options:

   qvplay -h 
Note that the speed setting needs to be numeric despite what the help says.

Casio, the company, is pretty worthless. They have been unresponsive to inquiries regarding the camera. The camera is only useful because of a driver program developed by a private individual, who works for sony. Incidently, sony now sells the Sony Mavica which has a power zoom and instead of having a computer interface writes images in standard jpeg format to 3-1/2" floppies, making

Here is someone else's review of the QV-10. Since Casio's web page is down, you won't find a link here. Downloading images

Solaris: qvplay -D /dev/cua/b -S 38400 -v -a
Linux: qvplay -D /dev/cua1 -S 38400 -v -a

Processing the images

The following processing takes care of I normally download the images into a directory such as images/qv/$DATE/raw and run the scripts from the parent directory.

Script1

This script merely generates script2 from the directory listing.
echo "This script makes script 2.  Do not rerun"
echo -n "Press return to continue, ctrl-c to abort"
dirname=qv/`basename \`pwd\``
read
(
  cd raw
  for i in *.jpg; do echo "echo $i; djpeg raw/$i | ppmnorm | pnmscale -xsize 320 -ysize 240 | pnmflip | cjpeg -quality 90 | wrjpgcom -comment \"Copyright (c) 1997 by Mark Whitis (whitis@freelabs.com).  All Rights Reserved.  Image $dirname/$i\">processed/$i" >>../script2; done
)
chmod +x script2
mkdir processed
mkdir thumbnail

Script2

This script is generated by script 1 and contains a long line of PBM/jpeg utility commands to process each image. Edit each line as appropriate. i.e. add "-cw", "-ccw", or "-r180" to pnmflip to rotate the image if necessary. I frequently add "-wpercent 10" to ppmnorm for underexposed images, sometimes using values of 5 or 20 instead. Usually doesn't do much harm to properly exposed images so I frequently add it to the whole file.

Script3

This script is used to make a HTML page "index.html" from a collection of images, including making the necessary thumbnails.
mkdir thumbnail
dirname=qv/`basename \`pwd\``

cd processed
for i in *.jpg; do echo $i; djpeg $i | pnmscale -xscale 0.2 -yscale 0.2 | cjpeg -quality 90 | wrjpgcom -comment "Copyright (c) 1997 by Mark Whitis (whitis@freelabs.com).  All Rights Reserved.  Image $dirname/$i" >../thumbnail/$i;done
cd ..
cd processed
echo Making index.html
for i in *.jpg; do
   echo "   $i"
   read a b c d e f g <<-===END===
      `djpeg ../thumbnail/$i | pnmfile`
===END===
   echo "<BR>" >>../index.html
   echo "  <A HREF=processed/$i>" >>../index.html
   echo "  <IMG SRC=thumbnail/$i ALT=[$i] WIDTH=$d HEIGHT=$f>" >>../index.html
   echo "  </A>" >>../index.html
   echo "  [$i]" >>../index.html
done

Making an index page


mkdir pnm
cd processed
# for i in qv_*.jpg; do echo $i; djpeg $i >../pnm/`basename $i .jpg`.ppm; done
cd ..
cd pnm
echo making index
./pnmindex.modified -size 300 -across 7 qv_*.ppm >index.ppm
cjpeg -quality 90 <index.ppm | wrjpgcom -comment "copyright (c) 1997 by Mark Whitis (whitis@freelabs.com).  All Rights Reserved.  Image images/halloween/1996/index.jpg" >index.jpg
# cat index.ppm | pnmtops -scale 0.25 -dpi 360 | lpr

Here are the necessary diffs for pnmindex to make pnmindex.modified.
*** /local/bin/pnmindex	Wed Jul 17 05:48:48 1996
--- pnm/pnmindex.modified	Tue Oct 21 00:24:03 1997
***************
*** 22,29 ****
  	case -s*:
  	if ( $#argv < 2 ) goto usage
  	set size="$2"
  	shift
- 	shift
  	breaksw
  
  	case -a*:
--- 22,29 ----
  	case -s*:
  	if ( $#argv < 2 ) goto usage
  	set size="$2"
+  	shift
  	shift
  	breaksw
  
  	case -a*:
***************
*** 77,83 ****
  
      set description=`pnmfile $i`
      if ( $description[4] <= $size && $description[6] <= $size ) then
! 	cat $i > $tmpfile
      else
  	switch ( $description[2] )
  	    case PBM:
--- 77,84 ----
  
      set description=`pnmfile $i`
      if ( $description[4] <= $size && $description[6] <= $size ) then
! 	# cat $i > $tmpfile
!         pnmmargin -white 8 <$i >$tmpfile
      else
  	switch ( $description[2] )
  	    case PBM:
***************
*** 92,98 ****
  	    breaksw
  
  	    default:
! 	    pnmscale -quiet -xysize $size $size $i | ppmquant -quiet $colors > $tmpfile
  	    set maxformat=PPM
  	    breaksw
  	endsw
--- 93,99 ----
  	    breaksw
  
  	    default:
! 	    pnmscale -quiet -xysize $size $size $i | pnmmargin -white 8 | ./ppmnoquant -quiet $colors > $tmpfile
  	    set maxformat=PPM
  	    breaksw
  	endsw
***************
*** 113,119 ****
  	if ( $maxformat != PPM ) then
  	    pnmcat $back -lr -jbottom $imagefiles > $rowfile
  	else
! 	    pnmcat $back -lr -jbottom $imagefiles | ppmquant -quiet $colors > $rowfile
  	endif
  	rm -f $imagefiles
  	set imagefiles=()
--- 114,120 ----
  	if ( $maxformat != PPM ) then
  	    pnmcat $back -lr -jbottom $imagefiles > $rowfile
  	else
! 	    pnmcat $back -lr -jbottom $imagefiles | ./ppmnoquant -quiet $colors > $rowfile
  	endif
  	rm -f $imagefiles
  	set imagefiles=()
***************
*** 132,138 ****
      if ( $maxformat != PPM ) then
  	pnmcat $back -lr -jbottom $imagefiles > $rowfile
      else
p! 	pnmcat $back -lr -jbottom $imagefiles | ppmquant -quiet $colors > $rowfile
      endif
      rm -f $imagefiles
      set rowfiles=( $rowfiles $rowfile )
--- 133,139 ----
      if ( $maxformat != PPM ) then
  	pnmcat $back -lr -jbottom $imagefiles > $rowfile
      else
! 	pnmcat $back -lr -jbottom $imagefiles | ./ppmnoquant -quiet $colors > $rowfile
      endif
      rm -f $imagefiles
      set rowfiles=( $rowfiles $rowfile )
***************
*** 144,150 ****
      if ( $maxformat != PPM ) then
  	pnmcat $back -tb $rowfiles
      else
! 	pnmcat $back -tb $rowfiles | ppmquant -quiet $colors
      endif
  endif
  rm -f $rowfiles
--- 145,151 ----
      if ( $maxformat != PPM ) then
  	pnmcat $back -tb $rowfiles
      else
! 	pnmcat $back -tb $rowfiles | ./ppmnoquant -quiet $colors
      endif
  endif
  rm -f $rowfiles

Here is ppmnoquant
#!/bin/sh
cat

Displaying images

I normally use xv.

Editing images

Besides the PBM and cjpeg/djpeg utilities, GIMP is available for interactive editing.

Protocol

QV-10 Serial Communications Protocol

This file is maintained by Mark Whitis (whitis@freelabs.com).

Senior Engineer for hire
Software Development - Electronic Design - Embedded Systems - Device Drivers - System/Network Administration and Security - Motor Control, RobotCNC - Linux/Un*x - 25+ years experience
The author of these pages is looking for a new gig.
[RESUME]

Engineers and electronic hobbyists: The new Open Symbol Project is creating open schematic symbols and PCB footprints for a variety of different CAD packages.

Mark Whitis's Website Home Page Linux Book: Linux Programming Unleashed My Resume Genealogical Data Contact Info Security About

All email messages received must pass the turing test or they will be considered SPAM. If it could have been written by a machine, it was.

Under no circumstances are you to email me with questions regarding windoze, any other microsoft operating system or application, or any software which runs under any form of windoze.

*