Working with Images
Analytics Zoo provides supports for end-to-end image processing pipeline, including image loading, pre-processing, inference/training and some utilities on different formats.
Load Image
Analytics Zoo provides APIs to read image to different formats:
Load to Data Frame
Analytics Zoo can process image data as Spark Data Frame.
NNImageReader
is the primary DataFrame-based image loading interface to read images into DataFrame.
Scala example:
import com.intel.analytics.zoo.common.NNContext
import com.intel.analytics.zoo.pipeline.nnframes.NNImageReader
val sc = NNContext.initNNContext("app")
val imageDF1 = NNImageReader.readImages("/tmp", sc)
val imageDF2 = NNImageReader.readImages("/tmp/*.jpg", sc)
val imageDF3 = NNImageReader.readImages("/tmp/a.jpg, /tmp/b.jpg", sc)
Python:
from zoo.common.nncontext import *
from zoo.pipeline.nnframes import *
sc = init_nncontext("app")
imageDF1 = NNImageReader.readImages("/tmp", sc)
imageDF2 = NNImageReader.readImages("/tmp/*.jpg", sc)
imageDF3 = NNImageReader.readImages("/tmp/a.jpg, /tmp/b.jpg", sc)
The output DataFrame contains a sinlge column named "image". The schema of "image" column can be
accessed from com.intel.analytics.zoo.pipeline.nnframes.DLImageSchema.byteSchema
.
Each record in "image" column represents one image record, in the format of
Row(origin, height, width, num of channels, mode, data), where origin contains the URI for the image file,
and data
holds the original file bytes for the image file. mode
represents the OpenCV-compatible
type: CV_8UC3, CV_8UC1 in most cases.
val byteSchema = StructType(
StructField("origin", StringType, true) ::
StructField("height", IntegerType, false) ::
StructField("width", IntegerType, false) ::
StructField("nChannels", IntegerType, false) ::
// OpenCV-compatible type: CV_8UC3, CV_32FC3 in most cases
StructField("mode", IntegerType, false) ::
// Bytes in OpenCV-compatible order: row-wise BGR in most cases
StructField("data", BinaryType, false) :: Nil)
After loading the image, user can compose the preprocess steps with the Preprocessing
defined
in com.intel.analytics.zoo.feature.image
.
Load to ImageSet
ImageSet
is a collection of ImageFeature
. It can be a DistributedImageSet
for distributed image RDD or
LocalImageSet
for local image array.
You can read image data as ImageSet
from local/distributed image path, or you can directly construct a ImageSet from RDD[ImageFeature] or Array[ImageFeature].
Scala example:
// create LocalImageSet from an image folder
val localImageSet = ImageSet.read("/tmp/image/")
// create DistributedImageSet from an image folder
val distributedImageSet2 = ImageSet.read("/tmp/image/", sc, 2)
Python example:
# create LocalImageSet from an image folder
local_image_frame2 = ImageSet.read("/tmp/image/")
# create DistributedImageSet from an image folder
distributed_image_frame = ImageSet.read("/tmp/image/", sc, 2)
Image Transformer
Analytics Zoo has many pre-defined image processing transformers built on top of OpenCV:
ImageBrightness
: Adjust the image brightness.ImageHue
: Adjust the image hue.ImageSaturation
: Adjust the image Saturation.ImageContrast
: Adjust the image Contrast.ImageChannelOrder
: Random change the channel order of an imageImageColorJitter
: Random adjust brightness, contrast, hue, saturationImageResize
: Resize imageImageAspectScale
: Resize the image, keep the aspect ratio. scale according to the short edgeImageRandomAspectScale
: Resize the image by randomly choosing a scaleImageChannelNormalize
: Image channel normalizeImagePixelNormalizer
: Pixel level normalizerImageCenterCrop
: Crop acropWidth
xcropHeight
patch from center of image.ImageRandomCrop
: Random crop acropWidth
xcropHeight
patch from an image.ImageFixedCrop
: Crop a fixed area of imageImageDetectionCrop
: Crop from object detections, each image should has a tensor detection,ImageExpand
: Expand image, fill the blank part with the meanR, meanG, meanBImageFiller
: Fill part of image with certain pixel valueImageHFlip
: Flip the image horizontallyImageRandomPreprocessing
: It is a wrapper for transformers to control the transform probabilityImageBytesToMat
: Transform byte array(original image file in byte) to OpenCVMatImageMatToFloats
: Transform OpenCVMat to float array, note that in this transformer, the mat is released.ImageMatToTensor
: Transform opencv mat to tensor, note that in this transformer, the mat is released.ImageSetToSample
: Transforms tensors that map inputKeys and targetKeys to sample, note that in this transformer, the mat has been released.
More examples can be found here
You can also define your own Transformer by extending ImageProcessing
,
and override the function transformMat
to do the actual transformation to ImageFeature
.
Build Image Transformation Pipeline
You can easily build the image transformation pipeline by chaining transformers.
Scala example:
import com.intel.analytics.bigdl.numeric.NumericFloat
import com.intel.analytics.zoo.feature.image._
val imgAug = ImageBytesToMat() -> ImageResize(256, 256)-> ImageCenterCrop(224, 224) ->
ImageChannelNormalize(123, 117, 104) ->
ImageMatToTensor[Float]() ->
ImageSetToSample[Float]()
In the above example, the transformations will perform sequentially.
Assume you have an ImageSet containing original bytes array,
-
ImageBytesToMat
will transform the bytes array toOpenCVMat
. -
ImageColorJitter
,ImageExpand
,ImageResize
,ImageHFlip
andImageChannelNormalize
will transform overOpenCVMat
, note thatOpenCVMat
is overwrite by default. -
ImageMatToTensor
transformOpenCVMat
toTensor
, andOpenCVMat
is released in this step. -
ImageSetToSample
transform the tensors that map inputKeys and targetKeys to sample, which can be used by the following prediction or training tasks.
Python example:
from zoo.feature.image.imagePreprocessing import *
from zoo.feature.common import ChainedPreprocessing
img_aug = ChainedPreprocessing([ImageBytesToMat(),
ImageColorJitter(),
ImageExpand(),
ImageResize(300, 300, -1),
ImageHFlip(),
ImageChannelNormalize(123.0, 117.0, 104.0),
ImageMatToTensor(),
ImageSetToSample()])
Image Train
Train with Image DataFrame
You can use NNEstimator/NNCLassifier to train Zoo Keras/BigDL model with Image DataFrame. You can pass in image preprocessing to NNEstimator/NNClassifier to do image preprocessing before training. Then call fit
method to let Analytics Zoo train the model
For detail APIs, please refer to: NNFrames
Scala example:
val batchsize = 128
val nEpochs = 10
val featureTransformer = RowToImageFeature() -> ImageResize(256, 256) ->
ImageCenterCrop(224, 224) ->
ImageChannelNormalize(123, 117, 104) ->
ImageMatToTensor() ->
ImageFeatureToTensor()
val classifier = NNClassifier(model, CrossEntropyCriterion[Float](), featureTransformer)
.setFeaturesCol("image")
.setLearningRate(0.003)
.setBatchSize(batchsize)
.setMaxEpoch(nEpochs)
.setValidation(Trigger.everyEpoch, valDf, Array(new Top1Accuracy()), batchsize)
val trainedModel = classifier.fit(trainDf)
Python example:
batchsize = 128
nEpochs = 10
featureTransformer = ChainedPreprocessing([RowToImageFeature(), ImageResize(256, 256),
ImageCenterCrop(224, 224),
ImageChannelNormalize(123, 117, 104),
ImageMatToTensor(),
ImageFeatureToTensor()])
classifier = NNClassifier(model, CrossEntropyCriterion(), featureTransformer)\
.setFeaturesCol("image")\
.setLearningRate(0.003)\
.setBatchSize(batchsize)\
.setMaxEpoch(nEpochs)\
.setValidation(EveryEpoch(), valDf, [Top1Accuracy()], batch_size)
trainedModel = classifier.fit(trainDf)
Train with ImageSet
You can train Zoo Keras model with ImageSet. Just call fit
method to let Analytics Zoo train the model.
Python example:
from zoo.common.nncontext import *
from zoo.feature.common import *
from zoo.feature.image.imagePreprocessing import *
from zoo.pipeline.api.keras.layers import Dense, Input, Flatten
from zoo.pipeline.api.keras.models import *
from zoo.pipeline.api.net import *
from bigdl.optim.optimizer import *
sc = init_nncontext("train keras")
img_path="/tmp/image"
image_set = ImageSet.read(img_path,sc, min_partitions=1)
transformer = ChainedPreprocessing(
[ImageResize(256, 256), ImageCenterCrop(224, 224),
ImageChannelNormalize(123.0, 117.0, 104.0), ImageMatToTensor(),
ImageSetToSample()])
image_data = transformer(image_set)
labels = np.array([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])
label_rdd = sc.parallelize(labels, 1)
samples = image_data.get_image().zip(label_rdd).map(
lambda tuple: Sample.from_ndarray(tuple[0], tuple[1]))
# create model
model_path="/tmp/bigdl_inception-v1_imagenet_0.4.0.model"
full_model = Net.load_bigdl(model_path)
# create a new model by remove layers after pool5/drop_7x7_s1
model = full_model.new_graph(["pool5/drop_7x7_s1"])
# freeze layers from input to pool4/3x3_s2 inclusive
model.freeze_up_to(["pool4/3x3_s2"])
inputNode = Input(name="input", shape=(3, 224, 224))
inception = model.to_keras()(inputNode)
flatten = Flatten()(inception)
logits = Dense(2)(flatten)
lrModel = Model(inputNode, logits)
batchsize = 4
nEpochs = 10
lrModel.compile(optimizer=Adam(learningrate=1e-4),
loss='categorical_crossentropy',
metrics=['accuracy'])
lrModel.fit(x = samples, batch_size=batchsize, nb_epoch=nEpochs)
Image Predict
Predict with Image DataFrame
After training with NNEstimator/NNCLassifier, you'll get a trained NNModel/NNClassifierModel . You can call transform
to predict Image DataFrame with this NNModel/NNClassifierModel . Or you can load pre-trained Analytics-Zoo/BigDL/Caffe/Torch/Tensorflow model and create NNModel/NNClassifierModel with this model. Then call to transform
to Image DataFrame.
After prediction, there is a new column prediction
in the prediction image dataframe.
Scala example:
val batchsize = 128
val nEpochs = 10
val featureTransformer = RowToImageFeature() -> ImageResize(256, 256) ->
ImageCenterCrop(224, 224) ->
ImageChannelNormalize(123, 117, 104) ->
ImageMatToTensor() ->
ImageFeatureToTensor()
val classifier = NNClassifier(model, CrossEntropyCriterion[Float](), featureTransformer)
.setFeaturesCol("image")
.setLearningRate(0.003)
.setBatchSize(batchsize)
.setMaxEpoch(nEpochs)
.setValidation(Trigger.everyEpoch, valDf, Array(new Top1Accuracy()), batchsize)
val trainedModel = classifier.fit(trainDf)
// predict with trained model
val predictions = trainedModel.transform(testDf)
predictions.select(col("image"), col("label"), col("prediction")).show(false)
// predict with loaded pre-trained model
val model = Module.loadModule[Float](modelPath)
val dlmodel = NNClassifierModel(model, featureTransformer)
.setBatchSize(batchsize)
.setFeaturesCol("image")
.setPredictionCol("prediction")
val resultDF = dlmodel.transform(testDf)
Python example:
batchsize = 128
nEpochs = 10
featureTransformer = ChainedPreprocessing([RowToImageFeature(), ImageResize(256, 256),
ImageCenterCrop(224, 224),
ImageChannelNormalize(123, 117, 104),
ImageMatToTensor(),
ImageFeatureToTensor()])
classifier = NNClassifier(model, CrossEntropyCriterion(), featureTransformer)\
.setFeaturesCol("image")\
.setLearningRate(0.003)\
.setBatchSize(batchsize)\
.setMaxEpoch(nEpochs)\
.setValidation(EveryEpoch(), valDf, [Top1Accuracy()], batch_size)
trainedModel = classifier.fit(trainDf)
# predict with trained model
predictions = trainedModel.transform(testDf)
predictions.select("image", "label","prediction").show(False)
# predict with loaded pre-trained model
model = Model.loadModel(model_path)
dlmodel = NNClassifierModel(model, featureTransformer)\
.setBatchSize(batchsize)\
.setFeaturesCol("image")\
.setPredictionCol("prediction")
resultDF = dlmodel.transform(testDf)
Predict with ImageSet
After training Zoo Keras model, you can call predict
to predict ImageSet.
Or you can load pre-trained Analytics-Zoo/BigDL model. Then call to predictImageSet
to predict ImageSet.
Predict with trained Zoo Keras Model
Python example:
from zoo.common.nncontext import *
from zoo.feature.common import *
from zoo.feature.image.imagePreprocessing import *
from zoo.pipeline.api.keras.layers import Dense, Input, Flatten
from zoo.pipeline.api.keras.models import *
from zoo.pipeline.api.net import *
from bigdl.optim.optimizer import *
sc = init_nncontext("train keras")
img_path="/tmp/image"
image_set = ImageSet.read(img_path,sc, min_partitions=1)
transformer = ChainedPreprocessing(
[ImageResize(256, 256), ImageCenterCrop(224, 224),
ImageChannelNormalize(123.0, 117.0, 104.0), ImageMatToTensor(),
ImageSetToSample()])
image_data = transformer(image_set)
labels = np.array([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])
label_rdd = sc.parallelize(labels, 1)
samples = image_data.get_image().zip(label_rdd).map(
lambda tuple: Sample.from_ndarray(tuple[0], tuple[1]))
# create model
model_path="/tmp/bigdl_inception-v1_imagenet_0.4.0.model"
full_model = Net.load_bigdl(model_path)
# create a new model by remove layers after pool5/drop_7x7_s1
model = full_model.new_graph(["pool5/drop_7x7_s1"])
# freeze layers from input to pool4/3x3_s2 inclusive
model.freeze_up_to(["pool4/3x3_s2"])
inputNode = Input(name="input", shape=(3, 224, 224))
inception = model.to_keras()(inputNode)
flatten = Flatten()(inception)
logits = Dense(2)(flatten)
lrModel = Model(inputNode, logits)
batchsize = 4
nEpochs = 10
lrModel.compile(optimizer=Adam(learningrate=1e-4),
loss='categorical_crossentropy',
metrics=['accuracy'])
lrModel.fit(x = samples, batch_size=batchsize, nb_epoch=nEpochs)
prediction = lrModel.predict(samples)
result = prediction.collect()
Predict with loaded Model
You can load pre-trained Analytics-Zoo/BigDL model. Then call to predictImageSet
to predict ImageSet.
For details, you can check guide of image classificaion or object detection
3D Image Support
For 3D images, we can support above operations based on ImageSet. For details, please refer to image API guide
Caching Images in Persistent Memory
Here is a scala example to train Inception V1 with ImageNet-2012 dataset. If you set the option memoryType
to PMEM
, the data will be cached in Intel Optane DC Persistent Memory; please refer to the guide here on how to set up the system environment.
In the InceptionV1 example, we use an new dataset called FeatureSet to cache the data. Only scala API is currently available.
Scala example:
val rawData = readFromSeqFiles(path, sc, classNumber)
val featureSet = FeatureSet.rdd(rawData, memoryType = PMEM)
readFromSeqFiles
read the Sequence File into RDD[ByteRecord]
, then FeatureSet.rdd(rawData, memoryType = PMEM)
will cache the data to Intel Optane DC Persistent Memory.


dicttool - Dictionary Tools
The dicttool package enhances the standard dict command with several new commands. In addition, the package also defines several "creature comfort" list commands as well. Each command checks to see if a command already exists of the same name before adding itself, just in case any of these slip into the core.
This command will add a new instance of each element in args to varname, but only if that element is not already present.
This command will delete all instances of each element in args from varname.
Operates like dict get, however if the key args does not exist, it returns an empty list instead of throwing an error.
This command will produce a string representation of dict, with each nested branch on a newline, and indented with two spaces for every level.
This command will return true if value can be interpreted as a dict. The command operates in such a way as to not force an existing dict representation to shimmer into another internal rep.
Return a dict which is the product of a recursive merge of all of the arguments. Unlike dict merge, this command descends into all of the levels of a dict. Dict keys which end in a : indicate a leaf, which will be interpreted as a literal value, and not descended into further.
set items [dict merge { option {color {default: green}} } { option {fruit {default: mango}} } { option {color {default: blue} fruit {widget: select values: {mango apple cherry grape}}} }] puts [dict print $items]
Prints the following result:
option { color { default: blue } fruit { widget: select values: {mango apple cherry grape} } }
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category dict of the Tcllib Trackers. Please also report any ideas for enhancements you may have for either package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the output of diff -u.
Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.
Utilities
Copyright © 2017 Sean Woods <yoda@etoyoc.com>


Try to insert any name as a name input in the form to see the amp-form-submit-success event.
amp-form-submit-success
Try to insert the word "error" as a name input in the form to see the amp-form-submit-error event.
amp-form-submit-error


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sourceforge.cilib.XML.XMLObjectFactory
The XMLObjectFactory
can be used to manage the construction of any object
based on an XML description. This class uses reflection to set properties
and call arbitrary methods of the object under contruction.
Example:
// Parse the XML document DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File("example.xml")); // Here, construct is the XML element to read the configuration from Element description = (Element) doc.getElementsByTagName("construct").item(0); // The document is only necessary for idrefs, there is a // second constructor that accepts just the element XMLObjectFactory factory = new XMLObjectFactory(doc, description); // Finally, call newObject() whenever you want to construct a new // object according to the configuration in the given XML element Object object = factory.newObject();
Each time XMLObjectFactory
encounters a class attribute in the XML, an
instance of the specified class is instanciated. Nested elements are
interpreted as either properties to be set or methods to be called on this
newly constructed object. If no class attribute is specified then the element
is interpreted as a Java primitive type or a string. Elements can be nested in
a hierarchical fashion to handle the construction of complex objects.
Note: Requires the Java API for XML processing (JAXP).
See: Factory Demo for XML samples.
| Constructor Summary | |
XMLObjectFactory(org.w3c.dom.Document xmlDocument,
org.w3c.dom.Element xmlObjectDescription)
Creates a new instance of XMLObjectFactory for constructing objects
given an XML description and an XML document for handling idrefs. |
|
XMLObjectFactory(org.w3c.dom.Element xmlObjectDescription)
Creates a new instance of XMLObjectFactory for constructing objects
given an XML description. |
| Method Summary | |
java.lang.Object |
newObject()
Constructs a new Object based on the underlying XML object description. |
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public XMLObjectFactory(org.w3c.dom.Element xmlObjectDescription)
XMLObjectFactory
for constructing objects
given an XML description.
xmlObjectDescription
- An XML element that describes the objects to be constructed by this factory.public XMLObjectFactory(org.w3c.dom.Document xmlDocument, org.w3c.dom.Element xmlObjectDescription)
XMLObjectFactory
for constructing objects
given an XML description and an XML document for handling idrefs.
xmlObjectDescription
- An XML element that describes the objects to be constructed by this factory.xmlDocument
- The XML document to search for any idrefs.| Method Detail |
public java.lang.Object newObject()
Object
based on the underlying XML object description.
Object
constructed according to the given description.
FactoryException
- In case the object cannot be constructed.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Module pl.dir
Useful functions for getting directory contents and matching them against wildcards.
Dependencies: pl.utils , pl.path , pl.tablex
Soft Dependencies: alien
, ffi
(either are used on Windows for copying/moving files)
Functions
| fnmatch (file, pattern) | does the filename match the shell pattern?. |
| filter (files, pattern) | return a list of all files which match the pattern. |
| getfiles (dir, mask) | return a list of all files in a directory which match the a shell pattern. |
| getdirectories (dir) | return a list of all subdirectories of the directory. |
| copyfile (src, dest, flag) | copy a file. |
| movefile (src, dest) | move a file. |
| walk (root, bottom_up, follow_links) | return an iterator which walks through a directory tree starting at root. |
| rmtree (fullpath) | remove a whole directory tree. |
| makepath (p) | create a directory path. |
| clonetree (path1, path2, file_fun, verbose) | clone a directory tree. |
| dirtree (d) | return an iterator over all entries in a directory tree |
| getallfiles (start_path, pattern) | Recursively returns all the file starting at path. |
Functions
- fnmatch (file, pattern)
-
does the filename match the shell pattern?.
(cf. fnmatch.fnmatch in Python, 11.8)
Parameters:
file
: A file namepattern
: A shell pattern
Returns:
-
true or false
Raises:
file and pattern must be strings - filter (files, pattern)
-
return a list of all files which match the pattern.
(cf. fnmatch.filter in Python, 11.8)
Parameters:
files
: A table containing file namespattern
: A shell pattern.
Returns:
-
list of files
Raises:
file and pattern must be strings - getfiles (dir, mask)
-
return a list of all files in a directory which match the a shell pattern.
Parameters:
dir
: A directory. If not given, all files in current directory are returned.mask
: A shell pattern. If not given, all files are returned.
Returns:
-
lsit of files
Raises:
dir and mask must be strings - getdirectories (dir)
-
return a list of all subdirectories of the directory.
Parameters:
dir
: A directory
Returns:
-
a list of directories
Raises:
dir must be a string - copyfile (src, dest, flag)
-
copy a file.
Parameters:
src
: source filedest
: destination file or directoryflag
: true if you want to force the copy (default)
Returns:
-
true if operation succeeded
Raises:
src and dest must be strings - movefile (src, dest)
-
move a file.
Parameters:
src
: source filedest
: destination file or directory
Returns:
-
true if operation succeeded
Raises:
src and dest must be strings - walk (root, bottom_up, follow_links)
-
return an iterator which walks through a directory tree starting at root.
The iterator returns (root,dirs,files)
Note that dirs and files are lists of names (i.e. you must say path.join(root,d)
to get the actual full path)
If bottom_up is false (or not present), then the entries at the current level are returned
before we go deeper. This means that you can modify the returned list of directories before
continuing.
This is a clone of os.walk from the Python libraries.
Parameters:
root
: A starting directorybottom_up
: False if we start listing entries immediately.follow_links
: follow symbolic links
Returns:
-
an iterator returning root,dirs,files
Raises:
root must be a string - rmtree (fullpath)
-
remove a whole directory tree.
Parameters:
fullpath
: A directory path
Returns:
- true or nil
- error if failed
Raises:
fullpath must be a string - makepath (p)
-
create a directory path.
This will create subdirectories as necessary!
Parameters:
p
: A directory path
Returns:
-
a valid created path
Raises:
p must be a string - clonetree (path1, path2, file_fun, verbose)
-
clone a directory tree. Will always try to create a new directory structure
if necessary.
Parameters:
path1
: the base path of the source treepath2
: the new base path for the destinationfile_fun
: an optional function to apply on all filesverbose
: an optional boolean to control the verbosity of the output. It can also be a logging function that behaves like print()
Usage:
clonetree('.','../backup',copyfile)
Returns:
- true, or nil
- error message, or list of failed directory creations
- list of failed file operations
Raises:
path1 and path2 must be strings - dirtree (d)
-
return an iterator over all entries in a directory tree
Parameters:
d
: a directory
Returns:
-
an iterator giving pathname and mode (true for dir, false otherwise)
Raises:
d must be a non-empty string - getallfiles (start_path, pattern)
-
Recursively returns all the file starting at path. It can optionally take a shell pattern and
only returns files that match <i>pattern</i>. If a pattern is given it will do a case insensitive search.
Parameters:
start_path
: {string} A directory. If not given, all files in current directory are returned.pattern
: {string} A shell pattern. If not given, all files are returned.
Returns:
-
Table containing all the files found recursively starting at path and filtered by pattern.
Raises:
start_path must be a string


Hi, i use the standard iso with raspberry 1 and RFM12Pi V2 but all nodes are inactive :(
emohub.log:
2015-11-12 18:27:35,915 INFO emoncmsorg sending: http://localhost/myip/set.json?apikey=E-M-O-N-C-M-S-A-P-I-K-E-Y 2015-11-12 18:27:36,000 WARNING emoncmsorg emoncmsorg couldn't send to server, HTTPError: 404 2015-11-12 18:28:05,764 INFO emoncmsorg sending: http://localhost/input/bulk.json?apikey=E-M-O-N-C-M-S-A-P-I-K-E-Y&data=[]&sentat=1447352885 2015-11-12 18:28:05,813 WARNING emoncmsorg emoncmsorg couldn't send to server, HTTPError: 404 2015-11-12 18:28:05,833 WARNING emoncmsorg send failure: wanted 'ok' but got ''
emocms.log:
2015-11-12 18:34:04 FEEDWRITER INFO PHPTimeSeries bytes written: 0 2015-11-12 18:34:04 FEEDWRITER INFO PHPFina bytes written: 0 2015-11-12 18:34:05 MQTT INFO Reloading config 2015-11-12 18:34:11 MQTT INFO Reloading config 2015-11-12 18:34:17 MQTT INFO Reloading config 2015-11-12 18:34:23 MQTT INFO Reloading config 2015-11-12 18:34:29 MQTT INFO Reloading config 2015-11-12 18:34:35 MQTT INFO Reloading config
[[RFM2Pi]]
Type = EmonHubJeeInterfacer
[[[init_settings]]]
com_port = /dev/ttyAMA0
com_baud = 38400
[[[runtimesettings]]]
pubchannels = ToEmonCMS,
subchannels = ToRFM12,
group = 210 #(default:210)
frequency = 868 #(default:433)
baseid = 1 #(emonPi default:5)
quiet = false #(default:true)
calibration = 230V #(UK/EU: 230V, US: 110V)
[[emoncmsorg]]
Type = EmonHubEmoncmsHTTPInterfacer
[[[init_settings]]]
[[[runtimesettings]]]
pubchannels = ToRFM12,
subchannels = ToEmonCMS,
url = http://localhost
apikey = [i use the Write API Key]
senddata = 1
sendstatus = 1
[[1]]
nodename = emonPi
firmware = emonPi_RFM69CW_RF12Demo_DiscreteSampling.ino
hardware = emonpi
[[[rx]]]
names = power1,power2,power1_plus_power2,Vrms,T1,T2,T3,T4,T5,T6,pulseCount
datacodes = h, h, h, h, h, h, h, h, h, h, L
scales = 1,1,1,0.01,0.1,0.1,0.1,0.1,0.1,0.1
units = W,W,p,V,C,C,C,C,C,C
[[19]]
nodename = emonTH_1
firmware = emonTH_DHT22_DS18B20.ino
hardware = emonTH_(Node_ID_Switch_DIP1:OFF_DIP2:OFF)
[[[rx]]]
names = temperature, external temperature, humidity, battery
datacode = h
scales = 0.1,0.1,0.1,0.1
units = C,C,%,V
Re: All nodes Inactive
Re: All nodes Inactive
Why do you have 11 'names' & 11 'datacodes' but only 10 'scales & 10 'units'?
Re: All nodes Inactive
I have corrected the script using this
https://github.com/openenergymonitor/emonhub/blob/emon-pi/conf/emonhub.conf
[[5]]
nodename = emonPi
firmware = emonPi_RFM69CW_RF12Demo_DiscreteSampling.ino
hardware = emonpi
[[[rx]]]
names = power1,power2,power1_plus_power2,Vrms,T1,T2,T3,T4,T5,T6,pulseCount
datacodes = h, h, h, h, h, h, h, h, h, h, L
scales = 1,1,1,0.01,0.1,0.1,0.1,0.1,0.1,0.1,1
units = W,W,W,V,C,C,C,C,C,C,p
but the node are all inactive :(
Re: All nodes Inactive
"2015-11-13 10:21:16,644 DEBUG MainThread Opening serial port: /dev/ttyAMA0 @ 38400 bits/s
2015-11-13 10:21:18,653 WARNING MainThread Device communication error - check settings"
Are you sure your RFM12Pi v2 is 38400 baud? originally they were 9600, then briefly 57600 before settling at 38400 so if you are not 100% sure try the other bauds in emonhub.conf.
Also I believe the "emon-pi" variant insists on a "OK" prefix so if using an early rfm2pi firmware the packets may get discarded, si if the baud isn't 38400 it maybe worth updating the firmware rather than just changing the baud in emonhub.conf.
"2015-11-13 10:21:22,673 INFO MainThread Setting RFM2Pi calibration: 230V (1p)"
This setting isn't required for non-emonpi emonbases and should be removed from emonhub.conf or when the rfm2pi can communicate it will respond to that unknown command with a full print of the instructions.
I think the http 404 errors in your original post were due to "emoncmsorg" interfacers url pointing at localhost, which isn't required as the local posting to emoncms is done via mqtt and the input api is incomplete on the v8.5 low-write emoncms.
"2015-11-13 10:21:16,629 INFO MainThread EmonHub Pre-Release Development Version (rc2.0?)"
You should also use the update routine as you are using the very first un-updated "emon-pi" variant of emonhub, this version info is from the original emonhub experimental branch this variant is derived from.
Although Robert was correct in spotting the inaccuracies in the nodes section, in this instance it probably won't help you as node 5 is the emonPi add-on board which you are not using. you will however, need to explicitly define each of the nodes you do have in your system for them to be processed, but you will see any processing errors in the emonhub.log once you have comms between the rfm2pi and emonhub so it will be easier then.
Paul
Re: All nodes Inactive
very thx :)
I'm trying to upgrade the rfm2pi with this command
avrdude -v -c arduino -p ATMEGA328P -P /dev/ttyAMA0 -b 9600 -U flash:w:RF12_Demo_atmega328.cpp.hex
it is normal that puts us almost two hours?
Andrea
Re: All nodes Inactive
No, it should not take very long at all. the avrdude command line should remain "-b 38400" not "-b 9600". to test the commandline and your install drop the "-U flash,,,,etc" to just communicate without attempting an upload eg
avrdude -v -c arduino -p ATMEGA328P -P /dev/ttyAMA0 -b 38400
Sorry if this confuses things further, but the baud we have been discussing is the baud defined in the firmware sketch as the speed for on-going serial communication during normal runtime, which could have been set to any of the 3 values mentioned depending on the era/revision of the device or more specifically the installed firmware. The baud in the avrdude command line is actually the baud defined by the devices bootloader for serial uploads of the afore mentioned sketches(firmware). This 'overriding" baud should be 38400 regardless of era or version etc, it overrides the default of 115200 which is usual for 16MHz devices whereas the RFM2Pi's are 8MHz as they have no external crystal.
Paul
Re: All nodes Inactive
Upgrade the firmware and work!!!!
Thx All!!
http://www.andreabernardi.it/emoncms/
:)


Week no. 10
Output Devices :
-
add an output device to a microcontroller board you've designed and program it to do something;
Board Design
This week’s assignment was to add an output device to a microcontroller board we’ve designed
and program it to do something.
Since final assignments deadline is getting closer
I’m trying to make things that I can use for my final project as well.
I want my brake light to have LEDs on it, that that was activated as you brake.
So for this week’s assignment I wanted to make a microcontroller board with a LED Array.
I’ve looked at Neil’s designs for LED array board and I’ve added a button.
Led Array :
All files for making the board can be found here.
The LED Array is done using 20 LEDs and only 5 pins with the great Charlieplexing technique.
Neil is using a nice trick in the LED Array to avoid the use of a lot of
resistors and keep the board cleaner - There are 2 layers to the board.
Making the Board
Same process as making boards in the recent weeks.
I had a problem in the board cutting part, my drawing was too small,
but i think that i can still save the board (i hope).
This board requires a lot of soldering, wish me luck!
After the first layer was done and because i dont have an epoxy film in my lab
i did a brige with a string of wire (with the smallest diameter that i found).
Programming the Board
This time i tried to use Neil's code.
When I was checking the board to see if I had missed anything I noticed there were two LED's that were not well.
First I thought it was the polarity but the truth is that they were not working in any of the ways
so I switched for two new leds, and tryed again.
It's still not working well, but at least two LED's are blinking! I will keep triyng!


知识库下载
我们从Wikidata中抽取了一个高质量的稠密子集 Wikidata15k，包含794个概念，16,960个实体，363个关系，846个属性。以下的样例都基于这个知识库。
简单问答
查询属性
- 查询例句：When did the 1985 Major League Baseball season take place?
- 1985年美国职业棒球大联盟赛季是什么时候开始的？
- 查询结果：1985
engine.QueryAttr(
entities = engine.Find("1985 Major League Baseball season"),
key = "point in time"
)
查询在修饰符限定下的属性
- 查询例句：Of New Jersey cities with under 350000 in population, which is biggest in terms of area?
- 在人口不到35万的新泽西州城市中，哪一个城市面积最大？
- 查询结果：1998-06-25
engine.QueryAttrUnderCondition(
entities = engine.Find("Oscar and Lucinda"),
key = "publication date",
qkey = "place of publication",
qvalue = "Germany"
)
查询关系
engine.QueryAttrQualifier(
entities = engine.Find("Will & Grace"),
key = "number of seasons",
value = "8",
qkey = "point in time"
)
查询属性的修饰值
- 查询例句：How is Viggo Mortensen releated to the 10th Screen Actors Guild Awards?
- Viggo Mortensen是如何获得第十届银幕演员协会奖的？
- 查询结果：award received
engine.QueryRelation(
s_entities = engine.Find("Viggo Mortensen"),
t_entities = engine.Find("10th Screen Actors Guild Awards")
)
查询关系的修饰值
- 查询例句：When did Mitchell Hurwitz end his education at Georgetown University?
- Mitchell Hurwitz什么时候结束了在乔治敦大学的学业？
- 查询结果：1985
engine.QueryRelationQualifier(
s_entities = engine.Find("Mitchell Hurwitz"),
t_entities = engine.Find("Georgetown University"),
predicate = "educated at",
qkey = "end time"
)
复杂问答
多跳查询
engine.Count(
engine.FilterConcept(
engine.Relate(
engine.FilterConcept(
engine.Relate(
engine.Find("Unix"),
"relative",
"backward"
),
"industry"
),
"language of work or name",
"forward"
),
"programming language"
)
)
engine.QueryName(
engine.FilterConcept(
engine.Relate(
engine.FilterConcept(
engine.Relate(
engine.Find("Europe"),
"country of origin",
"backward"
),
"new wave"
),
"famous people",
"forward"
),
"human"
)
)
比较
engine.SelectAmong(
engine.FilterConcept(
engine.Relate(
engine.Find("DreamWorks"),
"production company",
"backward"
),
"miniseries"
),
"duration",
"largest"
)
- 查询例句：Who is taller, Kobe Bryant or LeBron James?
- 谁更高,Kobe Bryant 还是 LeBron James?
- 查询结果：LeBron James
engine.SelectBetween(
engine.Find("Kobe Bryant"),
engine.Find("LeBron James"),
"height",
"greater"
)
逻辑操作
- 查询例句：What feature film was nominated for an Academy Award for Best Supporting Actor and an Academy Award for Best Actor?
- 哪部故事片获得奥斯卡最佳男配角奖和最佳男主角奖提名？
- 查询结果：Fiddler on the Roof, Pirates of the Caribbean: The Curse of the Black Pearl, The Straight Story
engine.QueryName(
engine.And(
engine.FilterConcept(
engine.Relate(
engine.Find("Academy Award for Best Actor"),
"nominated for",
"backward"
),
"feature film"
),
engine.FilterConcept(
engine.Relate(
engine.Find("Academy Award for Best Actor"),
"nominated for",
"backward"
),
"feature film"
)
)
)
- 查询例句：How many symptoms indicate lung cancer or have obesity as a risk factor?
- 有多少症状表明肺癌或肥胖是一个危险因素？
- 查询结果：4
engine.Count(
engine.Or(
engine.FilterConcept(
engine.Relate(
engine.Find("lung cancer"),
"symptoms",
"forward"
),
"symptom"
),
engine.FilterConcept(
engine.Relate(
engine.Find("obesity"),
"risk factor",
"forward"
),
"symptom"
)
)
)
事实验证
- 查询例句：Are there less than 30000 households on the date 2011-01-01 in the big city that is an administrative division of North Brabant?
- 在2011年1月1日，北布拉班特行政区的大城市的住户是否少于30000户？
- 查询结果：yes
engine.QueryName(
engine.QFilterStr(
engine.Relate(
engine.Find("Academy Award for Best Costume Design"),
"winner",
"forward"
),
"for work",
"Topsy-Turvy"
)
)
- 查询例句：Did the television series titled All in the Family start on 1971-01-12?
- 这部名为《All in the Family》的电视连续剧是从1971年1月12日开始的吗？
- 查询结果：yes
engine.VerifyDate(
engine.QueryAttr(
engine.FilterConcept(
engine.FilterStr(
engine.FindAll(),
"title",
"All in the Family"
),
"television series"
),
"start time"
),
"1971-01-12",
"="
)


Diwali Dinner Dance 2013
Diwali is the festival of lights and celebrated the Indian New Year. We celebrated Diwali with the BCA community by decking out the upper caf in tons of lights and filling the night with great food and tons of dancing.
Designed By Sagar Garg


Astronomical source definition
Instrument (Acquisition Camera) and telescope configuration
Observing condition constraints
Details of observation


If you regularly have a someone 4-legged draped over your lap, desk or hands while you’re trying to work then you’re in the right place. Working with Dog is for petpreneurs… and ONLY petpreneurs. As you can see – we know the joys and complications of doing business with, for and under the watchful eye of Dog.
Chances are, if you’ve found your way here and you’re still reading… There is something missing. You’re craving more clients, more time, more resources you can trust … or perhaps a community you can lean on, a mentor who just ‘gets it’ or a few words of inspiration to light up your day.
I’m happy to say you’ll find all of the above here on Working with Dog. We pride ourselves on listening intently to our members and continuing to build this space to provide all the above and more. If you’re interested in all that goodness then click the button below and explore what it means to be a member of Working with Dog.
"Everyone was saying she was Photoshopped," Bundesen told Forbes. "So he put a video on YouTube. In 24 hours, she had over a million views. That's how she became a meme."
Mr.Pokee is an African Pygmy Hedgehog. Not that many people are aware you can have hedgehogs as pets, but once you see Mr. Pokee’s adventures on his Instagram page, you’ll probably end up wanting one.
Doug is also the first verified animal on Spotify. Most recently, Doug appeared in an alternative music video for Fall Out Boy's song Irresistible featuring Demi Lovato.


Employees
Overview
An Employee is one of the core concepts of OfficeLife. It represents a human who works at a company.
In OfficeLife, an employee is not necessarily linked to a user. It’s really important to understand this. A user can have two different accounts in two different companies, with the same user account. This is because when a user creates an account in OfficeLife, he can actually join an existing company or create a new one.
A user is someone who has access to OfficeLife, and when he’s inside his account, he’s an employee. However, an employee has to be created inside OfficeLife by a user.
Profile page
Every Employee, linked to a User or not, has a profile page. This page is public inside the company - meaning everyone in the company can see most of the information on this page (unless those who are not shown by default). All of the data entered by an employee on most screens in OfficeLife appear on the profile page of the employee. Also, every action done on an employee appears on the Employee log.
Work from home
Working from home becomes more and more common nowadays. When working from home in a non-remote company, letting your colleagues know that you are not physically here is really important. OfficeLife facilitates this entire process by giving everyone the right amount of information about who works from home.
How to indicate that we work from home
An employee can indicate that he will work from home by checking the checkbox on the Employee dashboard.
Rules
- Only the employee can indicated that he will work from home. No one else (regardless of [their roles](/docs/understanding-roles)).
- Can be edited by employees with HR and administrator roles.
- Description can contain up to 65 535 characters and supports [the Markdown format](/docs/markdown).
⏰ This document was last changed on Wednesday, 25-Nov-2020 02:59:35 UTC.
- If you spot an error or a need for improvement and would like to fix it yourself in a pull request, edit this page on Github.
- If you like to suggest an improvement to this doc, create an issue on the repository on Github.


{% extends 'email/base.html' %} {% block content %}
{{ _('You are about to subscribe to:') }}
{{ watch_description }}
{{ _('Confirm your subscription') }}
{{ _('Thanks!') }} {{ _('The {domain} team')|f(domain=domain) }}


Trackr.
Website for managing your tasks into categories and subtasks in
order to be more productive and complete all of your pending activities.
This website also have the capacity to share dashboards with teams, to work along with teammates.
Full-stack developer.
Fully developed the front-end of the website and connecting to the database
in order to do CRUD functionalities.
Participate in the development of the backend of the website along with a teammate,
as well as in the hosting and creating the Data Base.
the project on Heroku and the database on MongoDB.
Tools and Technology
Front-end: HTML, CSS with Bulma framework and Javascript with jQuery.
Back-end: NodeJS, Heroku for the hosting and MongoDB for database in the cloud.


Bases: twisted.internet.protocol.Factory
Factory for the module protocol.
Bases: twisted.internet.protocol.Protocol
Module specific protocol. To communicate with an other module, connect to its socket and then use the following keywords. All communication are JSON formatted.
All requests have the following format: { “code”: <code>, ... }.
Return a set of information. This set is dynamic and may contains some words depending on the construction of the module. At least, it contains the following entries:
name: the module’s name (unique id, string)
- fields:
- name: the field’s name (unique id, string)
Send also the fields queried (list of field names). Return if the query was successful (‘success’ key), and the field values acquired as a field -> value dictionary, where value in a tuple (timestamp, actual-value).
Same result as when querying the current values, but adds the extra ‘time’ entry for the time of the query.
Same result as when querying the current values, but adds the extra ‘time_from’ and ‘time_to’ entries for the timeslice of the query.
Send the field’s name (field_name) and value (field_value). Return if the query was successful (‘success’ key).
Main error handler, logging and outputting return status to transport.
Error handler called when the query code wasn’t found. self.err(‘Code not found in the query’)
Error handler called when received data couldn’t be decoded.
Error handler called when the queried field couldn’t be found.
Handler for getting one or many fields’ value(s) at a given time.
Handler for getting one or many fields’ value(s) in a certain interval.
Handler for getting one or many fields’ value(s).
Send all informations about the module via transport
Send a json object through the transport.
Handler called to set a named field’s value.
Sign a contract with Oblivion’s leader to get new power. This amount of power transforms you into a d(a)emon. You are now invincible and can only be killed by a super sayan (or not). But be careful with this new power. One day, a wise man said “With great power comes great responsibility”. You can use those skills as you like. Either as a tyrannic and oppressive d(a)emon or you can repent yourself at the side of the super sayan to fight crime.
Start a new module identified by its name module_name. The current processus is killed at the end of the module when it’s not a daemon. If it is, the current processus is killed immediately. Use invoke instead if you want to create a new killable process.
As exec_module, execute a module but fork before to keep the current process active. To see if the module is really running, use the status function.
Invoke all installed modules as daemon. Doesn’t check if the modules are correctly launch. Return the list of pid of the new processes.
Return the status of the module module_name A module is considered as running if its pid file exists. Return true if the module is running else false.
Return the status of all the installed modules. See the above function status for more details. Return a dictionary from name to status (as boolean).
Stop the module_name module.
Stop all the running modules
Load the configuration for the named module, passing in the ‘directory’ argument with the same use as for get_config_file().
Return a list of all installed modules in the installation directory. Detailed information can be given (eg. module configuration) by setting the “detailed” argument to true.
Execute all the setup steps for a module installation. Takes either a filename or a file-like object (which should already be opened). Raises an IOError if the zip file reading failed, and a ValueError if the module is already installed.
Return if the named module exists in the given directory (defaults to module installation directory).
Load the configuration for the named module, passing in either the absolute path to the config file or directly the file-like object.
Run a command listed in the “commands” section, for the module, other than “start” of course, which is a special command. Please note that the module should be trusted when running this command, otherwise bad stuff can happen. Return if the command was successful, or if there was no command to run (meaning that if no entry for that command is specified, this function returns true).
Uninstall a module by its name. Raise a ValueError if the module is already installed.
Get the absolute path to the directory of available modules.
Get the absolute path to the directory of available modules.
Get the absolute path to the configuration file for the named module, optionally passing in the directory from which this file will be accessible.

Get the absolute path to the log file for the named module.
Get the absolute path to the logs directory.
Get the absolute path to the module directory for the named module.

Get the absolute path to the pid file for the named module.

Return the real name of a module. The real name of a modules is in lower snake_case. Transform a CamelCase name into snake_case name.
Get the absolute path to the socket file for the named module.

Bases: threading.Thread
Base module, subclass this if only core module functionalities are needed.
Return a dictionnary containing all informations about the module.
Stop the execution of the module and call the on_kill function of its fields. This method have to be called in case of runtime error.
Start the execution of the module and its fields.
Stop the execution of the module and all its fields.
Bases: object
Network module base, built just like Base module, but with network interfacing.
Shortcut for referencing a module through network, given its module name.
Return if the module module_name is ready. This is detected by watching the socket file of the module.


RT @jacksonh: So the people XORing data are more secure than the people using RSA?
12/20/2013, 3:45:20 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
RT @jacksonh: So the people XORing data are more secure than the people using RSA?
12/20/2013, 3:45:20 PM
Favs: 0
Retweets: 0
link


More...
Inherits MonoBehaviour.
|
| virtual void | Start () |
| | Create, draw and save the image of the ArucoObject at start if specified by the user. More...
|
| |
|
| ArucoObject | ArucoObject [get, set] |
| | The ArUco object to create. More...
|
| |
| bool | CreateAtStart [get, set] |
| | Create the image and the image texture automatically at start. More...
|
| |
| bool | DrawImage [get, set] |
| | Display the created image. More...
|
| |
| GameObject | ImagePlane [get, set] |
| | The plane where to display the created image. More...
|
| |
| bool | SaveImage [get, set] |
| | Save the created image. More...
|
| |
| string | OutputFolder [get, set] |
| | The output folder for the saved image, relative to the Application.persistentDataPath folder (default: ArucoUnity/Images/). More...
|
| |
| string | ImageFilename [get, set] |
| | The saved image name. The extension (.png) is added automatically. If null, it will be generated automatically. More...
|
| |
| Cv.Mat | Image [get, protected set] |
| | The created image of the ArucoObject. More...
|
| |
| Texture2D | ImageTexture [get, protected set] |
| | The created texture of the ArucoObject.
See the OpenCV documentation for more information about the marker creation (second section of the following tutorial): http://docs.opencv.org/3.2.0/d5/dae/tutorial_aruco_detection.html
◆ Create()
| virtual void ArucoUnity.Controllers.ArucoCreator.Create |
( |
| ) |
|
|
inlinevirtual |
Create the image and the image texture of the ArucoObject.
◆ Draw()
| virtual void ArucoUnity.Controllers.ArucoCreator.Draw |
( |
| ) |
|
|
inlinevirtual |
◆ GenerateImageFilename()
| virtual string ArucoUnity.Controllers.ArucoCreator.GenerateImageFilename |
( |
| ) |
|
|
inlinevirtual |
Returns a generated filemame with the ArucoObject properties.
◆ Save()
| virtual void ArucoUnity.Controllers.ArucoCreator.Save |
( |
| ) |
|
|
inlinevirtual |
◆ Start()
| virtual void ArucoUnity.Controllers.ArucoCreator.Start |
( |
| ) |
|
|
inlineprotectedvirtual |
Create, draw and save the image of the ArucoObject at start if specified by the user.
◆ arucoObject
| ArucoObject ArucoUnity.Controllers.ArucoCreator.arucoObject |
|
protected |
◆ ArucoObject
| ArucoObject ArucoUnity.Controllers.ArucoCreator.ArucoObject |
|
getsetprotected |
The ArUco object to create.
◆ CreateAtStart
| bool ArucoUnity.Controllers.ArucoCreator.CreateAtStart |
|
getset |
Create the image and the image texture automatically at start.
◆ DrawImage
| bool ArucoUnity.Controllers.ArucoCreator.DrawImage |
|
getset |
Display the created image.
◆ Image
| Cv.Mat ArucoUnity.Controllers.ArucoCreator.Image |
|
getprotected set |
◆ ImageFilename
| string ArucoUnity.Controllers.ArucoCreator.ImageFilename |
|
getset |
The saved image name. The extension (.png) is added automatically. If null, it will be generated automatically.
◆ ImagePlane
| GameObject ArucoUnity.Controllers.ArucoCreator.ImagePlane |
|
getset |
The plane where to display the created image.
◆ ImageTexture
| Texture2D ArucoUnity.Controllers.ArucoCreator.ImageTexture |
|
getprotected set |
◆ OutputFolder
| string ArucoUnity.Controllers.ArucoCreator.OutputFolder |
|
getset |
The output folder for the saved image, relative to the Application.persistentDataPath folder (default: ArucoUnity/Images/).
◆ SaveImage
| bool ArucoUnity.Controllers.ArucoCreator.SaveImage |
|
getset |
The documentation for this class was generated from the following file:
- C:/Users/an15400/Documents/aruco-unity/aruco-unity/src/aruco_unity_package/Assets/ArucoUnity/Scripts/Controllers/ArucoCreator.cs


Viewing space exploration programs on PBS sparked my interest in unmanned technology. From the Mars Rover to the Google self-driven car, the possibilities are limitless. Robotics are becoming more prevalent in medical research, disaster recovery, working in dangerous environments, and many other fields. The advancements made in this field are getting progressively complex. In the future, I hope to major in Robotics in connection with space exploration.


Analyze
Visualize
Systematize
Start a Project
Hi
👋
we're Dreamten, aresults oriented design studio focused on delivering massive ROI.
our services


-
Related articles
-
Free tools
-
Mobile Security for Android
- Scans apps for malware
- Remote lock and wipe
- Detection from the cloud
- Completely free
- More...
-
Antivirus for Mac
- Clears viruses and Trojans
- Stops all threats, even new ones
- Installs easily and runs quietly
- Completely free
- More...
-
Virus Removal Tool
- Removes viruses and rootkits
- Windows XP SP2 and up
- Works with existing antivirus
- Completely free
- More...
-
UTM Home Edition
- Fully-equipped UTM
- Network, web, mail and VPN
- Protects 50 IP addresses
- Completely free
- More...
-
UTM Essential Firewall
- Network security for business
- No user/IP limitations
- Upgrade to full UTM
- Completely free
- More...
-
-
Hot this week
Denial of Service
Greatfire.org faces daily $30,000 bill from DDoS attack
GreatFire.org, a site that monitors websites blocked by the Great Firewall of China, has been hit with a massive DDoS attack.
Lizard Squad returns, claims attack on Xbox Live and Daybreak Games
Hacking group Lizard Squad has returned, apparently disrupting Microsoft's Xbox Live service and Daybreak Games with DDoS attacks.
"Most adorable bug" - Raspberry Pi 2 crashes when you take a photo of it
It's not buggy, it's camera-shy! The tiny, budget Raspberry Pi faints when you flash a photo of it, and it's likewise not keen on laser pointers.
Update Tuesday wrap-up, February 2015 - don't let JASBUG distract you
Be careful!
The JASBUG vulnerability in Windows is grabbing the headlines, but there are other bugs this month that could hit you harder.
Paul Ducklin explains...
New-style ransomware locks out your customers - demands money to let them log back in
The crooks took a low-key, annoyingly simple, and hard-to-spot approach.
Change usernames like JIMMY to FKOVWH3Z7LUV, but hide the changes...for a while, anyway.
Lizard Squad took down Facebook and Instagram! Believe it! Or not...
The hacking-and-cracking crew known as Lizard Squad tweeted that Facebook and Instagram were down.
Before you could say, "But we don't crash EVER," that had turned into "Lizard Squad did it"...
Why the US was so sure North Korea hacked Sony: it had a front-row seat
A newly released, top-secret document traces the NSA's infiltration of North Korean systems back to 2010, when it piggybacked on South Korean "implants" on North Korea's networks and "sucked back the data".
Lizard Squad’s DDoS service hacked, buyers’ details revealed
Lizard Squad, the group that took down the Sony PlayStation and Microsoft Xbox networks over the Christmas period, has received a dose of its own medicine with the news that it has itself been hacked.
Cyberjihadists attack thousands of French websites after Charlie Hebdo massacre
Many French websites have come under attack in the days since the bloody assault on the office of the satirical newspaper Charlie Hebdo and a Jewish grocery store last week, although rumours of mass DDoS appears to be untrue.
Cops arrest another man after Christmas PlayStation/Xbox DDoS
Police have arrested a second man in connection with the Lizard Squad's Grinch-like Christmas attack on gamers.
Anonymous launches #OpCharlieHebdo, attacks terrorist social media
Those wearing the cloak of the loose online hacktivist collective of Anonymous have gone after sites and promise to target Twitter and Facebook accounts of terrorists.
'Sloppy' North Korean Sony attackers let their IP addresses slip, says FBI
FBI director James Comey has stuck to the bureau’s conclusion that the North Korean government is behind the mammoth cyber attack on Sony Pictures, giving out a few more crumbs to explain his conviction.
The mystery of the missing Bitcoins - 60 Sec Security [VIDEO]
Here's this week's 60 Second Security video for your viewing pleasure.
Enjoy...watch the news in just one minute!
Have the cops busted one of the Lizard Squad?
The "Lizard Squad" took out Microsoft's and Sony's games networks on Christmas Day.
Everyone involved knew in advance that law enforcement would be *very* interested in whodunnit...
SSCC 179 - What kind of a name is "Lizard Squad"? [PODCAST]
Here's the latest episode of our regular security podcast.
This week: phishing, spamming, zombification, SCADA and the Internet of Things, and the curiously named cybervandals that go by "Lizard Squad."
Can malware and hackers really cause giant physical disasters?
Could you really have a hacker or malware initiated meltdown?
Yes, says the 2014 report of the German Office for Information Security...
Lizard Squad member 'Ryan' explains why it's OK to ruin Christmas
A man claiming to represent Lizard Squad, the group behind the Christmas day attacks on the Xbox and Playstation networks, has explained why they did it.
Monday review - the hot 25 stories of the week
From Sony through Pirate Bay to the latest evolution of banking malware...
Here's our weekly roundup so you can catch up easily.
Teenager pleads guilty to massive Spamhaus DDoS attack
A 17-year-old has pleaded guilty to taking part in the 2013 DDoS attack - the largest ever - against Spamhaus and internet exchanges.


Home
Mission
Team
Contact
SOS
Login
Contact Us.
Want to get in touch with us? We'd love to hear from you. Here's how you can reach us...
1-555-555-1234
Monday - Friday
8:00AM - 6:00PM PST
SEND AN EMAIL
Main Office
1234 Sesame Street
San Ramon, CA 94582
1-555-555-1234


View Profile
{{handle}}
{{name}}
Current Ratings : {{current_ratings}}
Rank : {{rank}}
{{university}}
{{handle}}'s expected ratings in the next contest is {{predicted}}


1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the trademark owner, any agent or employee of the Foundation, anyone providing copies of Project Gutenberg-tm electronic works in accordance with this agreement, and any volunteers associated with the production, promotion and distribution of Project Gutenberg-tm electronic works, harmless from all liability, costs and expenses, including legal fees, that arise directly or indirectly from any of the following which you do or cause to occur: (a) distribution of this or any Project Gutenberg-tm work, (b) alteration, modification, or additions or deletions to any Project Gutenberg-tm work, and (c) any Defect you cause.
Project Gutenberg-tm is synonymous with the free distribution of electronic works in formats readable by the widest variety of computers including obsolete, old, middle-aged and new computers. It exists because of the efforts of hundreds of volunteers and donations from people in all walks of life.
Volunteers and financial support to provide volunteers with the assistance they need are critical to reaching Project Gutenberg-tm's goals and ensuring that the Project Gutenberg-tm collection will remain freely available for generations to come. In 2001, the Project Gutenberg Literary Archive Foundation was created to provide a secure and permanent future for Project Gutenberg-tm and future generations. To learn more about the Project Gutenberg Literary Archive Foundation and how your efforts and donations can help, see Sections 3 and 4 and the Foundation web page at http://www.pglaf.org.
The Project Gutenberg Literary Archive Foundation is a non profit 501(c)(3) educational corporation organized under the laws of the state of Mississippi and granted tax exempt status by the Internal Revenue Service. The Foundation's EIN or federal tax identification number is 64-6221541. Its 501(c)(3) letter is posted at http://pglaf.org/fundraising. Contributions to the Project Gutenberg Literary Archive Foundation are tax deductible to the full extent permitted by U.S. federal laws and your state's laws.
The Foundation's principal office is located at 4557 Melan Dr. S. Fairbanks, AK, 99712., but its volunteers and employees are scattered throughout numerous locations. Its business office is located at 809 North 1500 West, Salt Lake City, UT 84116,<PHONE_NUMBER>, email<EMAIL_ADDRESS>Email contact links and up to date contact information can be found at the Foundation's web site and official page at http://pglaf.org
For additional contact information:
Dr. Gregory B. Newby
Chief Executive and Director
<EMAIL_ADDRESS>Project Gutenberg-tm depends upon and cannot survive without wide spread public support and donations to carry out its mission of increasing the number of public domain and licensed works that can be freely distributed in machine readable form accessible by the widest array of equipment including outdated equipment. Many small donations ($1 to $5,000) are particularly important to maintaining tax exempt status with the IRS.
The Foundation is committed to complying with the laws regulating charities and charitable donations in all 50 states of the United States. Compliance requirements are not uniform and it takes a considerable effort, much paperwork and many fees to meet and keep up with these requirements. We do not solicit donations in locations where we have not received written confirmation of compliance. To SEND DONATIONS or determine the status of compliance for any particular state visit http://pglaf.org
While we cannot and do not solicit contributions from states where we have not met the solicitation requirements, we know of no prohibition against accepting unsolicited donations from donors in such states who approach us with offers to donate.
International donations are gratefully accepted, but we cannot make any statements concerning tax treatment of donations received from outside the United States. U.S. laws alone swamp our small staff.
Please check the Project Gutenberg Web pages for current donation methods and addresses. Donations are accepted in a number of other ways including including checks, online payments and credit card donations. To donate, please visit: http://pglaf.org/donate
Professor Michael S. Hart is the originator of the Project Gutenberg-tm concept of a library of electronic works that could be freely shared with anyone. For thirty years, he produced and distributed Project Gutenberg-tm eBooks with only a loose network of volunteer support.
Project Gutenberg-tm eBooks are often created from several printed editions, all of which are confirmed as Public Domain in the U.S. unless a copyright notice is included. Thus, we do not necessarily keep eBooks in compliance with any particular paper edition.
Most people start at our Web site which has the main PG search facility:
http://www.gutenberg.net
This Web site includes information about Project Gutenberg-tm, including how to make donations to the Project Gutenberg Literary Archive Foundation, how to help produce our new eBooks, and how to subscribe to our email newsletter to hear about new eBooks.


Symmetry Elevator : form meets function
Beautifully Crafted, Expertly Engineered, Thoughtfully Constructed
If necessity is the mother of all invention, there is no question that a Symmetry Elevator is her child.
The product requirements would be few, but non-negotiable. A Symmetry product must be beautifully crafted. It must be expertly engineered. It must be thoughtfully constructed. And it must be affordable.
Our team set to its task and boldly approached the industry’s finest engineers, largest distributors, and most talented craftsmen. The finished product beautifully embodied the original vision - superior craftsmanship and engineering at an affordable price. The industry responded in kind, ordering Symmetry Elevators in staggering numbers, today it is the preferred residential elevator of designers, architect, fine home builders and discerning home owners all over the world.
OFFERING THE THREE LEADING ELEVATOR DRIVE SYSTEMS:
- HYDRAULIC DRIVE SYSTEM
- WINDING DRUM DRIVE SYSTEM
- INLINE GEARED DRIVE SYSTEM
Symmetry has since continued its quest to develop innovative accessibility products, rigorous in its commitment to beautiful craftsmanship, expert engineering, thoughtful construction, and affordability.
Together, Symmetry and our clients both discerning home owners, contractors and architects alike, share a singular plumb line: excellence.An unwavering, relentless, honest pursuit of excellence.The result? A visionary product expertly installed, unrivaled in the residential elevator industry.
Welcome to your Symmetry Residential Elevator.


Biography
Wang,Shuxin is pursuing his master degree in Institute of Computing Technology, Chinese Academy of Sciences
He was an Intern Research Engineer in Intel Labs China in 2011
He was a game developer in NetEase Inc. in 2008
He got his bachlor degree from School of Computer Science and Engineering, Central South University(CSU) in 2008
Research Interest
Information Retrieval, Data Minning, Game programming
Links</


This browser doesn't supports importing and exporting of jwk keys.
sign()
verify()
exportKey()
importKey()
RSASSA-PKCS1-v1_5


from __future__ import absolute_import, division, unicode_literals import re from . import base from ..constants import rcdataElements, spaceCharacters spaceCharacters = "".join(spaceCharacters) SPACES_REGEX = re.compile("[%s]+" % spaceCharacters) class Filter(base.Filter): """Collapses whitespace except in pre, textarea, and script elements""" spacePreserveElements = frozenset(["pre", "textarea"] + list(rcdataElements)) def __iter__(self): preserve = 0 for token in base.Filter.__iter__(self): type = token["type"] if type == "StartTag" \ and (preserve or token["name"] in self.spacePreserveElements): preserve += 1 elif type == "EndTag" and preserve: preserve -= 1 elif not preserve and type == "SpaceCharacters" and token["data"]: # Test on token["data"] above to not introduce spaces where there were not token["data"] = " " elif not preserve and type == "Characters": token["data"] = collapse_spaces(token["data"]) yield token def collapse_spaces(text): return SPACES_REGEX.sub(' ', text)


Your basket
Lawn Feed & Colour Indicator
Quantity: 1
£114.00
-
@@include('./components/assets/recycle.html')Recyclable packaging
-
@@include('./components/assets/fast.html')Free Next Day delivery
-
@@include('./components/assets/tree.html')10 trees planted every order


public interface CameraCaptureSession
CameraCaptureSession
provides the means by which streaming data can be captured
from the camera.
Camera.createCaptureSession(<any>)
| Modifier and Type | Interface and Description |
|---|---|
static interface |
CameraCaptureSession.CaptureCallback
A callback object for tracking the progress
of a
CameraCaptureRequest
submitted to the
camera device.
|
static interface |
CameraCaptureSession.StateCallback
A callback object for receiving updates about
the state of a camera capture session.
|
static class |
CameraCaptureSession.StateCallbackDefault
|
static interface |
CameraCaptureSession.StatusCallback
|
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Close this capture session
|
Camera
|
getCamera()
Get the camera device that this session is
created for.
|
CameraCaptureSequenceId
|
startCapture(CameraCaptureRequest cameraCaptureRequest,
<any> captureContinuation,
<any> statusContinuation)
As in
#startCapture(CameraCaptureRequest,
CaptureCallback, Continuation) , but supports
the generality of a Continuation to handle the
capture.
|
CameraCaptureSequenceId
|
startCapture(CameraCaptureRequest cameraCaptureRequest,
CameraCaptureSession.CaptureCallback captureCallback,
<any> statusContinuation)
Stream data from the camera: request
endlessly repeating capture of images
by this capture session.
|
void |
stopCapture()
|
Camera getCamera()
void close()
CameraCaptureSequenceId startCapture(CameraCaptureRequest cameraCaptureRequest, CameraCaptureSession.CaptureCallback captureCallback, <any> statusContinuation) throws CameraException
CameraFrame
s
are provided through
CameraCaptureSession.CaptureCallback.onNewFrame(org.firstinspires.ftc.robotcore.external.hardware.camera.CameraCaptureSession,
org.firstinspires.ftc.robotcore.external.hardware.camera.CameraCaptureRequest,
org.firstinspires.ftc.robotcore.external.hardware.camera.CameraFrame)
as they become available.
With this method, the camera device will continually capture
images
using the settings in the provided CameraCaptureRequest
,
at the maximum
rate possible.
If the capture fails to start, then an exception is thrown.
To stop the repeating capture, call stopCapture()
Calling this method will replace any earlier repeating request or burst set up by this method.
cameraCaptureRequest
- the request to repeat
indefinitely
captureCallback
- The callback object to notify
every time the
request finishes processing. If null, no metadata will be
produced for this stream of requests, although image data
will
still be produced.
statusContinuation
- the callback to notify
regarding status events of the capture
CameraCaptureSession.StatusCallback.onCaptureSequenceCompleted(org.firstinspires.ftc.robotcore.external.hardware.camera.CameraCaptureSession,
org.firstinspires.ftc.robotcore.external.hardware.camera.CameraCaptureSequenceId,
long)
.
CameraException
- if the camera device is no longer connected or has
encountered a fatal error
java.lang.IllegalStateException
- if this
session is no longer active, either because the session
was explicitly closed, a new session has been created
or the camera device has been closed.
stopCapture()
,
#startCapture(CameraCaptureRequest, Continuation,
Continuation)
CameraCaptureSequenceId startCapture(CameraCaptureRequest cameraCaptureRequest, <any> captureContinuation, <any> statusContinuation) throws CameraException
#startCapture(CameraCaptureRequest,
CaptureCallback, Continuation)
, but supports
the generality of a Continuation
to handle the
capture. Note that unless this continuation
synchronously dispatches, or indicates that it can run on a
guest worker thread, a copy of
each frame will be made before invoking CameraCaptureSession.CaptureCallback.onNewFrame(org.firstinspires.ftc.robotcore.external.hardware.camera.CameraCaptureSession,
org.firstinspires.ftc.robotcore.external.hardware.camera.CameraCaptureRequest,
org.firstinspires.ftc.robotcore.external.hardware.camera.CameraFrame)
.
CameraException
Continuation#isDispatchSynchronous()
,
#startCapture(CameraCaptureRequest, CaptureCallback,
Continuation)
void stopCapture()
Cancel any ongoing repeating capture set by startCapture(org.firstinspires.ftc.robotcore.external.hardware.camera.CameraCaptureRequest,
org.firstinspires.ftc.robotcore.external.hardware.camera.CameraCaptureSession.CaptureCallback,
<any>)
. This method
is idempotent.
Any currently in-flight captures will still complete.


This is the partial for view 2.
Showing of 'interpolate' filter: {{ 'Current version is v%VERSION%.' | interpolate }}
{{ bigData | json }}
Collapsed? {{isCollapsed}}


Elderly man hospitalised after being struck by car while walking in Midleton, Co Cork
Traffic was held up while paramedics rushed to help the man
by Cormac O'SheaAn elderly man has been taken to hospital after he was knocked down in Cork early on Thursday morning.
The man was on the Main Street in Midleton when he was struck by the car at 8am.
The incident happened near the Health Centre, Cork Beo reports.
Gardai and an ambulance were called to the scene and the man was removed to Cork University Hospital where his injuries are described as minor.
Traffic was held up in the busy Cork town for around half-an-hour with Gardai directing vehicles as the paramedics helped the man.
We'll be bringing you the very latest updates, pictures and video on this breaking news story.
For the latest news and breaking news visit irishmirror.ie/news.
Get all the big headlines, pictures, analysis, opinion and video on the stories that matter to you.
Follow us on Twitter @IrishMirror - the official Irish Mirror Twitter account - real news in real time.
We're also on Facebook/irishmirror - your must-see news, features, videos and pictures throughout the day from the Irish Daily Mirror, Irish Sunday Mirror and irishmirror.ie.
How to follow the Irish Mirror on social media
You can like our main Facebook page here.
Our Irish Mirror Sports page - which brings you all your Irish and UK sports news - can be found here.
You can also check out our Irish Mirror GAA sports page.
The Irish Mirror Twitter account is @IrishMirror while our sports account is @MirrorSportIE.
Our Instagram account can be found here.


{% extends "base.html" %} {% block title %}
Medieval catalogues > UNIVERSITY AND COLLEGE LIBRARIES OF CAMBRIDGE > Corpus Christi College > Books granted by Peter Nobys, after July 1525
{% endif %}218 identified entries found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}