1. 程式人生 > >在win10下給vs2013配置opencv3.0

在win10下給vs2013配置opencv3.0

clu 程序 系統變量 依賴 http idt eight PE load

opencv這玩意是真難搞呀。

先吐槽下。。。。。

下面進入正文。

1準備工具:

opencv3.0+vs2013

這裏面不提供鏈接下載,自行谷歌百度。

2配置環境:

a.打開下載好的opencv(解壓過程)

記住你安裝/解壓的目錄例如我的就是

技術分享圖片

b.打開環境變量設置

右擊我的電腦-》屬性-》高級系統設置-》環境變量

技術分享圖片

-》系統變量下的path

技術分享圖片

-》雙擊path/編輯path

技術分享圖片

-》添加opencv的路徑G:\OpenCv3.0\opencv\build\x64\vc12\bin和$(OPENCV)\x86\vc12\lib(解釋下後面為什麽是美元符,由於前面加了G:\OpenCv3.0\的路徑所以後面可以直接加上其相對路徑)

確認好了後就配置成功了。

3建立配置文件模板:

a.首先打開vs2013-》新建項目-》新建win32控制臺應用程序

技術分享圖片

這裏取名為test

技術分享圖片

記得點上空項目-》完成

b.新建項目

技術分享圖片

-》添加項目-》添加c++文件

技術分享圖片

這裏名稱隨便取

c然後點擊視圖-》其他窗口-》屬性管理器

技術分享圖片

d右擊Debug|Win32,添加新項目屬性表

技術分享圖片

取名opencv_debug

技術分享圖片

添加後進行對文件的配置,雙擊新建的屬性表-》點擊VC++目錄

技術分享圖片

點擊包含目錄在裏面添加"G:\OpenCV3.0\opencv\build\include\opencv","G:\OpenCV3.0\opencv\build\include\opencv2"和"G:\OpenCV3.0\opencv\build\include"

技術分享圖片

點擊庫目錄在裏面添加"G:\OpenCV3.0\opencv\build\x64\vc12\lib","G:\OpenCV3.0\opencv\build\x86\vc12\lib","G:\OpenCV3.0\opencv\build\x64\vc12\staticlib"和"G:\OpenCV3.0\opencv\build\x86\vc12\staticlib"

ps:這裏添加x86是為了提高程序的兼容性。

技術分享圖片

點擊鏈接器-》輸入-》附加依賴項,在依賴項中添加opencv_ts300d.lib和opencv_world300d.lib

技術分享圖片

Release的屬性表的差異就在依賴項:在依賴項中添加opencv_ts300.lib和opencv_world300.lib

技術分享圖片

保存即可

4測試

測試代碼:

#include <core/core.hpp>
#include <highgui/highgui.hpp>
#include <math.h>
#include<iostream>
using namespace cv;
using namespace std;
void expone(char *imagesrc){//Ip1Image的方式讀取,課本源碼
CvPoint center;
double scale = -3;
IplImage* image = cvLoadImage(imagesrc);
if (!image) return;
center = cvPoint(image->width / 2, image->height / 2);
for (int i = 0; i<image->height; i++)
for (int j = 0; j<image->width; j++) {
double dx = (double)(j - center.x) / center.x;
double dy = (double)(i - center.y) / center.y;
double weight = exp((dx*dx + dy*dy)*scale);
uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
ptr[0] = cvRound(ptr[0] * weight);
ptr[1] = cvRound(ptr[1] * weight);
ptr[2] = cvRound(ptr[2] * weight);
}
cvSaveImage("copy.png", image);
cvNamedWindow("test", 1);
cvShowImage("test", image);
cvWaitKey();
}
void exptwo(char *imagesrc){//Mat方式進行讀取
Mat image = imread(imagesrc);
if (!image.data)return;
double scale = -3;
CvPoint center = cvPoint(image.rows / 2, image.cols / 2);
for (int i = 0; i < image.cols; i++){
for (int j = 0; j < image.rows; j++){
double dx = (double)(j - center.x) / center.x;
double dy = (double)(i - center.y) / center.y;
double weight = exp((dx*dx + dy*dy)*scale);
for (int k = 0; k < 3; k++){
image.at<Vec3b>(j, i)[k] *= weight;//特別註意要從每行開始讀取否則會出現錯誤
}
}
}
imwrite("mate.png", image);
//namedWindow("boy", 1);*/
imshow("girl", image);
waitKey();
}
int main(){
char *imagesrc = "../test.png";//相對路徑
int ch = 0;
///簡陋菜單///
do{
cout << "1.IplImage方式顯示" << endl;
cout << "2.Mat方式顯示" << endl;
cout << "0.退出" << endl;
cin >> ch;
switch (ch)
{
case 1:expone(imagesrc); break;
case 2:exptwo(imagesrc); break;
}
} while (ch!=0);
return 0;
}

技術分享圖片

測試成功^.^

後面其他項目的話可以直接添加現有屬性表進行配置

技術分享圖片

在win10下給vs2013配置opencv3.0