JeVois Tutorials
1.20
JeVois Smart Embedded Machine Vision Tutorials
Share this page:
Tweet
doc
snip
HelloJeVois.C
Go to the documentation of this file.
1
#include <
jevois/Core/Module.H
>
2
#include <
jevois/Image/RawImageOps.H
>
3
4
// icon by Catalin Fertu in cinema at flaticon
5
6
//! JeVois sample module
7
/*! This module is provided as an example of how to create a new standalone module.
8
9
JeVois provides helper scripts and files to assist you in programming new modules, following two basic formats:
10
11
- if you wish to only create a single module that will execute a specific function, or a collection of such modules
12
where there is no shared code between the modules (i.e., each module does things that do not relate to the other
13
modules), use the skeleton provided by this sample module. Here, all the code for the sample module is compiled
14
into a single shared object (.so) file that is loaded by the JeVois engine when the corresponding video output
15
format is selected by the host computer.
16
17
- if you are planning to write a collection of modules with some shared algorithms among several of the modules, it
18
is better to first create machine vision Components that implement the algorithms that are shared among several of
19
your modules. You would then compile all your components into a first shared library (.so) file, and then compile
20
each module into its own shared object (.so) file that depends on and automatically loads your shared library file
21
when it is selected by the host computer. The jevoisbase library and collection of components and modules is an
22
example for how to achieve that, where libjevoisbase.so contains code for Saliency, ObjectRecognition, etc
23
components that are used in several modules, and each module's .so file contains only the code specific to that
24
module.
25
26
@author Sample Author
27
28
@videomapping YUYV 640 480 28.5 YUYV 640 480 28.5 SampleVendor HelloJeVois
29
@email sampleemail\@samplecompany.com
30
@address 123 First Street, Los Angeles, CA 90012
31
@copyright Copyright (C) 2017 by Sample Author
32
@mainurl http://samplecompany.com
33
@supporturl http://samplecompany.com/support
34
@otherurl http://samplecompany.com/about
35
@license GPL v3
36
@distribution Unrestricted
37
@restrictions None */
38
class
HelloJeVois
:
public
jevois::Module
39
{
40
public
:
41
//! Default base class constructor ok
42
using
jevois::Module::Module
;
43
44
//! Virtual destructor for safe inheritance
45
virtual
~HelloJeVois
() { }
46
47
//! Processing function
48
virtual
void
process
(
jevois::InputFrame
&& inframe,
jevois::OutputFrame
&& outframe)
override
49
{
50
// Wait for next available camera image:
51
jevois::RawImage
const
inimg = inframe.get(
true
);
52
53
// We only support YUYV pixels in this example, any resolution:
54
inimg.
require
(
"input"
, inimg.
width
, inimg.
height
, V4L2_PIX_FMT_YUYV);
55
56
// Wait for an image from our gadget driver into which we will put our results:
57
jevois::RawImage
outimg = outframe.get();
58
59
// Enforce that the input and output formats and image sizes match:
60
outimg.
require
(
"output"
, inimg.
width
, inimg.
height
, inimg.
fmt
);
61
62
// Just copy the pixel data over:
63
memcpy(outimg.
pixelsw
<
void
>(), inimg.
pixels
<
void
>(), std::min(inimg.
buf
->length(), outimg.
buf
->length()));
64
65
// Print a text message:
66
jevois::rawimage::writeText
(outimg,
"Hello JeVois!"
, 100, 230, jevois::yuyv::White,
jevois::rawimage::Font20x38
);
67
68
// Let camera know we are done processing the input image:
69
inframe.done();
// NOTE: optional here, inframe destructor would call it anyway
70
71
// Send the output image with our processing results to the host over USB:
72
outframe.send();
// NOTE: optional here, outframe destructor would call it anyway
73
}
74
};
75
76
// Allow the module to be loaded as a shared object (.so) file:
77
JEVOIS_REGISTER_MODULE
(
HelloJeVois
);
jevois::RawImage::pixels
const T * pixels() const
jevois::OutputFrame
jevois::rawimage::Font20x38
Font20x38
Module.H
jevois::RawImage
HelloJeVois::~HelloJeVois
virtual ~HelloJeVois()
Virtual destructor for safe inheritance.
Definition:
HelloJeVois.C:45
jevois::RawImage::require
void require(char const *info, unsigned int w, unsigned int h, unsigned int f) const
jevois::RawImage::width
unsigned int width
jevois::RawImage::pixelsw
T * pixelsw()
HelloJeVois::process
virtual void process(jevois::InputFrame &&inframe, jevois::OutputFrame &&outframe) override
Processing function.
Definition:
HelloJeVois.C:48
jevois::rawimage::writeText
void writeText(RawImage &img, std::string const &txt, int x, int y, unsigned int col, Font font=Font6x10)
HelloJeVois
JeVois sample module.
Definition:
HelloJeVois.C:38
jevois::Module
RawImageOps.H
jevois::RawImage::height
unsigned int height
jevois::InputFrame
jevois::RawImage::fmt
unsigned int fmt
jevois::RawImage::buf
std::shared_ptr< VideoBuf > buf
JEVOIS_REGISTER_MODULE
JEVOIS_REGISTER_MODULE(HelloJeVois)
jevois::Component::Module
friend friend class Module
Please help us improve this page: Edit it on
GitHub
or
email us your edits and suggestions.
Generated by
1.8.17