主頁 >  其他 > ubuntu入門---從配置虛擬機到使用qtcreator運行opencv3.4(C++)

ubuntu入門---從配置虛擬機到使用qtcreator運行opencv3.4(C++)

2021-12-07 08:46:43 其他

文章目錄

  • 前言
  • 一、使用VMware安裝ubuntu16.04
  • 二、LINUX基本指令
    • 1.LINUX簡單介紹
    • 2.基本指令
  • 三、配置GCC
    • 1.GCC簡介
    • 2.安裝GCC
    • 3.安裝并不同的GCC版本
    • 4.GCC基本命令
  • 四、配置qtcreator
    • 1.為什么選擇qtcreator
    • 2.安裝qtcreator
    • 3.使用qtcreator配置C++運行環境
  • 五、配置Opencv
    • 1.下載opencv
    • 2.安裝opencv
    • 3.測驗
  • 六、使用QTcreator運行opencv程式
  • 碎碎念


前言

在日常的學習生活中,我們難免會碰到一些特定的需求,比如在ubuntu16.04中使用qtcreator運行Opencv程式之類,因此,在本片文章中,會一步一步教讀者從配置虛擬機,安裝ubuntu16.04系統,學習linux一些基礎指令,安裝GCC和qtcreator以及配置opencv的環境,同時拓展其中的部分知識點,
作為涵蓋了較多內容的一篇教程,很難做到所有內容均為原創,一些地方會直接參考其他人的教程,或者直接給出鏈接,讀者可以根據目錄檢索自己需要的內容,

一、使用VMware安裝ubuntu16.04

因為前人的教程已經相當完善,這里直接貼出鏈接,根據自己下載的軟體版本進行微調,
VMware虛擬機安裝Ubuntu16-18系統超詳細程序(含下載地址)

二、LINUX基本指令

1.LINUX簡單介紹

Linux是指一種計算機作業系統:Linux也可指作業系統的內核,實際應用上人們已經習慣了用Linux來形容整個基于Linux內核,并且搭載了各種人機界面,應用和服務軟體的作業系統,基于這些組件的Linux軟體被稱為Linux發行版,
而Ubuntu是Linux的一個分支發行套件,繼承了LINUX系統的所有優點:開源、免費、自由、安全,并且具有出色的圖形化界面,適合學習linux系統和開發linux應用程式,

2.基本指令

一、檔案/檔案夾管理

ls 列出當前目錄檔案(不包括隱含檔案)
ls -a 列出當前目錄檔案(包括隱含檔案)
ls -l 列出當前目錄下檔案的詳細資訊

cd … 回當前目錄的上一級目錄
cd - 回上一次所在的目錄
cd ~ 或 cd 回當前用戶的宿主目錄
mkdir 目錄名 創建一個目錄
rmdir 空目錄名 洗掉一個空目錄
rm 檔案名 檔案名 洗掉一個檔案或多個檔案
rm -rf 非空目錄名 洗掉一個非空目錄下的一切

mv 路經/檔案 /經/檔案移動相對路經下的檔案到絕對路經下
mv 檔案名 新名稱 在當前目錄下改名
find 路經 -name “字串” 查找路經所在范圍內滿足字串匹配的檔案和目錄

二、系統管理

fdisk fdisk -l 查看系統磁區資訊
fdisk fdisk /dev/sdb 為一塊新的SCSI硬碟進行磁區
chown chown root /home 把/home的屬主改成root用戶
chgrp chgrp root /home 把/home的屬組改成root組

Useradd 創建一個新的用戶
Groupadd 組名 創建一個新的組
uname -a 查看內核版本
cat /etc/issue 查看ubuntu版本
lsusb 查看usb設備
sudo ethtool eth0 查看網卡狀態
cat /proc/cpuinfo 查看cpu資訊
lshw 查看當前硬體資訊
sudo fdisk -l 查看磁盤資訊
df -h 查看硬碟剩余空間
free -m 查看當前的記憶體使用情況
ps -A 查看當前有哪些行程
kill 行程號(就是ps -A中的第一列的數字)或者 killall 行程名( 殺死一個行程)
kill -9 行程號 強制殺死一個行程

reboot Init 6 重啟LINUX系統
Halt Init 0 Shutdown –h now 關閉LINUX系統

三、打包/解壓

tar -c 創建包 –x 釋放包 -v 顯示命令程序 –z 代表壓縮包
tar –cvf benet.tar /home/benet 把/home/benet目錄打包
tar –zcvf benet.tar.gz /mnt 把目錄打包并壓縮
tar –zxvf benet.tar.gz 壓縮包的檔案解壓恢復
tar –jxvf benet.tar.bz2 解壓縮

四、make編譯

make 編譯
make install 安裝編譯好的原始碼包

以上為linux系統命令的基本內容,更多的請上網了解

三、配置GCC

為了得到良好的安裝體驗,國內的讀者建議在ubuntu上安裝任何軟體前先將軟體的下載源切換為國內的清華源或者阿里源,

1.GCC簡介

參考文章:淺顯易懂的GCC使用教程——初級篇

GCC(GNU Compiler Collection)即GNU編譯器套件,屬于一種編程語言編譯器,其原名為GCC(GNU C Compiler)即GNU c語言編譯器,雖然縮寫一樣但是功能上區別很大,GCC的初衷是為GNU作業系統專門撰寫的一款編譯器,原本的GNU是專用于編譯C代碼,現如今已擴展為可以編譯C、C++、Java、Objective-C等多種編程語言的編譯器集合了,這里主要介紹gcc或g++的使用,

gcc(GUN C Compiler)是GCC中的c編譯器,而g++(GUN C++ Compiler)是GCC中的c++編譯器,
gcc和g++兩者都可以編譯c和cpp檔案,但存在差異,gcc在編譯cpp時語法按照c來編譯但默認不能鏈接到c++的庫(gcc默認鏈接c庫,g++默認鏈接c++庫),g++編譯.c和.cpp檔案都統一按cpp的語法規則來編譯,所以一般編譯c用gcc,編譯c++用g++,

2.安裝GCC

首先,這里使用的ubuntu16.04中是自帶GCC的,可以使用gcc --version查看當前gcc的版本,
可以看到當前gcc的版本為5,.4.0
如果當前系統沒有gcc的話,可以使用以下的方法安裝:

默認的Ubuntu存盤庫包含一個名為build-essential的元包,它包含GCC編譯器以及編譯軟體所需的許多庫和其他實用程式,這意味著,安裝了build-essential同時也就是安裝gcc和g++編譯器,

1.首先輸入 sudo apt update更新包串列,
這里對這條指令作出簡單的決議:
這句我們可以拆成三部分,sudo,apt,update
在ubuntu 系統下,sudo為“superuser do”的縮寫,其主要功能就是提權,因為后方的apt update需要root權限也就是系統中最高的權限運行,apt會在普通用戶無法操作的目錄進行作業,所以需要大哥來干活(指root用戶,
apt的全稱為Advanced Package Tool,高級包工具,也可以說是是一個應用管理工具,類似于你電腦上安裝的金山軟體,騰訊應用中心,360軟體中心這類,
區別就是,金山這類軟體的軟體串列是你進入軟體中心的時候,實時從金山服務拉取串列,而apt是本地存了一份軟體包資訊的串列,比如軟體大小,版本號,依賴等,
update 則是你要求apt干的活,這里你要求apt從源拉取最新的軟體表來更新保存在本地的軟體資訊表,如果不更新,可能你安裝的軟體的時候安裝成了老版本,

在這里插入圖片描述
順帶一提,第一次使用sudo命令的時候他會要求你輸入密碼,此時你輸入的密碼是不可見的,直到按下回車,你才能直到自己輸入的密碼正確不正確,

2.鍵入以下命令安裝build-essential軟體包:

sudo apt install build-essential

install指令會安裝指定的包,并同時安裝其依賴的其他包,這里就是安裝了build-essential包,
如果你的系統里沒有這個包的話,該命令將安裝一堆新包,包括gcc,g++和make,

這里簡單提一下依賴關系,Linux的依賴關系因為他的整個系統都是由各個不同的開發組開發的軟體集合而成,每個軟體都有不同的功能提供和呼叫,因此linux系統在運行一個軟體的時候,往往需要其他軟體模塊的協同才能成功運行,linux的靈活性就體現在其軟體包是可以靈活組成的,你需要使用什么模塊就有選擇的安裝什么模塊,而windows系統通常會將所有依賴關系一股腦全給你裝上,優點是不需要繁瑣的依賴配置,缺點就是整個系統的臃腫和龐大,

在這里插入圖片描述
這里因為已經是最新版了因此沒有安裝新的build-essential,

3.安裝并不同的GCC版本

有時候我們并不需要apt自動給我安裝的最新版本的gcc,此時我們就可以選擇舊版本的gcc進行安裝,
例如我們想要使用4.8版本的gcc和g++,可以鍵入如下指令

sudo apt-get install gcc-4.8 g++-4.8

在“您希望執行嗎”處輸入y,即可進行安裝,
在這里插入圖片描述
安裝結束后,此時我們輸入gcc --version 查看gcc的版本,發現還是最新的5.4
在這里插入圖片描述
要如何切換到我們想要的版本呢?輸入以下指令:

1.將某個版本加入gcc候選中
輸入以下指令,將gcc4.8版本加入gcc候選中,最后的數字是優先級,我自己是直接設為100:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100

同樣的我們也將原來系統中的gcc的優先級改成100,這樣我們就能在選擇完當前使用版本之后不會恢復默認優先級的版本,

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100

update-alternatives是Debian系統中專門維護系統命令鏈接符的工具,通過它可以很方便的設定系統默認使用哪個命令、哪個軟體版本,這個例子中的系統中同時安裝了gcc5和gcc4.8,我們通過update-alternatives可以很方便地實作管理,
指令詳情看這個網站update-alternatives詳解

2.通過下面的指令來選擇不同的gcc和g++的版本
輸入

sudo update-alternatives --config gcc

可以看到gcc指令鏈接上了兩個gcc的版本,當前默認為gcc-4.8,選擇你要切換的版本
在這里插入圖片描述
這里不進行切換,直接回車,
此時再輸入gcc --version,發現版本已經切換到gcc4.8了
在這里插入圖片描述
同樣的道理,你可以自由切換gcc和g++指令鏈接的版本,

4.GCC基本命令

這里以生成一個C語言的可執行檔案為例,并命名為hello.c存放在桌面,
源代碼:

#include<stdio.h>

int main(){
 	printf("hello world");
	return 0;
}

以此在桌面檔案夾下輸入如下指令

	gcc -E hello.c -o hello.i   # 頭檔案展開,宏替換,注釋去掉.
    gcc -S hello.i              # c檔案變成匯編檔案(生產hello.s).
    gcc -c hello.s              # 匯編檔案變成二進制檔案(生產hello.o).
    gcc hello.o -o hello        # 將函式庫中相應的代碼組合到目標檔案中.

注:與windows不同的是,linux的可執行檔案是沒有.exe后綴的,或者說,linux的檔案系統是沒有后綴這個概念的,大多時候加上后綴只是方便程式進行區分,

以上為生成一個可執行檔案的基本步驟,
除此以外,也可以輸入gcc hello.c -o hello一步到位,直接生成可執行檔案,

如果要運行可執行檔案,只需要進入當前檔案夾,輸入./hello 即可運行,

GCC命令基礎可參考以下鏈接或官方檔案GCC命令基礎

四、配置qtcreator

大多數時候,我們并不直接使用命令列對源檔案進行編譯,我們更希望借助IDE(集成開發環境)的輔助,以讓我更高效的進行編程,這里向大家推薦一款跨平臺的IDE:qtcreator,

1.為什么選擇qtcreator

因為好用,跨平臺,而且免費,

2.安裝qtcreator

如果只是將其作為一個C/C++開發環境的話,簡單粗暴的執行下面一條指令即可安裝:

sudo apt install qtcreator

這條指令會自動安裝安裝qtcreator所需要的依賴檔案
但如果要使用qt的的庫的話,還需要輸入以下指令安裝qt5的庫檔案:

sudo apt install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools

安裝完之后你就能在qtcreator上撰寫你想要的GUI應用程式了~

踩坑注意:

安裝完后,輸入qmake --version查看安裝是否成功
在這里插入圖片描述
很不幸,這里提示無法運行qmake,原因是在他所提供的路徑上找不到qmake命令的執行檔案,雖然現在你已經可以輸入qtcreator命令運行qtcreator了,但直覺(慘痛的教訓)告訴我們,這個問題不解決,以后可能會遇到令你痛苦一生的bug,

解決方法:
修改bashrc檔案中的環境變數
1.輸入gedit ~/.bashrc,用gedit文本編輯器打開bashrc檔案
2.在bashrc檔案的結尾加上export QT_SELECT=qt5,保存并關閉
3.輸入source ~/.bashrc重繪修改過的初始化檔案(重啟作業系統也是同樣的效果)
注:1.source 命令用于重繪初始化檔案,使用戶不必重啟也能更新他的組態檔,
2.~/表示用戶目錄,可以將其簡單的替換為/home/username/,
3.同windows系統一樣,LINUX系統也有環境組態檔,那就是.bashrc檔案,.bashrc檔案主要保存個人的一些個性化設定,如命令別名、路徑等,

還有另一種解決辦法可以參考qmake: could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’: No such file or directory
qmake這條命令通常安裝在/usr/lib/bin目錄下,把第一行替換即可,
再次輸入qmake -v ,我們的命令終于不迷路了,
在這里插入圖片描述

3.使用qtcreator配置C++運行環境

理論上在配置完上述環境后,qtcreator是可以直接投入使用的,但有時候會遇上Kit配置出現問題的情況,這里提供一種配置kit的步驟,供有問題的讀者參考,
首先點擊:工具–>選項,之后彈出選項界面,
在這里插入圖片描述
在選項界面找到 構建和運行中 的 編譯器 可以在這里更改編譯器路徑,通常如果你gcc是配置好的話,qtcreator會自動檢測到系統中的gcc(這里系統自動監測到了g++)檔案路徑并將其顯示出來,將其選定,點擊apply即可,
在這里插入圖片描述
有時候需要手動設定編譯器路徑,點擊右上角的添加,選擇系統安裝好的編譯器,比如GCC
在這里插入圖片描述
瀏覽目錄,找到你要使用的編譯器即可
在這里插入圖片描述
最后在構建套件那邊選擇你使用的編譯器即可,其他默認
在這里插入圖片描述

至此,你就可以愉快的撰寫C++程式了,

五、配置Opencv

參考文章:Ubuntu系統中安裝OpenCV 4
在ubuntu下配置opencv可能是新手最容易被勸退的環節了,其實多配幾次,重裝幾次系統,把每條指令搞明白,就會覺得配置環境也不過如此了,

在這部分,我會介紹如何在ubuntu16.04下配置安裝opencv3.4.14版本,配置其他版本的opencv方法大同小異,讀者可以根據自己的需要自行調整,

1.下載opencv

下載地址:opencv官網
點擊Sources進行下載自己需要的版本
在這里插入圖片描述

2.安裝opencv

2.1解壓
解壓后,將檔案夾放自己喜歡的地方,筆者這里就放在了自己的用戶目錄下(請無視掉其他檔案
在這里插入圖片描述

2.2安裝OpenCV需要的依賴項
由于最新版的OpenCV 4需要CMake 3.5.1版本,因此需要保證電腦中安裝的CMake編譯器版本高于3.5.1,
依次輸入如下命令

sudo apt update
sudo apt install build-essential cmake

OpenCV 的使用會需要很多的依賴項,例如圖片編碼庫、視頻編碼庫等,不過這些依賴是針對某些特定的功能,即使某些功能的依賴項沒有安裝,也不會影響OpenCV 的編譯與使用,只是在使用特定功能時會出現問題,因此在不確定某型功能以后會不會用到時,建議將常用的依賴都安裝上

sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev

PS:安裝依賴的時候別吝嗇你的記憶體空間,能敲的命令都敲一遍,系統里沒有的包會自動給你安裝上,安裝過的就不會再給你安裝,

2.3編譯和安裝Opencv
利用“Ctrl+Alt+T”組合按鍵喚起終端,通過終端進入到下載的OpenCV-3.4.14的檔案中,并創建名為“build”的檔案夾,之后進入該檔案夾中,準備進行編譯和安裝,

cd opencv-3.4.14
mkdir build
cd build

創建一個新的檔案夾的目的是為了接下來編譯的時候將編譯出的中間檔案都生成在這個新的檔案夾中,這樣做不會因為編譯程序中生成的檔案將原檔案夾中的內容變得混亂,這種方式在Ubuntu系統中非常常見,

接下來開始編譯作業

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.14 ..

命令中“CMAKE_BUILD_TYPE”是編譯的模式引數,“CMAKE_INSTALL_PREFIX”是安裝路徑引數,這些引數都可以預設,但是如果在安裝多個版本的OpenCV時,設定不同的安裝路徑將變得十分有必要,這里我將opencv設定安裝在了/usr/local/opencv3.4.14下,
第一行命令的最后一定不要忘記有一個“…”指令,其含義是告訴編譯器將要編譯的檔案是來自上一層檔案夾中的CMakeList.txt檔案,
報錯預警:筆者在編譯的程序中,卡在IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz這條提示上,
原因是這個檔案放在https://raw.githubusercontent.com上,國內下載速度極慢,很有可能下載失敗,
解決方法是手動在網上找到這個檔案將其下載,把他放到ubuntu系統下的你喜歡的檔案夾下,接下來修改如下所示的這個檔案

/home/username/opencv-3.4.14/3rdparty/ippicv/ippicv.cmake

找到"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
將其改為你你保存ippicv_2020_lnx_intel64_20191018_general.tgz檔案的路徑,由于我把這個檔案直接放在了用戶目錄下,因此修改成“/home/test”即可(這個test是我的用戶名).保存檔案后重新編譯,一氣呵成及其絲滑,

在這里插入圖片描述

編譯的程序中如果提示你缺少哪個庫檔案,你就去安裝哪個庫檔案,安裝的方法根據提示去百度尋找方法,

下一條命令是完成最終的編譯,“-j4”的意思是啟用4個執行緒同時進行編譯,可以根據自己計算機的性能自主選擇,例如,啟用8個執行緒“-j8”,只用單執行緒可以預設,

sudo make -j4

經過漫長的等待編譯完成后,輸入下一條指令將opencv安裝到上上條指令指定的路徑下

sudo make install

2.4環境配置
安裝OpenCV 之后還需要通過配置環境告訴系統安裝的OpenCV在哪里,按照如下步驟操作即可完成環境配置
首先執行這條指令,可能會打開一個空白的檔案,但是無論是否為空白檔案,都需要在末尾添加路徑“/usr/local/opencv3.4.14/lib”,這里添加內容與我們編譯時設定的路徑有關,如果安裝路徑變化,這里添加的內容也要隨之改變,

sudo gedit /etc/ld.so.conf.d/opencv.conf

保存檔案并退出后,使用sudo ldconfig命令將配置路徑生效,

接下來需要配置bash,在終端通過下面這條命令打開bash.bashrc檔案,

sudo gedit /etc/bash.bashrc

在打開的檔案末尾加上OpenCV的安裝路徑,代碼如下面所示:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv3.4.14/lib/pkgconfig
export PKG_CONFIG_PATH

這里需要重點說明的是,檔案路徑需要與設定的安裝路徑相對應,
另外, opencv4的版本取消使用了pkgconfig,在正常安裝途徑下你是找不到pkgconfig的,(這里被坑了好久)

保存輸入內容后,通過下面兩條命令更新系統的配置環境,最終完成了OpenCV 3.4.14的安裝,

source /etc/bash.bashrc
sudo updatedb

3.測驗

一個簡單的測驗方式是輸入pkg-config --modversion opencv來查看安裝的opencv的版本,如果安裝成功,則顯示你安裝的opencv的版本,
再次提醒,opencv4之后的版本取消使用了pkgconfig,輸入pkg-config相關的指令是不會有反映的,
在這里插入圖片描述

如果想確認真的安裝成功了,就得確認能否通程序式呼叫OpenCV 函式庫中的函式,
首先我們需要創建一個檔案夾,在檔案夾中創建 “CMakeLists.txt”檔案和“main.cpp”檔案兩個檔案,并在檔案夾中復制一張名為“apple.jpg”的圖片,在“CMakeLists.txt”檔案中內容如代碼所示,

cmake_minimum_required(VERSION 2.6)
#創建工程
project(testopencv)
#C++版本為11
set(CMAKE_CXX_FLAGS "-std=c++11")
set(OpenCV_DIR /home/teach/Desktop/opencv-3.4.14/build/) #手動設定OpenCV_DIR路徑
find_package(OpenCV REQUIRED) #找OpenCV 安裝路徑
include_directories(${OpenCV_INCLUDE_DIRS}) #加載OpenCV的頭檔案

add_executable(testopencv main.cpp) #將程式生成可執行檔案
target_link_libraries(testopencv ${OpenCV_LIBS}) #鏈接lib檔案到可執行檔案中

注意:1.由于OpenCV庫基于C++11標準撰寫,因此必須在“CMakeList.txt”檔案中宣告set(CMAKE_CXX_FLAGS “-std=c++11”)
2.如果opencv不是安裝在默認目錄,設定cmakelists就必須手動指定OpenCV_DIR的值,路徑為你建立的build檔案夾的路徑,參考文章:find_package()詳解

在“main.cpp”檔案中輸入程式如代碼所示,

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv; //宣告使用OpenCV的命名空間

int main(int agrc, char** agrv){
    Mat img=imread("apple.jpg");
    imshow("test",img);
    waitKey(0);
    return 0;
  }

在當前檔案夾下輸入以下兩條指令進行編譯

cmake .
make

如果沒有報錯那么恭喜你配置成功了,
看一眼編譯完成后的檔案夾
在這里插入圖片描述
輸入./testopencv 運行可執行檔案
圖片有點大但無傷大雅
顯示圖片成功,

六、使用QTcreator運行opencv程式

在安裝完qtcreator和opencv后,如果我們想要使用強大的IDE對程式進行撰寫和除錯,就得學會如何使用安裝好的qtcreator來運行opencv程式,
1.打開qtcreator
終端輸入qtcreator,回車即可打開qtcreator,
右鍵選單上的qt圖示,點擊鎖定到啟動器,下次啟動qtcreator就不用再輸命令了,
在這里插入圖片描述
2.創建新工程
在歡迎頁面點擊New Project
在這里插入圖片描述
選擇其他專案中的Empty qmake Project可以創建一個空的專案,
在這里插入圖片描述

創建完成后右鍵專案目錄添加一個源檔案
在這里插入圖片描述
3.配置pro檔案
雙擊進入pro檔案,可以看到pro檔案是整個專案的工程檔案,
在這里插入圖片描述

pro檔案用于控制qmake來生成makefile檔案,其中可以指定需要編譯的源檔案和頭檔案,匯入庫,編譯器選項和專案配置等等,通常這一切都是IDE幫我們自動生成的,但有時候我們需要進行一些特殊的設定,就得手動修改pro檔案,

網上的教程總是要求我們在pro檔案里加入大量的include和lib配置,實際上通過配置環境變數的方式可以讓我們很便捷的將庫檔案匯入到我們的工程中,

在pro檔案添加以下幾行代碼:

#Libraries
CONFIG += link_pkgconfig
#OpenCV
PKGCONFIG += opencv
#C++14
CONFIG += c++14

CONFIG += link_pkgconfig和PKGCONFIG += opencv可以使用我們配置在環境變數中的PKG_CONFIG_PATH,使其找到我們安裝的opencv庫檔案,CONFIG += c++14允許我們使用C++14標準的特性,
再次提醒,opencv4以上的版本沒法使用這個方法,基本上還是靠自己手動添加庫檔案進去,沒有找到其他更好的辦法,因此我只做了opencv3的教程,如果有更好的配置方法,希望能夠告知我,

加入這三條代碼之后我們就可以使用qtcreator撰寫opencv和C++14標準的程式了,

4.測驗程式
在main檔案中輸入之前測驗opencv的程式:

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv; //宣告使用OpenCV的命名空間

int main(int agrc, char** agrv){
    Mat img=imread("Zofia.jpg");
    imshow("test",img);
    waitKey(0);
    return 0;
  }

右鍵專案目錄,點擊構建
在這里插入圖片描述
如果沒有報錯,那么恭喜你,歷經重重苦難,終于已經能夠使用qtcreator運行opencv了,生成了可執行文件:
在這里插入圖片描述
其中,learnOpencv檔案夾是放置我們原始碼的檔案夾,build-learnOpencv-unknown-Debug是我們構建專案所生成的檔案,檔案名在創建專案時均能設定,
將我們的測驗圖片放進build-learnOpencv-unknown-Debug內,
在這里插入圖片描述
在qtcreator左下角的綠色小三角里點擊運行,

在這里插入圖片描述
不出意外,運行成功,


碎碎念

本篇文章基本涵蓋了使用ubuntu撰寫opencv程式基本全程序,限制于篇幅,一些容易踩到的坑沒有細講,望讀者能夠善用搜索引擎,
寫這篇文章的初衷是為在學校內做培訓撰寫的學習資料,同時也是自己入坑ubuntu跌打滾爬日子中的一點總結,望后人能少踩點坑,省下一點在CSDN屎里淘金的精力,多學點有用的東西,
花了好幾天,總共一萬余字,終于寫完了,為了確保文章內容的正確性,每一條指令都經過我自己的親自驗證,能踩的坑基本上都踩了一遍,同樣也確保了跟著我的教程來配置環境基本是不會出什么大問題的,如果有什么遺漏的地方,也請大家指正,
以上

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374549.html

標籤:AI

上一篇:Python呼叫百度AI識別身份證

下一篇:一文弄懂交叉熵損失

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more