1

So, I'm super noob and I'm trying to do something that convert an RGB image to binary image in C/C++, using OpenCV. My first program was this:

#include <opencv.hpp>

using namespace cv;

int main ( int argc, char **argv )
{
Mat im_gray = imread("img1.png",CV_LOAD_IMAGE_GRAYSCALE);

Mat im_rgb  = imread("img.png");
Mat im_gray;
cvtColor(im_rgb,im_gray,CV_RGB2GRAY);

Mat img_bw = im_gray > 128;

imwrite("image_bw.jpg", img_bw);

return 0;
}

But it says "There were build errors" and it opens just the original image. How can I do it right? Can anybody help me with this?

The output was:

'opencv.exe': Loaded 'D:\Imagens\pibiti\opencv\Debug\opencv.exe', Symbols loaded.
'opencv.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'D:\Imagens\pibiti\opencv\opencv\opencv_core230d.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'D:\Imagens\pibiti\opencv\opencv\opencv_highgui230d.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\msvcp100d.dll', Symbols loaded.
'opencv.exe': Loaded 'C:\Windows\System32\msvcr100d.dll', Symbols loaded.
'opencv.exe': Loaded 'C:\Windows\System32\user32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\gdi32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\ole32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\oleaut32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\advapi32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.9200.16384_none_bf100cd445f4d954\comctl32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\avifil32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\msvfw32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\avicap32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\combase.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\msvcrt.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\rpcrt4.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\sechost.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\winmm.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\msacm32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\shell32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\version.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\winmmbase.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\shlwapi.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\imm32.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\msctf.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\cryptbase.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\bcryptprimitives.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Windows\System32\uxtheme.dll', Cannot find or open the PDB file
'opencv.exe': Loaded 'C:\Program Files\Iminent\Iminent.WinCore.dll', Binary was not built with debug information.
'opencv.exe': Loaded 'C:\Windows\System32\dwmapi.dll', Cannot find or open the PDB file
The thread 'Win32 Thread' (0xd9c) has exited with code -1073741510 (0xc000013a).
WinCore .dll DLL_PROCESS_DETACH:The program '[4136] opencv.exe: Native' has exited with code -1073741510 (0xc000013a).

PS.: Using Windows 8 + Visual Studio 10 + OpenCV 2.3.

The image I'm trying to convert to binary image: img1.png

1
  • Do you have the mentioned dlls in the error msg in `C:\Windows\System32` ? Commented Jun 8, 2013 at 3:26

2 Answers 2

3
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

//using namespace cv;

int main ( int argc, char **argv )
{
    cv::Mat im_gray;   // no nead to load the Mat with anything when declaring it.
    cv::Mat im_rgb  = cv::imread("img.png");
    cv::cvtColor(im_rgb, im_gray,CV_RGB2GRAY);
    // INSTEAD of the above two lines you could have cv::Mat im_gray = imread("img1.png",CV_LOAD_IMAGE_GRAYSCALE);

    // the following is an alternative to Mat img_bw = im_gray > 128
    cv::Mat img_bw;
    cv::threshold(im_gray, img_bw, 128.0, 255.0, THRESH_BINARY);

    cv::imwrite("image_bw.jpg", img_bw);

    return 0;
} 
Sign up to request clarification or add additional context in comments.

Comments

3

remove extra Mat im_gray; and include path is set to OpenCV2.3/build/include and the program compiles.

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main ( int argc, char **argv )
{
    Mat im_gray = imread("img1.png",CV_LOAD_IMAGE_GRAYSCALE);

    Mat im_rgb  = imread("img.png");
    cvtColor(im_rgb,im_gray,CV_RGB2GRAY);

    Mat img_bw = im_gray > 128;

    imwrite("image_bw.jpg", img_bw);

    return 0;
}    

edit:enter image description here

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;

int main( int argc, char** argv )
{
    Mat img = imread( "C:/test/img1.png");
    cvtColor(img,img,CV_BGR2GRAY);
    Mat left=img(Rect(0,0,300,151));
    Mat right=img(Rect(300,0,img.cols-300,151));
    threshold(left,left,0,255,CV_THRESH_OTSU);
    threshold(right,right,0,255,CV_THRESH_OTSU);
    imshow("img",img);
    waitKey(0);
    return 0;
}    

1 Comment

Thanks for the answer. I put 77 istead of 128 (Mat img_bw = im_gray > 128;) I was the better, but still some numbers are incomplete. Any idea how I can fix this? Here the result docs.google.com/file/d/0BzUNc6BOkYrNNVNFZzAtenpvaWM/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.