how to upload pdf file in database using asp.net c# : Search pdf for text in multiple files control application system azure html wpf console PsychoPyManual24-part826

CHAPTER
TEN
RECIPES (“HOW-TO”S)
Below are various tips/tricks/recipes/how-tos for PsychoPy. They involve something thatis a little more involved than
you would find in FAQs, but too specific for the manual as such (should they be there?).
10.1 Adding external modules to Standalone PsychoPy
Youmightfind that you want to addsome additional Pythonmodule/package to yourStandalone version ofPsychoPy.
To do this you need to:
• download a copy of the package (make sure it’s for Python 2.7 on your particular platform)
• unzip/open it into a folder
• add that folder to the path of PsychoPy by one of the methods below
Avoid adding the entire path (e.g. thesite-packages folder) of separate installation of Python, becausethatmay contain
conflicting copies of modules that PsychoPy is also providing.
10.1.1 Using preferences
As of version 1.70.00 you can do this using the PsychoPy preferences/general. There you will find a preference for
pathswhichcanbesettoalistofstringse.g.[’/Users/jwp/code’,‘~/code/thirdParty’]
These only get added to the Python path when you import psychopy(orone of the psychopy packages) in your script.
10.1.2 Adding a .pth file
An alternative is to add a file into the site-packages folder of your application. This file should be pure text and have
the extension .pth to indicate to Python that it adds to the path.
On win32 the site-packages folder will be something like:
C:/Program Files/PsychoPy2/lib/site-packages
On OS X you need to right-click the application icon, select ‘Show Package Contents’ and then navigate down to
Contents/Resources/lib/python2.6. Put your.pth file here, next to the various libraries.
The advantage of this method is that you don’t need to do the import psychopy step. The downside is that when you
update PsychoPy to a newmajor release you’ll need to repeat this step (patch updates won’t affect it though).
235
Search pdf for text in multiple files - search text inside PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn how to search text in PDF document and obtain text content and location information
pdf select text; text searchable pdf
Search pdf for text in multiple files - VB.NET PDF Text Search Library: search text inside PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn How to Search Text in PDF Document and Obtain Text Content and Location Information in VB.NET application
search text in multiple pdf; find and replace text in pdf
PsychoPy - Psychology software for Python, Release 1.84.0
10.2 Animation
General question: How can I animate something?
Conceptually, animation just means that you vary some aspect of the stimulus over time. So the key idea is to draw
something slightly different on each frame. This is how movies work, and the same principle can be used to create
scrolling text,or fade-in / fade-out effects, and the like.
(copied & pasted fromthe email list; see the list for people’s names and a working script.)
10.3 Scrolling text
Key idea: Vary the position of the stimulus across frames.
Question: How can I produce scrolling text (like html’s <marquee behavior = “scroll” >directive)?
Answer: PsychoPy has animation capabilities built-in (it can even produce and export movies itself (e.g. if you want
to show yourstimuli in presentations)). But here you just want to animate stimuli directly.
e.g. create a text stimulus. In the ‘pos’ (position) field, type:
[frameN, 0]
and select “set every frame” in the popup button next to that field.
Push the Run button and your text will move from left to right, at one pixel per screen refresh, but stay at a fixed
y-coordinate. In essence,you can enter an arbitrary formula in the position field and the stimulus will be-redrawn at a
new position on eachframe. frameNhere refers to the number of frames shownsofar, and you canextend the formula
to produce what you need.
You might findperformance issues (jittering motion)ifyoutry to render a lot of text in one go,in which case you may
have to switch to using images of text.
Iwanted my text to scroll fromright to left. Soif you keep your eyes in the middle ofthe screen the next word to read
would come from the right (as if you were actually reading text). The original formula posted above scrolls the other
way. So, you have to put a negative sign in front of the formula for it to scroll the other way. You have to change the
units to pixel. Also, you have to make sure you have an end time set, otherwise it just flickers. I also set my letter
height to 100 pixels. The other problemI had was that I wanted the text to start blank and scroll into the screen. So, I
wrote
[2000-frameN, 0]
and this worked reallywell.
10.4 Fade-in / fade-out effects
Key idea: vary the opacity of the stimulus overframes.
Question: I’d like to present an image with the image appearing progressively and disappearing progressively too.
How todo that?
Answer: The Patch stimulus has an opacity field. Set the button next to it to be “set every frame” so that its value can
be changed progressively,and enter anequation in the box that does what you want.
e.g. if yourscreen refresh rate is 60 Hz, then entering:
frameN/120
236
Chapter 10. Recipes (“How-to”s)
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Divide PDF file into multiple files by outputting PDF file size. Split Split PDF Document into Multiple PDF Files Demo Code in VB.NET. You
how to select text in pdf reader; search pdf files for text
C# PDF File Split Library: Split, seperate PDF into multiple files
pages. Divide PDF file into multiple files by outputting PDF file size. Split outputFiles); Split PDF Document into Multiple PDF Files in C#. You
search pdf for text; text select tool pdf
PsychoPy - Psychology software for Python, Release 1.84.0
would cycle the opacity linearly from 0 to 1.0 over2s (it will then continue incrementing butit doesn’t seem to matter
ifthe value exceeds 1.0).
Using a code component might allow you to do more sophisticated things (e.g. fade in for a while, hold it, then fade
out). Or more simply, you just create multiple successive Patch stimulus components, each with a different equation
orvalue in the opacity field depending on their place in the timeline.
10.5 Building an application from your script
Alot of people ask how they can build a standalone application fromtheir Python script. Usually this is because they
have a collaborator and want to just send them the experiment.
In general this is not advisable - the resulting bundle of files (single file on OS X) will be on the order of 100Mb
and will not provide the end user with any of the options that they might need to control the task (for example,
Monitor Centerwon’t be providedso theycan’t to calibrate theirmonitor). A better approachin general is to get your
collaboratorto install the Standalone PsychoPy ontheir own machine, openyour scriptand press run. (You don’t send
acopy of Microsoft Word when you send someone a document -you expect the reader to install it themself and open
the document).
Nonetheless, it is technically possible to create exe files on Windows, and Ricky Savjani (savjani at bcm.edu) has
kindly provided the followinginstructions for howto do it. A similar process might be possible on OS Xusing py2app
-if you’ve done that then feel free to contribute the necessary script or instructions.
10.5.1 Using py2exe to build an executable
Instructions:
1. Download and install py2exe (http://www.py2exe.org/)
2. Develop your PsychoPy script as normal
3. Copy this setup.py file into the same directory as yourscript
4. Change the Name of progName variable in this file to the Name ofyour desired executable program name
5. Use cmd (or bash,terminal, etc.) and run the following in the directory of your the twofiles: python
setup.py py2exe
6. Open the ‘dist’ directoryand run your executable
Aexample setup.py script:
#
Created 8-09-2011
#
Ricky Savjani
#
(savjani at bcm.edu)
#import necessary packages
from distutils.core import setup
import osmatplotlib
import py2exe
#the name of your .exe file
progName 'MultipleSchizophrenia.py'
#Initialize Holder Files
preference_files = []
app_files = []
my_data_files=matplotlib.get_py2exe_datafiles()
10.5. Building an application from your script
237
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
VB.NET Demo code to Combine and Merge Multiple PDF Files into One. This part illustrates how to combine three PDF files into a new file in VB.NET application.
search text in pdf image; pdf find text
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
& pages edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET search text in PDF, C# Turn multiple pages PDF into multiple jpg files
pdf search and replace text; cannot select text in pdf
PsychoPy - Psychology software for Python, Release 1.84.0
#define which files you want to copy for data_files
for files in os.listdir('C:\\Program Files\\PsychoPy2\\Lib\\site-packages\\PsychoPy-1.65.00-py2.6.egg\\psychopy\\preferences\\'):
f1 'C:\\Program Files\\PsychoPy2\\Lib\\site-packages\\PsychoPy-1.65.00-py2.6.egg\\psychopy\\preferences\\' + files
preference_files.append(f1)
#if you might need to import the app files
#for files in os.listdir('C:\\Program Files\\PsychoPy2\\Lib\\site-packages\\PsychoPy-1.65.00-py2.6.egg\\psychopy\\app\\'):
#
f1 = 'C:\\Program Files\\PsychoPy2\\Lib\\site-packages\\PsychoPy-1.65.00-py2.6.egg\\psychopy\\app\\' + files
#
app_files.append(f1)
#all_files = [("psychopy\\preferences", preference_files),("psychopy\\app", app_files), my_data_files[0]]
#combine the files
all_files = [("psychopy\\preferences", preference_files), my_data_files[0]]
#define the setup
setup(
console=[progName],
data_files = all_files,
options = {
"py2exe":{
"skip_archive"True,
"optimize"2
}
}
)
10.6 Builder - providing feedback
If you’re using the Builder then the way to provide feedback is with aCodeComponentto generate an appropriate
message (and then aTextComponentto present that message). PsychoPy will be keeping track of various aspects of
the stimuli and responses for you throughout the experiment and the key is knowing where to find those.
The following examples assume you have aLoop called trials, containing aRoutine with aKeyboardComponent
called key_resp. Obviously these need to be adapted in the code below to fit your experiment.
Note: The following generate strings use python ‘formatted strings’. These are very powerful and flexible but a little
strange when you aren’t used to them (they contain odd characters like %.2f). SeeGeneratingformattedstringsfor
more info.
10.6.1 Feedback after a trial
This is actually demonstrated in the demo,ExtendedStroop (in the Builder>demos menu,unpack the demos and then
look in the menu again. tada!)
If you have a Keyboard Component called key_resp then, after every trial you will have the following variables:
key_resp.keys #a python list of f keys s pressed
key_resp.rt #the time e to o the first key y press
key_resp.corr #None, 0 0 or r 1, , if f you u are using 'store correct'
To create your msg, insert the following into the ‘start experiment‘section of theCodeComponent:
238
Chapter 10. Recipes (“How-to”s)
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
online C#.NET source code for combining multiple PDF pages together PDF document splitting, PDF page reordering and PDF page image and text extraction.
how to select text in a pdf; search pdf documents for text
XDoc.Excel for .NET, Comprehensive .NET Excel Imaging Features
bookmarks, & thumbnail display; Integrated text search; Integrated annotation Convert Excel to PDF; Convert Excel to Combine and merge multiple Excel files; Append
pdf find highlighted text; how to select all text in pdf
PsychoPy - Psychology software for Python, Release 1.84.0
msg='doh!'#if this comes up we forgot t to o update the msg!
and then insert the following into the Begin Routine section (this will get run every repeat of the routine):
if len(key_resp.keys)<1:
msg="Failed to o respond"
elif resp.corr:#stored on n last t run routine
msg="Correct! RT=%.3f%(resp.rt)
else:
msg="Oops! That t was wrong"
10.6.2 Feedback after a block
In this case the feedback routine would need to come after the loop (the block of trials) and the message needs to use
the stored data from the loop ratherthan the key_respdirectly. Accessingthe data froma loop is not well documented
but totally possible.
In this case,to get all the keys pressed in anumpy array:
trials.data['key_resp.keys'#numpy array with size=[ntrials,ntypes]
If you used the ‘Store Correct’ feature of the Keyboard Component (and told psychopy what the correct answer was)
you will also have a variable:
#numpy array storing whether each response was correct (1) or not (0)
trials.data['resp.corr']
So, to create your msg, insert the following into the ‘start experiment‘ section of theCodeComponent:
msg='doh!'#if this comes up we forgot t to o update the msg!
and then insert the following into the Begin Routine section (this will get run every repeat of the routine):
nCorr = trials.data['key_resp.corr'].sum() #.std(), .mean() also available
meanRt = trials.data['key_resp.rt'].mean()
msg "You got %i trials correct t (rt=%.2f)" %(nCorr,meanRt)
10.6.3 Draw your message to the screen
Using one of the above methods to generate your msg in aCodeComponent, you then need to present it to the
participant by adding aTextComponentto yourfeedback Routine and setting its text to $msg.
Warning: The Text Component needs to be below the Code Component in the Routine (because it needs to be
updated afterthe code has been run) and it needs to set every repeat.
10.7 Builder - terminating a loop
People often want to terminate theirLoops before they reach the designated number of trials based on subjects’
responses. For example,you might want to use a Loop to repeat a sequence of images that you want to continue until
akey is pressed, oruse it to continue a training period,until a criterion performance is reached.
To do this you need aCodeComponentinserted into yourroutine. All loops have an attribute called finished which is
set to True or False (in Python these are really just other names for 1 and 0). This finished property gets checked on
each pass throughthe loop. So the key piece of code to enda loop called trials is simply:
10.7. Builder - terminating a loop
239
.NET PDF SDK - Description of All PDF Processing Control Feastures
Merge, combine, and consolidate multiple PDF files into one PDF file. Able to insert a blank page or multiple pages to PDF; Allow to delete any PDF Text Search.
pdf searchable text; select text in pdf reader
C# Create PDF from images Library to convert Jpeg, png images to
for combining multiple image formats into one or multiple PDF file in C# This example shows how to build a PDF document with three image files (BMP, JPEG
pdf make text searchable; search pdf files for text programmatically
PsychoPy - Psychology software for Python, Release 1.84.0
trials.finished=True #or trials.finished=1 if you u prefer
Ofcourse you need to check the condition for that with some formof if statement.
Example 1: You have a change-blindness study in which a pair ofimages flashes on and off,with intervening blanks,
in a loop called presentationLoop. You record the key press of the subject with aKeyboardComponentcalled resp1.
Using the ‘ForceEndTrial’ parameter of resp1 you can end the current cycle of the loop but to end the loop itself you
would needaCodeComponent. Insert the following twolines in the End Routine parameter forthe Code Component,
which will test whether more thanzero keys have been pressed:
if len(resp1.keys)>0:
presentationLoop.finished=1
Example 2: Sometimes you may have more possible trials than you can actually display. By default, a loop will
present all possible trials (nReps * length-of-list). Ifyouonly want to present the first10 ofall possible trials,you can
use a code component to count how many have been shown,and then finish the loop after doing 10.
This example assumes that your loopis named ‘trials’. You needto add two things,the firstto initialize the count, and
the second to update and check it.
Begin Experiment:
myCount 0
Begin Routine:
myCount = myCount 1
if myCount 10:
trials.finished True
Note: In Python there is no end to finish an if statement. The content of the if or of a for-loop is determined by
the indentation of the lines. In the above example only one line was indented so that one line will be executed if the
statement evaluates to True.
10.8 Installing PsychoPy in a classroom (administrators)
For running PsychoPy in a classroom environment it is probably preferable to have a ‘partial’ network installation.
The PsychoPy library features frequent new releases, including bug fixes and you want to be able to update machines
with these new releases. But PsychoPy depends on many other python libraries (over 200Mb in total) that tend not
to change so rapidly, or at least not in ways critical to the running of experiments. If you install the whole PsychoPy
application onthe networkthen all of this data has topass backwards andforwards, and starting the app willtake even
longerthan normal.
The basic aim of this document is to get toa state whereby;
• Python and the major dependencies ofPsychoPy are installed onthe local machine (probablya disk image tobe
copied across your lab computers)
• PsychoPyitself(only~2Mb)is installedina network locationwhereitcanbeupdatedeasilybytheadministrator
• a file is created in the installation that provides the path to the network drive location
• Start-Menu shortcuts need to be set to point to the local Python but the remote PsychoPy application launcher
Once this is done, the vast majority of updates can be performed simply by replacing the PsychoPy library on the
network drive.
240
Chapter 10. Recipes (“How-to”s)
C# Create PDF from CSV to convert csv files to PDF in C#.net, ASP.
CSV files are saved to PDF documents by keeping original layout. Supports converting multiple sheets CSV file to one PDF or splitting to multiple PDF
how to select text in pdf; convert pdf to searchable text online
PsychoPy - Psychology software for Python, Release 1.84.0
10.8.1 1. Install dependencies locally
Download the latestversionof the Standalone PsychoPydistribution, and run as administrator. This will installa copy
ofPython and manydependencies to a default location of
C:\Program Files\PsychoPy2\
10.8.2 2. Move the PsychoPy to the network
You need a network location that is going to be available, with read-only access, to all users on your machines. You
will find all the contents of PsychoPy itself at something like this (version dependent obviously):
C:\Program Files\PsychoPy2\Lib\site-packages\PsychoPy-1.70.00-py2.6.egg
Move that entire folderto yournetwork location andcall it psychopyLib (orsimilar,gettingridof the version-specific
part ofthe name). Now the following should be a valid path:
<NETWORK_LOC>\psychopyLib\psychopy
10.8.3 3. Update the Python path
The Python installation (in C:\Program Files\PsychoPy2) needs to know about the network location. If Python finds a
text file with extension .pth anywhere on its existing path then itwill add tothe path any valid paths it finds in the file.
So create a text file that has one line in it:
<NETWORK_LOC>\psychopyLib
You can test ifthis has worked. Go toC:\Program Files\PsychoPy2and double-clickon python.exe. You should get a
Python terminal window come up. Now try:
>>> import psychopy
If psychopy is notfoundon the path then there will be an import error. Tryadjusting the .pthfile, restarting python.exe
and importing again.
10.8.4 4. Update the Start Menu
The shortcut in the Windows Start Menu will still be pointing tothe local (now non-existent) PsychoPy library. Right-
click it to change properties and set the shortcut to point to something like:
"C:\Program Files\PsychoPy2\pythonw.exe" "<NETWORK_LOC>\psychopyLib\psychopy\\app\psychopyApp.py"
You probably spotted from this that the PsychoPy app is simply a Python script. You may want to update the file
associations too, so that .psyexp and .py are opened with:
"C:\Program Files\PsychoPy2\pythonw.exe" "<NETWORK_LOC>\psychopyLib\psychopy\app\psychopyApp.py" "%1"
Lastly, to make the shortcut look pretty, you might want to update the icon too. Set the icon’s location to:
"<NETWORK_LOC>\psychopyLib\psychopy\app\Resources\psychopy.ico"
10.8.5 5. Updating to a new version
Fetchthelatest .ziprelease. Unpackitandreplacethecontents of<NETWORK_LOC>\psychopyLib\with the contents
ofthe zipfile.
10.8. Installing PsychoPy in a classroom (administrators)
241
PsychoPy - Psychology software for Python, Release 1.84.0
10.9 Generating formatted strings
Aformatted string is a variable which has been converted into a string (text). In python the specifics of how this is
done is determined by what kind ofvariable you want to print.
Example 1: You have an experiment which generates a string variable called text. You want to insert this variable into
astring so you can print it. This would be achieved with the following code:
message 'The result is %s%(text)
This will produce a variable message which if used in a text object would print the phrase ‘The result is’ followed by
the variable text. In this instance %s is used as the variable being entered is a string. This is a marker which tells the
script where the variable should be entered. %text tells the script which variable should be entered there.
Multiple formatted strings (of potentially different types)can be entered into one string object:
longMessage 'Well done %s that took %0.3f seconds' %(info['name'], time)
Some of the handy formatted string types:
>>> x=5
>>> x1=5124
>>> z='someText'
>>> 'show %s%(z)
'show someText'
>>> '%0.1f%(x)
#will show as a float to one decimal place
'5.0'
>>> '%3i%(x) #an integer, at least 3 3 chars wide, padded d with spaces
'
5'
>>> '%03i%(x) #as above e but t pad with h zeros (good for participant numbers)
'005'
See thepythondocumentation for a more complete list.
10.10 Coder - interleave staircases
Often psychophysicists using staircase procedures want to interleave multiple staircases, either with different start
points, or fordifferent conditions.
There is nowa class,psychopy.data.MultiStairHandler toallow simple access tointerleaved staircases of
either basic or QUEST types. That can also be used from theLoopsin theBuilder. The following method allows the
same to be created in your own code, for greater options.
The method works by nesting a pair of loops, one to loop through the number of trials and another to loop across the
staircases. The staircases can be shuffled between trials, so that they do not simply alternate.
Note: Note the need to create a copy of the info. If you simply do thisInfo=info then all your staircases will end up
pointing to the same object, and when you change the info in the final one, you will be changing it for all.
from psychopy import visual, core, data, event
from numpy.random import shuffle
import copytime #from the std d python libs
#create some info to store with the data
info={}
info['startPoints']=[1.5,3,6]
info['nTrials']=10
242
Chapter 10. Recipes (“How-to”s)
PsychoPy - Psychology software for Python, Release 1.84.0
info['observer']='jwp'
win=visual.Window([400,400])
#---------------------
#create the stimuli
#---------------------
#create staircases
stairs=[]
for thisStart in info['startPoints']:
#we need a COPY of the info for each staircase
#(or the changes here will be made to all the other staircases)
thisInfo = copy.copy(info)
#now add any specific info for this staircase
thisInfo['thisStart']=thisStart #we might want t to o keep track of f this
thisStair = data.StairHandler(startVal=thisStart,
extraInfo=thisInfo,
nTrials=50, nUp=1, nDown=3,
minVal 0.5, maxVal=8,
stepSizes=[4,4,2,2,1,1])
stairs.append(thisStair)
for trialN in range(info['nTrials']):
shuffle(stairs) #this shuffles 'in n place' ' (ie e stairs s itself is s changed, , nothing g returned)
#then loop through our randomised order of staircases for this repeat
for thisStair in stairs:
thisIntensity = thisStair.next()
print 'start=%.2f, current=%.4f%(thisStair.extraInfo['thisStart'], thisIntensity)
#---------------------
#run your trial and get an input
#---------------------
keys = event.waitKeys() #(we can simulate e by y pushing g left t for 'correct')
if 'left' in keys: wasCorrect=True
else: wasCorrect = False
thisStair.addData(wasCorrect) #so that the e staircase adjusts s itself
#this trial (of all staircases) has finished
#all trials finished
#save data (separate pickle and txt files for each staircase)
dateStr = time.strftime("%b_%d_%H%M", time.localtime())#add the e current t time
for thisStair in stairs:
#create a filename based on the subject and start value
filename "%s start%.2f %s%(thisStair.extraInfo['observer'], thisStair.extraInfo['thisStart'], dateStr)
thisStair.saveAsPickle(filename)
thisStair.saveAsText(filename)
10.11 Making isoluminant stimuli
From the mailing list (see there for names, etc):
Q1: How can I create colours (RGB)that are isoluminant?
A1: The easiest way to create isoluminant stimuli (or control the luminance content) is to create the stimuli in DKL
space and then convert them into RGB space for presentation on the monitor.
10.11. Making isoluminant stimuli
243
PsychoPy - Psychology software for Python, Release 1.84.0
More details on DKL space can be found in the section aboutColorspacesand conversions between DKL and RGB
can be found in the API reference forpsychopy.misc
Q2: There’s a difference in luminance between my stimuli. How could I correct for that?
I’mrunningan experiment where Imanipulatecolor chromatic saturation, keeping luminance constant. I’ve coded the
colors (red and blue) in rgb255 for 6 saturation values (10%, 20%, 30%, 40%, 50%, 60%, 90%) using a conversion
from HSL to RGB colorspace.
Note thatwe don’tpossess spectrophotometers suchas PR650inourlab tocalibrate each colorgun. I’ve calibrated the
gamma of my monitor psychophysically. Gamma was set to 1.7 (threshold) for gamm(lum), gamma(R), gamma(G),
gamma(B). Then I’ve measured the luminance of each stimuli with a Brontes colorimeter. But there’s a difference in
luminance between my stimuli. How could Icorrect forthat?
A2: Without a spectroradiometer you won’t be able to use the color spaces like DKL which are designed to help this
sort of thing.
If youdon’tcare aboutusinga specificcolourspacethoughyou shouldbe able to deduce a series ofisoluminant colors
manually,because the luminance outputs fromeach gun should sumlinearly. e.g. on my monitor:
maxR=46cd/m2
maxG=114
maxB=15
(note that green is nearly always brightest)
So Icould make a 15cd/m2 stimulus using various appropriate fractions of those max values (requires that the screen
is genuinely gamma-corrected):
R=0, G=0, B=255
R=255
*
15/46, G=0, B=0
R=255
*
7.5/46, G=255
*
15/114, B=0
Note that,if you want a pure fully-saturated blue,thenyou’re limited by the monitorto howbright youcan make your
stimulus. Ifyouwant brightercolours your blue willneedto include some ofthe other guns (similarly forgreen ifyou
want to go above the max luminance for that gun).
A2.1. You should also consider that even ifyou set appropriate RGB values to display yourpairs of chromatic stimuli
at the same luminance that they might still appear different, particularly between observers (and even if your light
measurement device says the luminance is the same, and regardless of the colour space youwant towork in). Tomake
the pairs perceptually isoluminant, eachobserver should reallydeterminetheir ownisoluminant point. You can do this
with the minimummotion technique or with heterochromatic flicker photometry.
10.12 Adding a web-cam
From the mailing list (see there for names, etc):
“I spent some time today trying to get a webcam feed into my psychopy proj, inside my visual.window. The solution
involved using the opencv module, capturing the image, converting that to PIL, and then feeding the PIL into a
SimpleImageStim and looping and win.flipping. Also, to avoid looking like an Avatar in my case, you will have to
change the default decoder used in PIL fromstring to utilize BGR instead of RGB in the decoding. I thought I would
save some time for people in the future who might be interested in using a webcam feed for their psychopy project.
All you need todo is import the opencvmodule into psychopy (importing modules was well documented bypsychopy
online) and integrate something like this into your psychopy script.”
from psychopy import visual, event, core
import Imagetimepylabcvnumpy
244
Chapter 10. Recipes (“How-to”s)
Documents you may be interested
Documents you may be interested