2013-06-08 3 views
0

Итак, я супер noob, и я пытаюсь сделать что-то, что преобразует изображение RGB в двоичное изображение в C/C++, используя OpenCV. Моя первая программа была такой:RGB-изображение в двоичное изображение с использованием OpenCV

#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; 
} 

Но в нем говорится: «Были ошибки сборки», и он открывает только исходное изображение. Как я могу сделать это правильно? Может ли кто-нибудь помочь мне в этом?

Выход был:

'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 .: Использование Windows 8 + Visual Studio 10 + OpenCV 2.3.

Изображение Я пытаюсь преобразовать в двоичное изображение: img1.png

+0

У вас есть упомянутые библиотеки DLL в сообщ ошибок в 'C: \ Windows \ System32 \'? – YankeeWhiskey

ответ

2

удалить дополнительный Mat im_gray; и включают в себя путь установлен в OpenCV2.3/build/include и программа компилируется.

#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; 
}  

редактировать: 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; 
}  
+0

Спасибо за ответ. Я поставил 77 istead из 128 (Mat img_bw = im_gray> 128;) Я был лучше, но все же некоторые цифры неполны. Любая идея, как я могу это исправить? Вот результат https://docs.google.com/file/d/0BzUNc6BOkYrNNVNFZzAtenpvaWM/edit?usp=sharing – U23r

2
#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; 
} 
Смежные вопросы