1. 程式人生 > >我的畢設-基於OpenCV的圖像車牌識別(I)

我的畢設-基於OpenCV的圖像車牌識別(I)

應該 details 計算 inpu eight 切換 named path變量 pen

由於大三以來一直在學路由交換和Linux方面,所以Coding能力大幅下降,加上畢設老師指定了一個完全不會的題目,恍如晴天霹靂,硬著頭皮接下了任務,查閱了相關資料以後暫定使用OpenCV+VS2013來完成這個畢設,苦於C++在校根本沒學_(:з」∠)_,又是霸王硬上弓,本篇文章可能顯得十分小白,請諒解

本隨筆隨著完成進度的更新而更新

一:環境

Win10+VS2013+OpenCV 3.0

二:下載與安裝

OpenCV 3.0下載地址:https://opencv.org/releases.html

(由於網上大部分關於OpenCV配置大多數是2.4.1和3.0了,所以查資料的時候為了避免沒必要的問題我配置的環境還是OpenCV3.0)

VS自己網上找吧,激活碼一大把_(:з」∠)_

三: 配置環境變量

之前配置過JAVA的應該都知道需要配置環境變量

新增環境變量:OpenCV 地址為你將OpenCV解壓的地址:

技術分享圖片

配置PATH環境變量,在PATH中加入:

%OPENCV%\x86\vc12\bin

%OPENCV%\x64\vc12\bin

為了適應Win32和x64平臺之間的切換,所以同時添加了兩個bin目錄(然而我在使用X64測試的時候出現了BUG,問題之後說)

技術分享圖片

註:環境變量不生效請重啟

(註:此處配置方法有多種,由於配置反復不成功因此最後成功時倆種方法都有涉及,但本質上只需要配置一種即可,在下面將倆種方法都列出,可以都看看)

OpenCV配置文件opencv300.props
新建一個後綴為.props的屬性文件,然後將下面的配置代碼復制進去

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup
> <IncludePath>$(OPENCV)\include;$(OPENCV)\include\opencv;$(OPENCV)\include\opencv2;$(IncludePath)</IncludePath> <LibraryPath Condition="‘$(Platform)‘==‘Win32‘">$(OPENCV)\x86\vc12\lib;$(LibraryPath)</LibraryPath> <LibraryPath Condition="‘$(Platform)‘==‘x64‘">$(OPENCV)\x64\vc12\lib;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup> <Link Condition="‘$(Configuration)‘==‘Debug‘"> <AdditionalDependencies>opencv_ts300d.lib;opencv_world300d.lib;%(AdditionalDependencies)</AdditionalDependencies> <AddtionalLibraryDirectories>%(AddtionalLibraryDirectories)</AddtionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup> <Link Condition="‘$(Configuration)‘==‘Release‘"> <AdditionalDependencies>opencv_ts300.lib;opencv_world300.lib;%(AdditionalDependencies)</AdditionalDependencies> <AddtionalLibraryDirectories>%(AddtionalLibraryDirectories)</AddtionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>

之後進入VS2013 選擇Win32控制臺應用程序,並且之後選擇空白工程

之後 視圖-其他窗口-屬性管理器 將上面的屬性表給添加上去

技術分享圖片

之後新建一個main.cpp工程,測試是否成功

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{

    Mat image;
    char* location = "C:/Users/Yeung/Desktop/QQ圖片20171226163741.jpg";
    //這裏的路徑也可以使用相對路徑,若使用相對路徑,test.jpg文件應該放在main.cpp所在文件夾下
    image = imread(location, IMREAD_COLOR); // Read the file
    if (!image.data) // Check for invalid input
    {
        cout << "Could not open or find the image" << std::endl;
        system("pause");
        return -1;
    }

    namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.
    imshow("Display window", image); // Show our image inside it.

    waitKey(0); // Wait for a keystroke in the window
    system("pause");
    return 0;
}

如果配置成功下面就不用看了。。。。

成功界面:

技術分享圖片

我是在這裏報了 遠程調試監視器(MSVSMON.EXE)似乎沒有在遠程計算機上運行這個錯誤,關閉防火墻以後錯誤消失

_______________________________________

如果還是沒有成功,可以嘗試以下操作:

技術分享圖片

VC++目錄,包含目錄:

添加:

技術分享圖片

D:\opencv3.0\opencv\build\include\opencv2
D:\opencv3.0\opencv\build\include\opencv
D:\opencv3.0\opencv\build\include

添加你自己opencv3.0相對應的opencv2,opencv,include文件路徑

庫目錄:

技術分享圖片

D:\opencv3.0\opencv\build\x64\vc12\staticlib
D:\opencv3.0\opencv\build\x64\vc12\lib

添加你自己opencv3.0相對應的lib文件路徑

鏈接器,輸入,附加依賴項添加:

技術分享圖片

opencv_world300.lib
opencv_world300d.lib

之後再運行應該是能正常運行了

這裏算是將OpenCV在VS當中配置成功

沒有解決的問題:

X64位運行的時候會報錯,Win32正常運行,網上查閱沒有解決

參考鏈接:

http://blog.csdn.net/desti5/article/details/39012343

http://blog.csdn.net/u010009145/article/details/50756751

圖像識別相關鏈接:

《Mastering Opencv ...讀書筆記系列》車牌識別(I)
http://blog.csdn.net/jinshengtao/article/details/17883075

《Mastering Opencv ...讀書筆記系列》車牌識別(II)
http://blog.csdn.net/jinshengtao/article/details/17954427

我的畢設-基於OpenCV的圖像車牌識別(I)