導航:首頁 > 源碼編譯 > 正式編譯cv文件

正式編譯cv文件

發布時間:2022-04-19 07:31:48

① openCV編譯時遇到問題,請前輩們幫忙指點一下

這是因為圖像參數類型不同的緣故,opencv無法直接從iplimage向mat轉換,需要函數進行轉換。比如:
IplImage * ipl = ...;
cv::Mat m = cv::cvarrToMat(ipl);

供參考

② 如何編譯 opencv動態鏈接庫

在一個項目中需要用到OpenCV,剛開始使用了OpenCV的動態鏈接庫,這樣,在移動可執行程序時還必須將OpenCV動態支持庫一起搬移,很是麻煩。所以,最終選擇OpenCV靜態鏈接庫,這樣程序移植運行就方便了很多。

需要編譯成靜態庫以便於應用程序鏈接。

網上有的教程中寫的在VC++2010下安裝OpenCV2.1時用到了TBB庫,而我在編譯鏈接自己的程序後需要用到TBB.dll。本人設計的目的就是要做一個獨立的界面程序,不需要攜帶其他第三方庫。經過一段時間的努力最終找到了編譯OpenCV2.1靜態庫的方法。

需要的工具環境及文件:

-------------------------------------------------------------------------------------------------------------

1、Windows XP

2、VC++2010(VS2010)

3、為編譯OpenCV源碼包(我下載的有:OpenCV2.1.0,OpenCV2.3.0及OpenCV2.4.4)

4、CMake2.8.9

說明:OpenCV各版本官方下載地址:opencv.org/

cmake-2.8.9下載地址:ishare.iask.sina.com.cn/download/explain.php?fileid=35025936

--------------------------------------------------------------------------------------------------------------

以OpenCV2.1.0編譯靜態庫為例

CMake配置

-------------------------------------------------------------------------------------------------------------

打開CMake並設置:

Where is the rource code :OpenCV源代碼所在的文件夾

Where to build the binaries:CMake配置好得到的文件放在位置(我的:E:\OpenCV2.1.0-prj)

然後點擊configure,選擇"Visual Studio 10"。然後確定。

等待configure完成,會出現很多紅色的選項,因為主要是生成OpenCV的庫,所以只需保留某些選項:

去掉BUILD_NEW_PYTHON_SUPPORT,BUILD_SHARED_LIBS, BUILD_TESTS

勾選OPENCV_BUILD_3RDPARTY_LIBS, WITH_TBB,WITH_JASPER, WITH_JPEG,
WITH_PNG, WITH_TIFF選項,

然後再點擊configure,如下圖:

提示TBB_INCLUDE_DIR找不到,因為我們不需要TBB庫,所以忽略,再一次點擊configure。

等待配置完成,最後點擊generate,完成後關閉CMake。

-------------------------------------------------------------------------------------------------------------

VC++2010編譯靜態庫

-------------------------------------------------------------------------------------------------------------
進入E:\OpenCV2.1.0-prj目錄,使用VC++2010打開.sln文件,打開項目管理器

這時候會看到

解決方案中有很多小項目存在。

註:這時我們右鍵任意點擊一個子項目(如cv),選擇屬性,可以在配置屬性下的常規項目中看到,配置類型為
靜態庫(lib)。

按住ctrl鍵,選中除過ALL_BUILD, INSTALL, ZERO_CHECK,
uninstall四個項目的其他所有項目,在菜單中選擇項目->屬性,打開配置屬性->c/c++->代碼生成選項,在右側窗口中的運行時庫中選擇多線程調試(/MTd),然後確認。

說明:這里有四個選項(/MT, /MTd, /MD,
/MDd),前兩個一組,為靜態鏈接運行時庫,運行時不需要運行時庫的支持,代碼直接插入到程序中去;後兩個一組,為動態鏈接運行時庫,運行時需要msvcr90.dll或msvcp90.dll支持。

我們先編譯Debug版的OpenCV靜態庫,在解決方案"opencv"(22個項目)上單擊右鍵,選擇重新生成解決方案,此時便開始編譯OpenCV庫了,等編譯結束會提示完成16個,失敗4個:

這四個項目生成的是exe程序,不需要管他們。到這步我們已經生成了Debug版本的靜態庫!

然後我們用相同的方式生成Release版的庫,在之前的基礎上只需要將選項選擇多線程/MT,再進行編譯。編譯時警告很多,直接忽略!

注意:/MT即是Release版本,/MTD即是Debug版本。

最終我們需要的靜態庫就存在:E:\OpenCV2.1.0-prj/lib 和 E:\OpenCV2.1.0-prj/3rdparty/lib
兩個目錄,我們編譯好的庫就在這兩個文件夾下。分別

將E:\OpenCV2.1.0-prj/3rdparty/lib中Debug
下面的所有文件Copy到E:\OpenCV2.1.0-prj/lib中的Debug 文件中。

將E:\OpenCV2.1.0-prj/3rdparty/lib中Release下面的所有文件Copy到E:\OpenCV2.1.0-prj/lib中的Release文件中。

③ OpenCV編譯中出現的問題

你這里大小寫的問題都有,給你個調好的程序吧
#include "stdafx.h"
#include "highgui.h"

void main()
{
IplImage* img=cvLoadImage("lena.jpg",1);
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
cvShowImage("Example1",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
}

④ 如何用vs2015編譯opencv2

打開VS2015選擇文件,然後新建項目,選擇新建一個Win32控制台應用程序,並選擇空項目

在源文件中添加一個名為opencvdemo的CPP文件

在該cpp文件中輸入一下代碼
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main() {
string imageName("C:\\Users\\lidabao\\Desktop\\Lena.bmp"); // 圖片在電腦中的絕對地址
Mat image;//Mat是OpenCV最基本的數據結構,這是定義一個圖像矩陣類型
image = imread(imageName.c_str(), IMREAD_COLOR);//讀入圖片數據
if (image.empty())//讀取失敗時
{
cout << "Could not open or find the image" << std::endl;
return -1;
}
namedWindow("Display window", WINDOW_AUTOSIZE); // 創建一個窗口
imshow("Display window", image); // 在窗口中顯示圖片
waitKey(0); // 等待一次按鍵,程序結束
return 0;
}`
點擊視圖按鈕,選擇解決方案資源管理器 ,在解決方案中右鍵單擊項目名稱,然後選擇屬性

在屬性頁中選擇VC++目錄
在包含目錄中添加 D:\opencv\build\include D:\opencv\build\include\opencv D:\opencv\build\include\opencv2 這三個文件夾 在庫目錄中添加 D:\opencv\build\x64\vc12\lib D:\opencv\build\x64\vc12\staticlib 這兩個文件夾

在屬性頁中選擇鏈接器,在鏈接器中點擊輸入,在附加依賴項中添加 opencv_ts300d.lib opencv_world300d.lib 這兩個東西

如果執行失敗則在如圖中的×86改為×64

8
程序運行結果

⑤ opencv找不到頭文件cv.h

為項目的Debug配置增加依賴的庫:cxcore200d.lib cv200d.lib highgui200d.lib(注意,文件名cv200d.lib 可能是cv***d.lib等形式,具體應查看D:\Program Files\OpenCV2.0\vc2008\lib )
為項目的Release配置增加依賴的庫:cxcore200.lib cv200.lib highgui200.lib
配置時發現cxcore200d.lib cv200d.lib highgui200d.lib 這幾個庫是沒有的。
通過官網的啟發。於是加入一下這幾個庫。同理,在release中,也加入相應的庫。
C:\Program Files\OpenCV2.2\lib\opencv_core220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_highgui220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_video220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_ml220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_legacy220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_imgproc220d.lib
編譯之後,提示 #include "highgui.h"這個找不到
接著對於給出代碼的頭文件進行改進。
將這個 變成:
#include "opencv2/highgui/highgui_c.h"
#include "opencv2/highgui/highgui.hpp"

⑥ cmake編譯opencv程序的時候怎麼靜態編譯

使用opencv需要編譯源碼,得到庫文件。可以用cmake構建項目後編譯,也可以直接用官方提供的編譯好的版本。 官方提供的編譯庫一般只是標准版本,沒有附加某些庫,比如tbb等,要想讓opencv使用tbb等庫,就只能自己構建項目後編譯。

⑦ 怎麼使用emcv程序包中的cv源文件編譯生成失敗

1, PCH文件 預編譯頭文件(一般擴展名為.PCH),是把一個工程中較穩定的代碼預先編譯好放在一個文件(.PCH)里.這些預先編譯好的代碼可以是任何的C/C++代碼--甚至可以是inline函數,只它們在整個工程中是較為穩定的,即在工程開發過程中不會經常

⑧ 什麼是cv文檔

cv是curriculum vitae的縮寫

curriculum vitae :簡歷(書), 個人履歷

"請上傳cv文檔"也就是讓你上傳個人履歷的文檔,一般是word文檔

linux 下 opencv程序怎麼編譯

運行了樓上給的命令之後,結果是這樣的:
# g++ `pkg-config opencv --libs --cflags opencv` facedect.cpp -o facedect -static
/tmp/cc8XhRf6.o: In function `find_face(_IplImage*)':
facedect.cpp:(.text+0x51): undefined reference to `cvCreateImage'
facedect.cpp:(.text+0xc0): undefined reference to `cvCreateImage'
facedect.cpp:(.text+0xdd): undefined reference to `cvCvtColor'
facedect.cpp:(.text+0xf7): undefined reference to `cvResize'
facedect.cpp:(.text+0x109): undefined reference to `cvEqualizeHist'
facedect.cpp:(.text+0x116): undefined reference to `cvClearMemStorage'
facedect.cpp:(.text+0x188): undefined reference to `cvHaarDetectObjects'
facedect.cpp:(.text+0x1c6): undefined reference to `cvReleaseImage'
facedect.cpp:(.text+0x1d1): undefined reference to `cvReleaseImage'
/tmp/cc8XhRf6.o: In function `isperson(char const*)':
facedect.cpp:(.text+0x21e): undefined reference to `cvLoad'
facedect.cpp:(.text+0x22f): undefined reference to `cvCreateMemStorage'
facedect.cpp:(.text+0x25a): undefined reference to `cvLoadImage'
facedect.cpp:(.text+0x27d): undefined reference to `cvReleaseImage'
facedect.cpp:(.text+0x289): undefined reference to `cvDestroyWindow'
collect2: ld returned 1 exit status

閱讀全文

與正式編譯cv文件相關的資料

熱點內容
useradd命令linux 瀏覽:577
語言編程源碼分析 瀏覽:276
溫10怎麼設計加密文件 瀏覽:452
python源碼保護資料庫密碼 瀏覽:992
組織伺服器是什麼玩意 瀏覽:453
linux啟動失敗的原因 瀏覽:179
百度演算法面試 瀏覽:926
谷歌框架伺服器地址 瀏覽:380
女程序員藍天白雲 瀏覽:832
鋼鐵命令解說 瀏覽:254
什麼購物app是正品 瀏覽:480
安卓系統斷網怎麼回事 瀏覽:458
黑馬程序員第9章 瀏覽:705
汽車編程所用的函數 瀏覽:453
雲管理伺服器如何注冊 瀏覽:210
linux下重啟網卡 瀏覽:120
樂橙怎麼加密 瀏覽:264
幸識是個什麼樣的app 瀏覽:54
程序員直男認口紅 瀏覽:37
雕刻機的編程點怎麼算 瀏覽:643