Ask Your Question

Dilation produces translation and doesn't work

asked 2013-02-22 21:44:13 -0500

Keba gravatar image

updated 2018-01-12 20:53:32 -0500

Whenever I use dilation, the result contains no dilation, but is simply the input image, that is translated (moved) downward to the right. I do not get any errors during compilation or runtime. Using the exact same code, my friend gets the correct result. AFAIK, his setup is identical to mine. His hardware is also the same. Obviously, something is wrong with my installation, and I want to fix it. Any help is greatly appreciated.

My setup:

  • Windows 7 ultimate (64-bit)
  • Visual C++ 2010 Express
  • OpenCV 2.4.3 (downloaded, not built)

I have included the code below, and the getBuildInformation.

#include <opencv\cv.h>
#include <opencv\highgui.h>

int main(){
    cv::Mat image = cv::imread("C:\\OpenCV2.4.3\\doc\\opencv-logo.png",0);

    cv::imshow("1", image);


    cv::imshow("2", image);

    cv::dilate(image, image, cv::Mat(cv::Size(50,50),CV_8UC1));

    cv::imshow("3", image);


        if(cv::waitKey(1) >= 0) return 0;
    return 0;

General configuration for OpenCV 2.4.3 =====================================
  Version control:               commit:6484732

    Host:                        Windows 6.1 x86
    CMake:                       2.8.9
    CMake generator:             Visual Studio 10
    CMake build tool:            C:/PROGRA~2/MICROS~2.0/Common7/IDE/
    MSVC:                        1600

    Built as dynamic libs?:      YES
    C++ Compiler:                C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/amd64/cl.exe
    C++ flags (Release):         /DWIN32 /D_WINDOWS /W4  /EHa /GR  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:SSE2 /Oi /fp:fast  /wd4251 /MP4  /MD /O2 /Ob2 /D NDEBUG
    C++ flags (Debug):           /DWIN32 /D_WINDOWS /W4  /EHa /GR  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:SSE2 /Oi /fp:fast  /wd4251 /MP4  /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
    C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/amd64/cl.exe
    C flags (Release):           /DWIN32 /D_WINDOWS /W3   /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:SSE2 /Oi /fp:fast    /MP4  /MD /O2 /Ob2 /D NDEBUG
    C flags (Debug):             /DWIN32 /D_WINDOWS /W3   /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:SSE2 /Oi /fp:fast    /MP4  /D_DEBUG /MDd /Zi  /Ob0 /Od /RTC1
    Linker flags (Release):      /STACK:10000000 /machine:X86   /INCREMENTAL:NO
    Linker flags (Debug):        /STACK:10000000 /machine:X86   /debug /INCREMENTAL
    Precompiled headers:         YES

  OpenCV modules:
    To be built:                 core imgproc flann highgui features2d calib3d ml video objdetect contrib nonfree photo legacy gpu stitching ts videostab
    Disabled:                    world
    Disabled by dependency:      -
    Unavailable:                 androidcamera java ocl python

    QT 4.x:                      NO
    Win32 UI:                    YES
    OpenGL support:              NO

  Media I/O:
    ZLib:                        build (ver 1.2.7)
    JPEG:                        build (ver 62)
    PNG:                         build (ver 1.5.12)
    TIFF:                        build (ver 42 - 4.0.2)
    JPEG 2000:                   build (ver 1.900.1)
    OpenEXR:                     build (ver 1.7.1)

  Video I/O:
    FFMPEG:                      YES (prebuilt binaries)
      codec:                     YES (ver 53.61.100)
      format:                    YES (ver 53.32.100)
      util:                      YES (ver 51.35.100)
      swscale ...
edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2013-02-25 02:42:06 -0500

Keba gravatar image

Found the problem. The kernel was not defined right, and caused random behavior. I sure didn't need the debugger to tell me such useless information, or in any way indicate to me that there was a problem.

The bad way:

cv::dilate(image, image, cv::Mat(cv::Size(50,50),CV_8UC1));

The good way:

cv::dilate(image, image, cv::Mat::ones(50,50,CV_8UC1));
edit flag offensive delete link more

Question Tools


Asked: 2013-02-22 21:44:13 -0500

Seen: 780 times

Last updated: Feb 25 '13