# apply gamma if gamma != -1: pi = imageGamma(pi, (gamma,gamma,gamma)) # rotate image pi = pi.rotate(90) if ratio != 1: pi = pi.resize((int(pi.size[0] * ratio), int(pi.size[1] * ratio)), Image.ANTIALIAS) # if jpg swap RGB #if jp4: #pi = swapRGB(pi) # add frame - if full save logs isFull = slitscanner.addFrame(pi) # preview display if display: scale = out_w / float(screen[0]) if out_h / float(screen[1]) > scale: scale = out_h / float(screen[1]) if scale < 1: scale = 1 tile = swapRGB(slitscanner.getImage()) cv_im = PIL2Ipl( tile.resize( ((int) (tile.size[0]/scale), (int) (tile.size[1]/scale)), Image.NEAREST)) #now show cv.ShowImage("preview",cv_im) if flag_calibration: ts = 24
if bearing < 90: angle = -(90 - bearing) else: angle = bearing - 90 img_rot = img.rotate(angle, Image.BICUBIC, True) rot = img_rot.crop( ( img_rot.size[0] / 2 - size[0] / 2, img_rot.size[1] / 2 - size[1] / 2, img_rot.size[0] / 2 + size[0] / 2, img_rot.size[1] / 2 + size[1] / 2, ) ) slitscanner.addFrame(rot) # draw crosshair (debug output) draw = ImageDraw.Draw(rot) draw.line((0, img.size[1] / 2, img.size[0], img.size[1] / 2), fill=128) draw.line((img.size[0] / 2, 0, img.size[0] / 2, img.size[1]), fill=128) del draw # visual debug/preview output via opencv if display: cv_img = cv.CreateImageHeader(rot.size, cv.IPL_DEPTH_8U, 3) cv.SetData(cv_img, rot.tostring()) cv.CvtColor(cv_img, cv_img, cv.CV_RGB2BGR) cv.ShowImage("current", cv_img) scan_img = slitscanner.getImage()