Jump to content
Compvision.ru
Vicul

MS Visual C++ и OpenCV

Recommended Posts

OpenCV dll'ки нуждаются в C++ библиотеках. Обычно с такой программой распространяют vcredist_x86.exe. Обычно устанавливается со студией.

Share this post


Link to post
Share on other sites
OpenCV dll'ки нуждаются в C++ библиотеках. Обычно с такой программой распространяют vcredist_x86.exe. Обычно устанавливается со студией.

спасибо заработало,

теперь надо разбираться еще с лицензией на vcredist_x86.exe,

вообщем одни засады! :)

Share this post


Link to post
Share on other sites

Лицензия свободная, тут засад нет.

Share this post


Link to post
Share on other sites
Лицензия свободная, тут засад нет.

Это точно? И ее свободно (я имею виду легально) можно качнуть у мелкомягких? Или она все таки идет под лицензией

студии с правом на неограниченные установки на компах заказчика?

Share this post


Link to post
Share on other sites

Спасибо нашел этот ехе у них на сайте.

Вы не пробовали устанавливать его длл-ки без запуска exe? Просто подсунуть их программе без регистрации?

А то ломит мне инстал пак писать для этого.

Share this post


Link to post
Share on other sites

По идее можно, я не пробовал. Просто большинство программ таскают сам vcredist_x86.exe и предлагают его установить при инсталляции. У меня такие проблемы не стоят.

Share this post


Link to post
Share on other sites
По идее можно, я не пробовал.

Я уже попробовал - не проходит, требует регистрации. В приципе проблема ясна, думаю надо написать нормальный скрипт для инстала и использовать его во всех дальнейших проектах, как шаблон и не париться больше по этому поводу.

Спасибо за помощь.

Share this post


Link to post
Share on other sites
Я уже попробовал - не проходит, требует регистрации. В приципе проблема ясна, думаю надо написать нормальный скрипт для инстала и использовать его во всех дальнейших проектах, как шаблон и не париться больше по этому поводу.

Спасибо за помощь.

Нужно использовать файл vcredist_x86.exe , который лежит в

c:\Programme\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86\

К тому же лучше компилировать OpenCV самому (я, например, компилирую из SVN).

На компе без OpenCV нужно скопировать все OpenCV-dll-ки, например, в C:/Windows/System32/

и проинсталлировать вышеназванный vcredist_x86.exe.

И усё :)

Share this post


Link to post
Share on other sites

День добрый!

Пытаюсь запустить программу из примера squares.cpp. При компиляции возникает ошибка (картинку приложил). Первая же ссылка в поисковике выкинула на пост

http://stackoverflow.com/questions/18882760/debug-assertion-failed-expression-pfirstblock-phead

Основная мысль, как я понял, в том, что ошибка возникает при неверной настройке компилятора

Цитата

If the MSVC Runtime library is set to Multi-threaded Debug DLL (/MDd), then this is no problem (it works fine).

If the MSVC Runtime library is set to Multi-threaded Debug (/MTd), then it will throw this error, which can be fixed with the following instructions.

Но я пробовал оба этих параметра, и ошибка осталась. Кто-то сталкивался с такими проблемами? opencv 249 / MS Visual Studio 2012

1.png

Запускал простую программку для подключения камеры, все заработало. Странно...

 

#include <iostream>
#include <Windows.h>
#include <opencv2\core\core.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>



using namespace std;
using namespace cv;



int main()
{
	//ставим русский язык консоли
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	
	VideoCapture cap(0);
    if(!cap.isOpened())  // check if we succeeded
	{
		cout<<"Не могу найти камеру или файл...\n";
		return -1;
	}
	cout<<"подключение прошло успешно...\n";

	Mat Frame;

	cout <<"Для выхода нажмите Q  ..."<<endl;

	while (1)
	{
		cap>>Frame;
		imshow("Frame",Frame);
	
		int KeyCode=waitKey (30);

if(KeyCode==113 || KeyCode==81) 
	   {
		   break;
	   }
	
	}

return 0;
}

 

Share this post


Link to post
Share on other sites

под QT такие проблемы тоже возникают?

Возникала такая же ошибка, когда запускал пример кода для SURF. Проблема была в том, что в бесконечном цикле создавались переменные, а при начале следующего шага цикла они создавались заново. Я просто перенес объявление переменных до начала бесконечного цикла и программа заработала.

Приношу извенения за глупые вопрос ;)

 

 

Share this post


Link to post
Share on other sites

Еще раз всем привет!

Описанная мной проблема (ранее через один пост) продолжает меня преследовать. Хочу поделиться небольшими соображениями.

Сейчас я работаю на Windows7 MS visual studio 2012, пользуюсь библиотекой opencv 2.4.9. Поскольку мои попытки запустить пример программы поиска прямоугольников не увенчался успехом, я решил поробовать сам написать что-то подобное.  Ниже приведу простой код, программку я так и не доделал, но коечто нащупал:

#include <iostream>
#include <Windows.h>
#include <opencv2\core\core.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;
//-------------------------------------------------------
void MyFindRect(Mat &OriginalImg);
//-------------------------------------------------------

int main()
{
	//ставим русский язык консоли
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	
	/*VideoCapture cap(0);
    if(!cap.isOpened())  // check if we succeeded
	{
		cout<<"Не могу найти камеру или файл...\n";
		return -1;
	}
	cout<<"подключение прошло успешно...\n";
	*/

	Mat Frame=imread("fig1.jpg",1);
	Mat CopyFrame;

	while(1)
		{
			Frame.copyTo(CopyFrame);
			MyFindRect(CopyFrame);
			waitKey();

		}
return 0;
}
//============================================================

void MyFindRect(Mat &OriginalImg)
{
	Mat BinImg;
	Canny(OriginalImg, BinImg, 50, 200, 3);
		
 vector<Vec2f> lines;
 vector<Vec2f>().swap(lines);
    //HoughLinesP(BinImg, lines, 1, CV_PI/180, 50, 50, 10 );
	 HoughLines(BinImg, lines, 0.5, CV_PI/180, 100, 0, 0 );

	  for( size_t i = 0; i < lines.size(); i++ )
    {
		
        float rho = lines[i][0], theta = lines[i][1];
        Point pt1, pt2;
        double a = cos(theta), b = sin(theta);
        double x0 = a * rho, y0 = b * rho;
        pt1.x = cvRound(x0 + 1000 * (-b));
        pt1.y = cvRound(y0 + 1000 * (a));
        pt2.x = cvRound(x0 - 1000 * (-b));
        pt2.y = cvRound(y0 - 1000 * (a));
        line( OriginalImg, pt1, pt2, Scalar(0,0,255), 3, CV_AA);
		cout <<"pt1: X = "<<pt1.x<<" ; Y = "<<pt1.y<<endl;
		cout <<"pt2: X = "<<pt2.x<<" ; Y = "<<pt2.y<<endl<<endl;
		
    }
	
imshow("BinImg",BinImg);
imshow("Original",OriginalImg);
cout<<"=========================================="<<endl;
cout << "vektor size: "<<lines.size()<<endl;
cout<<"=========================================="<<endl;
lines.~vector();
BinImg.release();
}

Функция MyFindRect вызывается в цикле, в ней, пока, происходит поиск прямых на изображении. При первом ее вызове все проходит гладко, а уже при втором вызове возникает эта ошибка.

Мои предположения, что дело в вызове функции HoughLines.

Я вспомнил, что раньше писал прогрмму на Windows XP,  использовал библиотеку opencv 2.4.2 и таких проблем не возникало. Попытался запустить код этой программы на текущей конфигурации ( Windows7, MS visual studio 2012, opencv 2.4.9) и ошибка _pFirst==pHead также появилась.

На днях попытаюсь запустить на старой машине, посмотрю что получится.

Если у кого возникают такие же проблемы то напишите пожалуйста, а то такое ощущение, что только у меня такая проблема. Если можно укажите конфигурации своих систем.

 

Share this post


Link to post
Share on other sites

Эти примеры из библиотеки opencv 3!

Установил себе opencv 3.0.1. Пытался запустить пример squares.cpp, возникла ошибка (скриншот окна прикрепил).

Вот листинг окна Output Visual Studio:

'OPENCV301_Template.exe' (Win32): Loaded 'C:\Users\ZuikovAA\Documents\Visual Studio 2012\Projects\OPENCV301_Template\x64\Debug\OPENCV301_Template.exe'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\advapi32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\sechost.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Users\ZuikovAA\Documents\Visual Studio 2012\Projects\OPENCV301_Template\x64\Debug\opencv_world310d.dll'. Cannot find or open the PDB file.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\lpk.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\usp10.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\ole32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\oleaut32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\comdlg32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\shlwapi.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\winsxs\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18837_none_a4d981ff711297b6\comctl32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\shell32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msvfw32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\winmm.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\avifil32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msacm32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\avicap32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\version.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Users\ZuikovAA\Documents\Visual Studio 2012\Projects\OPENCV301_Template\x64\Debug\msvcp120d.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Unloaded 'C:\Users\ZuikovAA\Documents\Visual Studio 2012\Projects\OPENCV301_Template\x64\Debug\msvcp120d.dll'
The program '[5412] OPENCV301_Template.exe' has exited with code -1073741701 (0xc000007b).

 

error.jpg

Share this post


Link to post
Share on other sites

Скорее всего изображений не нашел.

Share this post


Link to post
Share on other sites

Изображения он находит, если бы он их не нашел в консоли было бы сообщение "Couldn't load "

Я порылся в поисковиках. Проект я решил собирал под свою 64-битную систему. В папку с программой кидал файлы msvcp120d.dll и msvcr120d.dll. Я подумал что они у меня от системы 32-бит. Вот тут нашел их версии для 64-битнй системы, антивирус показал что они чистые. Положил их в папку с программой и зпустил прект... И вуаля :wacko: опять эта ошибка  Expression: _pFirstBlock == pHead

Вот листинг окна Output:

'OPENCV301_Template.exe' (Win32): Loaded 'C:\Users\ZuikovAA\Documents\Visual Studio 2012\Projects\OPENCV301_Template\x64\Debug\OPENCV301_Template.exe'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\advapi32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\sechost.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Users\ZuikovAA\Documents\Visual Studio 2012\Projects\OPENCV301_Template\x64\Debug\opencv_world310d.dll'. Cannot find or open the PDB file.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\lpk.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\usp10.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\ole32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\oleaut32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\comdlg32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\shlwapi.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\winsxs\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18837_none_a4d981ff711297b6\comctl32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\shell32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msvfw32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\winmm.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\avifil32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msacm32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\avicap32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\version.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Users\ZuikovAA\Documents\Visual Studio 2012\Projects\OPENCV301_Template\x64\Debug\msvcp120d.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Users\ZuikovAA\Documents\Visual Studio 2012\Projects\OPENCV301_Template\x64\Debug\msvcr120d.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msvcp110d.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msvcr110d.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\imm32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msctf.dll'. Symbols loaded.

***** VIDEOINPUT LIBRARY - 0.1995 - TFW07 *****

'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\cryptbase.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\clbcatq.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\OpenCL.dll'. Cannot find or open the PDB file.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\nvopencl.dll'. Cannot find or open the PDB file.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\ws2_32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\nsi.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\setupapi.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\cfgmgr32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\devobj.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\dwmapi.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Unloaded 'C:\Windows\System32\dwmapi.dll'
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\nvapi64.dll'. Cannot find or open the PDB file.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\wintrust.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\crypt32.dll'. Symbols loaded.
'OPENCV301_Template.exe' (Win32): Loaded 'C:\Windows\System32\msasn1.dll'. Symbols loaded.
Debug Assertion Failed!

Program: ...\Projects\OPENCV301_Template\x64\Debug\OPENCV301_Template.exe
File: f:\dd\vctools\crt_bld\self_64_amd64\crt\src\dbgheap.c
Line: 1424

Expression: _pFirstBlock == pHead

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
The thread 0xa88 has exited with code 3 (0x3).
The thread 0x141c has exited with code 3 (0x3).
The thread 0x1058 has exited with code 3 (0x3).
The thread 0xe6c has exited with code 3 (0x3).
The thread 0xc8c has exited with code 3 (0x3).
The thread 0x438 has exited with code 3 (0x3).
The thread 0x1564 has exited with code 3 (0x3).
The thread 0x1404 has exited with code 3 (0x3).
The thread 0xee4 has exited with code 3 (0x3).
The program '[5656] OPENCV301_Template.exe' has exited with code 3 (0x3).

 

Я начинаю уже подумывать о возвращении на XP)))

 

Share this post


Link to post
Share on other sites

A OpenCV Вы под какую систему собирали ?

Share this post


Link to post
Share on other sites

я просто скачивал opencv  exe-шником и запускал его. устанавливал в корень диска системы. После этого я делал только манипуляции с проектом в visual studio (прописывал расположение include, lib и т.д.). Некоторые настройки пректа я пркладываю скринами.

Никаких дополнительных действий с библиотекой я не делал.

Я что-то упустил при установке?

MS Visual Studio 2012 Windows 7 64bit

1.jpg

2.jpg

3.jpg

4.jpg

Share this post


Link to post
Share on other sites

Вот окно с либами, для дебага я выбирал имя с буквой d, это я знаю))

Так а если вернуться к вопросу установки библиотеки. Я распаковал ее из exe файла, после этого нужно еще что-то делать? или достаточно прикрепить ее к проекту и все?

CMake, как я понимаю нужно использовать если скачиваешь исключительно исходники без dll и lib файлов (для меньшего объема), а потом компилируешь библиотеку под свою систему. Я прав?

1.jpg

Share this post


Link to post
Share on other sites

 

5 часов назад, Dvoetut said:

CMake, как я понимаю нужно использовать если скачиваешь исключительно исходники без dll и lib файлов (для меньшего объема), а потом компилируешь библиотеку под свою систему. Я прав?

Ну не для меньшего объема :) 

А для лучшей совместимости с Вашей средой и для возможности настройки конфигурации модулей.

Share this post


Link to post
Share on other sites

Выполнил все в точности как по первой ссылке, появилось окно с ошибкой (снимок приложил)

Вторую ссылку проверю позже.

Этовсе очень грустно((( я начинаю терять надежду(((

листинг окна OUTPUT:

'opencv249_64Bit_template.exe' (Win32): Loaded 'C:\Users\ZuikovAA\Documents\Visual Studio 2012\Projects\opencv249_64Bit_template\x64\Debug\opencv249_64Bit_template.exe'. Symbols loaded.
'opencv249_64Bit_template.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Symbols loaded.
'opencv249_64Bit_template.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Symbols loaded.
'opencv249_64Bit_template.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Symbols loaded.
'opencv249_64Bit_template.exe' (Win32): Loaded 'C:\Windows\System32\advapi32.dll'. Symbols loaded.
'opencv249_64Bit_template.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. Symbols loaded.
'opencv249_64Bit_template.exe' (Win32): Loaded 'C:\Windows\System32\sechost.dll'. Symbols loaded.
'opencv249_64Bit_template.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. Symbols loaded.
'opencv249_64Bit_template.exe' (Win32): Loaded 'C:\opencv\build\x86\vc12\bin\opencv_core249d.dll'. Cannot find or open the PDB file.
'opencv249_64Bit_template.exe' (Win32): Unloaded 'C:\opencv\build\x86\vc12\bin\opencv_core249d.dll'
The program '[6996] opencv249_64Bit_template.exe' has exited with code -1073741701 (0xc000007b).

 

 

1.jpg

Share this post


Link to post
Share on other sites

Под отладчиком запускали ?

На какой строчке падает ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×