5 #include <visp3/core/vpConfig.h>
6 #include <visp3/core/vpImage.h>
7 #include <visp3/gui/vpDisplayGDI.h>
8 #include <visp3/gui/vpDisplayOpenCV.h>
9 #include <visp3/gui/vpDisplayX.h>
10 #include <visp3/io/vpImageIo.h>
12 #if defined(VISP_HAVE_MODULE_IMGPROC)
14 #include <visp3/imgproc/vpImgproc.h>
18 int main(
int argc,
const char **argv)
21 #if defined(VISP_HAVE_MODULE_IMGPROC) && (defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI) || defined(VISP_HAVE_OPENCV))
25 #ifdef ENABLE_VISP_NAMESPACE
29 std::string input_filename =
"Crayfish-low-contrast.png";
30 int blockRadius = 150;
36 for (
int i = 1; i < argc; i++) {
37 if (std::string(argv[i]) ==
"--input" && i + 1 < argc) {
38 input_filename = std::string(argv[i + 1]);
40 else if (std::string(argv[i]) ==
"--blockRadius" && i + 1 < argc) {
41 blockRadius = atoi(argv[i + 1]);
43 else if (std::string(argv[i]) ==
"--bins" && i + 1 < argc) {
44 bins = atoi(argv[i + 1]);
46 else if (std::string(argv[i]) ==
"--slope" && i + 1 < argc) {
47 slope = (float)atof(argv[i + 1]);
49 else if (std::string(argv[i]) ==
"--sigma" && i + 1 < argc) {
50 sigma = (float)atof(argv[i + 1]);
52 else if (std::string(argv[i]) ==
"--weight" && i + 1 < argc) {
53 weight = atof(argv[i + 1]);
55 else if (std::string(argv[i]) ==
"--help" || std::string(argv[i]) ==
"-h") {
56 std::cout <<
"Usage: " << argv[0]
57 <<
" [--input <input image>]"
58 " [--blockRadius <block radius for CLAHE>] "
59 " [--bins <nb histogram bins for CLAHE>] [--slope <slope for CLAHE>]"
60 " [--sigma <Gaussian kernel standard deviation>] [--weight <unsharp mask weighting>]"
73 vpDisplayX d, d2, d3, d4, d5, d6;
74 #elif defined(VISP_HAVE_GDI)
76 #elif defined(HAVE_OPENCV_HIGHGUI)
79 d.
init(I_color, 0, 0,
"Input color image");
85 d2.init(I_stretch, I_color.
getWidth(), 10,
"Stretch contrast");
91 d3.init(I_stretch_hsv, 0, I_color.
getHeight() + 80,
"Stretch contrast HSV");
97 d4.init(I_hist_eq, I_color.
getWidth(), I_color.
getHeight() + 80,
"Histogram equalization");
103 d5.init(I_clahe, 0, 2 * I_color.
getHeight() + 80,
"CLAHE");
109 d6.init(I_unsharp, I_color.
getWidth(), 2 * I_color.
getHeight() + 80,
"Unsharp mask");
Display for windows using GDI (available on any windows 32 platform).
The vpDisplayOpenCV allows to display image using the OpenCV library. Thus to enable this class OpenC...
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const std::string &title="") VP_OVERRIDE
static bool getClick(const vpImage< unsigned char > &I, bool blocking=true)
static void display(const vpImage< unsigned char > &I)
static void flush(const vpImage< unsigned char > &I)
static void displayText(const vpImage< unsigned char > &I, const vpImagePoint &ip, const std::string &s, const vpColor &color)
static void read(vpImage< unsigned char > &I, const std::string &filename, int backend=IO_DEFAULT_BACKEND)
unsigned int getWidth() const
unsigned int getHeight() const
VISP_EXPORT void clahe(const VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I1, VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I2, int blockRadius=150, int bins=256, float slope=3.0f, bool fast=true)
VISP_EXPORT void stretchContrast(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I)
VISP_EXPORT void stretchContrastHSV(VISP_NAMESPACE_ADDRESSING vpImage< VISP_NAMESPACE_ADDRESSING vpRGBa > &I)
VISP_EXPORT void equalizeHistogram(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, const VISP_NAMESPACE_ADDRESSING vpImage< bool > *p_mask=nullptr)
VISP_EXPORT void unsharpMask(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, float sigma, double weight=0.6)