powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
9 сообщений из 9, страница 1 из 1
openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
    #38581564
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
построил тестовый пример библиотеки openCV
полученное приложение хочет msvcp100d.dll и msvcr100d.dll
вместо msvcp100.dll и msvcr100.dll, которые есть на компе.

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
@echo off
rem // http://www.sql.ru/forum/actualthread.aspx?tid=584888&pg=1&hl=????????? ?????? 

rem set thsNm=%COMPUTERNAME%
SET dbg=d
SET dbg=



echo on
call  G:/bin/etc/params.%COMPUTERNAME%.cmd

SET OPENCV=c:\openCV

echo off


set INC=%OPENCV%\include

set CPATH=%VCPATH%\bin
set LPATH=%VCPATH%\LIB
set LPATH=%LPATH%;%OPENCV%\x86\vc10\lib
set LPATH=%LPATH%;.

set LPATH=%OPENCV%\x86\vc10\lib



if "%dbg%" == "d" (
  set CC=%CPATH%\cl /nologo     /DUNICODE /D_DEBUG
) else (
  set CC=%CPATH%\cl /nologo    
)
set RC=%CPATH%\rc 
set LNK=%CPATH%\link 

call %CPATH%\vcvars32.bat 


rem  стдин и правильная точка входа вместе
rem
SET FLAGS=/MACHINE:I386 /nologo 

set LIBS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

set LIBS=kernel32.lib user32.lib gdi32.lib  
set LIBS=%LIBS% opencv_core248d.lib opencv_imgproc248d.lib opencv_highgui248d.lib 
set LIBS=%LIBS%  opencv_ml248d.lib opencv_video248d.lib  opencv_legacy248.lib 


set D=

del  *.obj
touch  resource.res

rem exit
ECHO ON
%CC% %D% /I%INC%  -c  *.c >.err

dir /B *.obj >.list

echo on
%LNK% /OUT:"a.exe"  @.list %FLAGS% /MAP libcmt%dbg%.lib /LIBPATH:%LPATH% %LIBS%  >>.err

...
Рейтинг: 0 / 0
openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
    #38581589
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При всех проблемах c dll первым шагом должен быть запуск depends.
http://www.dependencywalker.com/
Смотри какие именно exe и dll запрашивают отсутствующие dll и думай чем эти (запрашивающие) библиотеки заменить. Заменить отсутствующие легальными способами нельзя.
В принципе можно методом хака, но это уже будет хак и никто не гарантирует его работоспособность.


tchingizшо сказать линкеру и/или компилятору, что бы вызывались те, которые есть?Скажи ему "пожалуйста". Он тебя проигнорирует конечно, но зато ты что-то ему скажешь.
Когда ты линкуешь в бинарный файл, ты можешь сказать какую из библиотек импорта использовать. В библиотеке импорта жестко прописано какую dll она будет использовать. Заменить используемую dll легальными методами невозможно.


Ну и навскидку:
tchingiz
Код: plaintext
1.
2.
set LIBS=%LIBS% opencv_core248d.lib opencv_imgproc248d.lib opencv_highgui248d.lib 
set LIBS=%LIBS%  opencv_ml248d.lib opencv_video248d.lib  opencv_legacy248.lib 

Если мой хрустальный шар не врет, то скорее всего проблема в этих библиотеках. Суффикс 'd' это традиция для debug-сборок. Скорее все именно они хотят отладочную версию рантайма.
...
Рейтинг: 0 / 0
openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
    #38581613
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПри всех проблемах c dll первым шагом должен быть запуск depends.
http://www.dependencywalker.com/
Смотри какие именно exe и dll запрашивают отсутствующие dll и думай чем эти (запрашивающие) библиотеки заменить. Заменить отсутствующие легальными способами нельзя.
В принципе можно методом хака, но это уже будет хак и никто не гарантирует его работоспособность.


tchingizшо сказать линкеру и/или компилятору, что бы вызывались те, которые есть?Скажи ему "пожалуйста". Он тебя проигнорирует конечно, но зато ты что-то ему скажешь.
Когда ты линкуешь в бинарный файл, ты можешь сказать какую из библиотек импорта использовать. В библиотеке импорта жестко прописано какую dll она будет использовать. Заменить используемую dll легальными методами невозможно.


Ну и навскидку:
tchingiz
Код: plaintext
1.
2.
set LIBS=%LIBS% opencv_core248d.lib opencv_imgproc248d.lib opencv_highgui248d.lib 
set LIBS=%LIBS%  opencv_ml248d.lib opencv_video248d.lib  opencv_legacy248.lib 

Если мой хрустальный шар не врет, то скорее всего проблема в этих библиотеках. Суффикс 'd' это традиция для debug-сборок. Скорее все именно они хотят отладочную версию рантайма.


yes, sir
fixed

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
@echo off
rem // http://www.sql.ru/forum/actualthread.aspx?tid=584888&pg=1&hl=?????????  ??????

rem set thsNm=%COMPUTERNAME%
SET dbg=d
SET dbg=



echo on
call  G:/bin/etc/params.%COMPUTERNAME%.cmd

SET OPENCV=G:\agp\128\prj\openCV

rem x86\vc10\lib\
echo off


rem set INC="G:\!distr\openCV\opencv\build\include\opencv\"
rem set INC="G:\!distr\openCV\opencv\build\include\opencv2\"
set INC=%OPENCV%\include

set CPATH=%VCPATH%\bin
set LPATH=%VCPATH%\LIB
set LPATH=%LPATH%;%OPENCV%\x86\vc10\lib
set LPATH=%LPATH%;.

set LPATH=%OPENCV%\x86\vc10\lib


rem set PATH=G:\!distr\openCV\opencv\build\x86\vc10\bin\

if "%dbg%" == "d" (
  set CC=%CPATH%\cl /nologo     /DUNICODE /D_DEBUG
) else (
  set CC=%CPATH%\cl /nologo    
)
set RC=%CPATH%\rc 
set LNK=%CPATH%\link 

call %CPATH%\vcvars32.bat 


rem  стдин и правильная точка входа вместе
rem
SET FLAGS=/MACHINE:I386 /nologo  /release
REM  /INCREMENTAL:YES   /NODEFAULTLIB:LIBCMT  

set LIBS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

set LIBS=kernel32.lib user32.lib gdi32.lib  

set LIBS=%LIBS%  opencv_core248%dbg%.lib opencv_imgproc248%dbg%.lib opencv_highgui248%dbg%.lib 
set LIBS=%LIBS%  opencv_ml248%dbg%.lib opencv_video248%dbg%.lib  opencv_legacy248.lib 

set D=/EHsc
set D=

del  *.obj
rem %RC%    resource.rc
rem touch  resource.res

rem exit
ECHO ON
%CC% %D% /I%INC%  -c  *.c >.err

dir /B *.obj >.list

echo on
%LNK% /OUT:"a.exe"  @.list %FLAGS%  /LIBPATH:%LPATH% %LIBS%  >>.err

...
Рейтинг: 0 / 0
openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
    #38599229
hhhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привалов что может и не может компьютерное зрение

http://www.compsciclub.ru/sites/default/files/CS_Club_2011_February_Vision.pdf
его лекции
http://uralvision.blogspot.com/2010/12/opencv-2010.html
...
Рейтинг: 0 / 0
openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
    #38599232
hhhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4 января в 05:38
Обучение OpenCV каскада Хаара

http://habrahabr.ru/post/208092/
...
Рейтинг: 0 / 0
openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
    #38600674
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
изменялка размера файлов, требует openCV шные dll-ки
bmp - размер угадывается хорошо
jpg - хуже
png - еще хуже
giff - умирает
...
Рейтинг: 0 / 0
openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
    #38600682
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при попытке из jpg в 15 м получить файл в 1 м
получается 1.3 м за 10 сек на зачуханном старом компе 2004 года.
...
Рейтинг: 0 / 0
openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
    #38619671
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как склеилось?
...
Рейтинг: 0 / 0
openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
    #38619672
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://taranukhin.blogspot.com/search/label/computer vision

код немного поменял

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
#include <vector>
#include <iostream>
#include <algorithm>
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <boost/numeric/ublas/matrix.hpp>
#include <opencv2/nonfree/nonfree.hpp>
using namespace boost::numeric::ublas;

// Homography matrix
cv::Mat H;

// Point of images save in cv::Mat
cv::Mat srcPoints;
cv::Mat disPoints;

std::vector<IplImage*> images;

int globalMaxX, globalMaxY, globalMinX, globalMinY;
// Multiplication width convert to boost::matrix
vector<double> matrixMultiplication(const cv::Mat* H, int x, int y)
{
        matrix<double> m(3,3);
        vector<double> pt(3);

        pt(0) = x; pt(1) = y; pt(2) = 1;

        // if there isn't matrix of homography return original point
        if (H == 0) return pt;

        // Copy to new matrix m
        for (unsigned i = 0; i < m.size1(); ++ i)
                for (unsigned j = 0; j < m.size2(); ++ j)
                        m(i, j) = (*H).at<double>(i, j);
       // Multiplication from boost            
       pt = prod(m, pt);
       // Normalization homogeneous coordinates
       pt = pt/pt(2);
       return pt;
}

// The size of image after applying maxtrix of homography
void ImageSizePoint(const IplImage* img, const cv::Mat* H, int* minX, int* minY, int* maxX, int* maxY)
{
        vector<double> x = matrixMultiplication(H, img->width, img->height);
        *maxX = x(0);   *maxY = x(1);
        *minX = x(0);   *minY = x(1);

        x = matrixMultiplication(H, img->width, 0);
        *maxX = std::max(*maxX,(int)x(0));
        *maxY = std::max(*maxY,(int)x(1));
        *minX = std::min(*minX,(int)x(0));
        *minY = std::min(*minY,(int)x(1));

        x = matrixMultiplication(H, img->height, 0);
        *maxX = std::max(*maxX,(int)x(0));
        *maxY = std::max(*maxY,(int)x(1));
        *minX = std::min(*minX,(int)x(0));
        *minY = std::min(*minY,(int)x(1));

        x = matrixMultiplication(H, 0, 0);
        *maxX = std::max(*maxX,(int)x(0));
        *maxY = std::max(*maxY,(int)x(1));
        *minX = std::min(*minX,(int)x(0));
        *minY = std::min(*minY,(int)x(1));
}
void flannFindPairs( const CvSeq*, const CvSeq* objectDescriptors,
const CvSeq*, const CvSeq* imageDescriptors, std::vector<int>& ptpairs )
{
        int length = (int)(objectDescriptors->elem_size/sizeof(float));

        cv::Mat m_object(objectDescriptors->total, length, CV_32F);
        cv::Mat m_image(imageDescriptors->total, length, CV_32F);

        // copy descriptors
        CvSeqReader obj_reader;
        float* obj_ptr = m_object.ptr<float>(0);
        cvStartReadSeq( objectDescriptors, &obj_reader );
        for(int i = 0; i < objectDescriptors->total; i++ )
        {
                const float* descriptor = (const float*)obj_reader.ptr;
                CV_NEXT_SEQ_ELEM( obj_reader.seq->elem_size, obj_reader );
                memcpy(obj_ptr, descriptor, length*sizeof(float));
                obj_ptr += length;
        }
        CvSeqReader img_reader;
        float* img_ptr = m_image.ptr<float>(0);
        cvStartReadSeq( imageDescriptors, &img_reader );
        for(int i = 0; i < imageDescriptors->total; i++ )
        {
                const float* descriptor = (const float*)img_reader.ptr;
                CV_NEXT_SEQ_ELEM( img_reader.seq->elem_size, img_reader );
                memcpy(img_ptr, descriptor, length*sizeof(float));
                img_ptr += length;
        }
       // find nearest neighbors using FLANN
       cv::Mat m_indices(objectDescriptors->total, 2, CV_32S);
       cv::Mat m_dists(objectDescriptors->total, 2, CV_32F);
       cv::flann::Index flann_index(m_image, cv::flann::KDTreeIndexParams(4));  // using 4 randomized kdtrees
       flann_index.knnSearch(m_object, m_indices, m_dists, 2, cv::flann::SearchParams(64) ); // maximum number of leafs checked
       int* indices_ptr = m_indices.ptr<int>(0);
       float* dists_ptr = m_dists.ptr<float>(0);
       for (int i=0;i<m_indices.rows;++i)
       {
                if (dists_ptr[2*i]<0.6*dists_ptr[2*i+1])
                {
                        ptpairs.push_back(i);
                        ptpairs.push_back(indices_ptr[2*i]);
                }
       }
}

// Remapping 1st image on 2nd 
int remapping(IplImage *img1, IplImage *img2, IplImage **result)
{
        // features points
        CvSeq *keyPoints1, *keyPoints2;
        CvSeq *desPoints1, *desPoints2;
        // for cvExtractSURF
        CvMemStorage *storage = cvCreateMemStorage();
        CvSURFParams params = cvSURFParams(500,1);

        std::vector<int> ptPairs;

        std::cout << "Remapping...\n";


        cvExtractSURF(img1, 0, &keyPoints1, &desPoints1, storage, params); 
        cvExtractSURF(img2, 0, &keyPoints2, &desPoints2, storage, params); 

        flannFindPairs(keyPoints1, desPoints1, keyPoints2, desPoints2, ptPairs);
        
        int n = (int)(ptPairs.size()/2);
        if (n < 4) return 0;

        std::vector<CvPoint2D32f> pt1, pt2;   
        pt1.resize(n);  pt2.resize(n);

        for(int j = 0; j < n; ++j) {
                pt1[j] = ((CvSURFPoint*)cvGetSeqElem(keyPoints1,ptPairs[j*2]))->pt;
                pt2[j] = ((CvSURFPoint*)cvGetSeqElem(keyPoints2,ptPairs[j*2+1]))->pt;
        }

        srcPoints = cv::Mat(1, n, CV_32FC2, &pt1[0]);
        disPoints = cv::Mat(1, n, CV_32FC2, &pt2[0]);
        // Calculating matrix of homography
        H = cv::findHomography(srcPoints, disPoints, CV_RANSAC, 5);

        std::cout << "Perspective transformation H between two images:\n";
      //    std::cout << "H = \n" << H << "\n";

        int maxX, maxY, minX, minY;
        int maxX2, maxY2, minX2, minY2;
        // Define image's size
        ImageSizePoint(img1, &H, &minX, &minY, &maxX, &maxY);
          std::cout << " 1 = \n" ;
        ImageSizePoint(img2, 0, &minX2, &minY2, &maxX2, &maxY2);
          std::cout << " 2 = \n" ;
        // Select the most minimal
        minX = std::min(minX, minX2); minY = std::min(minY, minY2);
        // if the image is out of the window border             // the move images
        if (minX < 0) minX = std::abs(minX);
        else    minX = 0;
        if (minY < 0) minY = std::abs(minY);
        else    minY = 0;
        globalMaxX = std::max(maxX, maxX2);
        globalMaxY = std::max(maxY, maxY2);
        // Create final image 
                 std::cout << " 3 = \n" ;
 
        *result = cvCreateImage(cvSize(  std::max(maxX,maxX2) + minX,
                                        std::max(maxY,maxY2) + minY)
                                        ,img2->depth,img2->nChannels);

                                                 std::cout << " 4 = \n" ;
 
        // H^(-1)
        H=H.inv();

        CvScalar s;
        // Display original 2nd image
        for (int i = 0; i < img2->height; ++i)
                for (int j = 0; j < img2->width; ++j)
                {
                        s = cvGet2D(img2, i, j);
                        cvSet2D(*result, i+minY, j+minX, s);
                }

        vector<double> x;
        // Remapping 1st image
        for (int i = -minY; i < ((*result)->height - minY); ++i)
                for (int j = -minX; j < ((*result)->width - minX); ++j)
                {
                        // Compute point's coordinates at remapping image
                        // x = H^(-1)*x'
                        x = matrixMultiplication(&H, j, i);

                        // If does computed point exists at 1st image
                        // note: x(0)=j' x(1)=i'
                        if (    x(1)>=0 && x(1)<img1->height &&
                                x(0)>=0 && x(0)<img1->width)
                        {
                                s = cvGet2D(img1, x(1), x(0));
                                cvSet2D(*result, i+minY, j+minX, s);
                        }
                }
//      cvNamedWindow("win");
//      cvShowImage("win", result);
        return 0;
}


int main(int argc, char *argv[])
{
        if (argc < 3) return -1;
        int  compression = 100;             //

        for (int i = 1; i < argc; ++i) {
                cvNamedWindow(argv[i]);
                images.push_back(cvLoadImage(argv[i]));
                cvShowImage(argv[i], images.at(i-1));
        }

        cv::initModule_nonfree();
        IplImage *result;
        
        std::cout << "Make a panorama from images:\n";
        for (int i = 0; i < images.size() - 1; ++i)
        {
                if (i > 0) images.at(i) = result;
                remapping(images.at(i), images.at(i+1), &result);
        }

        cvNamedWindow("win");
        cvShowImage("win", result);
        
        cvWaitKey();
      	  cvSaveImage(".ready.jpg", result, &compression);

        for (int i = 0; i < images.size(); ++i)
                cvReleaseImage(&images.at(i));
      
        cvReleaseImage(&result);
        cvDestroyAllWindows();

        return 0;
}




...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / openCV + link.exe + msvcp100d.dll + msvcr100d.dll +
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]