1. 程式人生 > >windows&ubuntu&樹莓派安裝opencv3.4.1

windows&ubuntu&樹莓派安裝opencv3.4.1

socket網路程式設計實現圖片特性處理

一、Windows

  1. 安裝opencv3.4.1
  2. 配置環境變數

在這裡插入圖片描述

  1. visual studio配置
    (1)新建空專案

在這裡插入圖片描述
(2)新增新建項

在這裡插入圖片描述
(3)開啟屬性管理器:選擇Debug x64右鍵“屬性”
(4)新增包含目錄

在這裡插入圖片描述
(5)新增庫目錄

在這裡插入圖片描述

(6)新增附加依賴項

在這裡插入圖片描述
在這裡插入圖片描述

  1. 測試效果

在這裡插入圖片描述

在這裡插入圖片描述

  1. 編寫程式碼
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main(int argc, char** argv) { CvPoint center; double scale = -3; IplImage* image = cvLoadImage("d://dasan//qianrushi//Project1//timg.png"); argc == 2 ? cvLoadImage(argv[1]) : 0; cvShowImage("Image", image); if (!image) return
-1; 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); } Mat src; Mat dst; src = cvarrToMat(image); cv::imwrite("test.png", src); cvNamedWindow("test", 1); imshow("test", src); cvWaitKey(); return 0; }

在這裡插入圖片描述

二、Ubuntu

  1. 官網下載opencv3.4.1 , 選擇sources版本

  2. 解壓下載下來的zip包

    unzip opencv-3.4.1.zip

  3. 進入到解壓後的檔案包中

  4. 安裝依賴庫和cmake ,如果提醒需要apt-get update,那就先sudo su進入root許可權,再sudo apt-get update,然後在執行下面命令

    sudo apt-get install cmake

    sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev
    在這裡插入圖片描述

  5. 安裝完cmake之後執行命令 ,建立編譯資料夾

    In-source builds are not allowed.

    mkdir my_build_dir

    cd my_build_dir

  6. cmake一下

    cmake -D CMAKE_BUILD_TYPE=Release-D

    CMAKE_INSTALL_PREFIX=/usr/local …

  7. 執行命令,漫長的編譯過程

    sudo make

  8. 執行命令

    sudo make install

  9. 配置OpenCV的編譯環境
    首先將OpenCV的庫新增到路徑,從而可以讓系統找到

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

    在開啟的空白的檔案末尾新增
    /usr/local/lib
    在這裡插入圖片描述

  10. 執行如下命令使得剛才的配置路徑生效

    sudo ldconfig

  11. 配置bash

    sudo gedit /etc/bash.bashrc

    最末尾新增
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH
    在這裡插入圖片描述
    儲存,執行如下命令使得配置生效

    source /etc/bash.bashrc

    更新

    sudo updatedb

  12. 所有的配置都已經完成,用一個自帶的程式測試一下

    cd ~/dir/opencv-3.4.1/samples/cpp/example_cmake

    按順序執行

    cmake .

    make

    ./opencv_example

    成功打開了攝像頭,左上角有一個hello opencv
    在這裡插入圖片描述

    配置成功

  13. 在Linux下程式設計
    依次執行

    cd opencv-3.4.1

    mkdir mytest

    cd mytest

    touch test.cpp

    sudo gedit /test.cpp

程式碼:

#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	CvPoint center;
    double scale = -3; 
	IplImage* image = cvLoadImage("timg.jpeg");
	argc == 2? cvLoadImage(argv[1]) : 0;
	cvShowImage("Image", image);
	if (!image) return -1; 	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);
		}
	Mat src;Mat dst;
	src = cvarrToMat(image);
	cv::imwrite("test.png", src);
    cvNamedWindow("test",1);  	imshow("test", src);
	 cvWaitKey();
	 return 0;
}

在這裡插入圖片描述

g++ test.cpp -o test ‘pkg-config --cflags –libsopencv’

./test

把test.cpp拷貝到home目錄下
在這裡插入圖片描述

三、樹莓派

  1. 安裝opencv
    安裝opencv的各種工具和影象處理包

軟體源更新

sudo apt-get update

所有軟體更新

sudo apt-get upgrade

樹莓派韌體更新

sudo rpi-update

安裝構建opencv的相關工具

sudo apt-get install build-essential cmake git pkg-config

安裝 jpeg 格式影象工具包

sudo apt-get install libjpeg8-dev

安裝 tif 格式影象工具包

sudo apt-get install libtiff5-dev

安裝 jasper 影象工具包

sudo apt-get install libjasper-dev

安裝 png 影象工具包

sudo apt-get install libpng12-dev

安裝視訊 I/O 包

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

安裝gtk2.0

sudo apt-get install libgtk2.0-dev

優化函式包

sudo apt-get install libatlas-base-dev gfortran

下載opencv原始碼

wget -O opencv-3.4.1.zip https://github.com/Itseez/opencv/archive/3.4.1.zip

解壓opencv原始碼

unzip opencv-3.4.1.zip

下載opencv_contrib原始碼

wget -O opencv_contrib-3.4.1.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip

解壓opencv_contrib原始碼

unzip opencv_contrib-3.4.1.zip

找到下載的資料夾,可以右鍵選擇終端開啟,也可以直接在終端下輸入命令

cd opencv-3.4.1

新建一個名為release資料夾

mkdir release

進入此資料夾

cd release

設定cmake編譯引數

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules
-D INSTALL_PYTHON_EXAMPLES=ON
-D BUILD_EXAMPLES=ON …
在這裡插入圖片描述

正式編譯

sudo mkde

在這裡插入圖片描述

在這裡插入圖片描述

編譯安裝

sudo make install

更新動態連結庫

sudo ldconfig

opencv編譯安裝完成.
編寫程式
程式碼:

#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	CvPoint center;
	double scale = -3;
	IplImage* image = cvLoadImage("d://dasan//qianrushi//Project1//timg.png");
	argc == 2 ? cvLoadImage(argv[1]) : 0;
	cvShowImage("Image", image);
	if (!image) return -1; 	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);
		}
	Mat src; Mat dst;
	src = cvarrToMat(image);
	cv::imwrite("test.png", src);
	cvNamedWindow("test", 1);  	imshow("test", src);
	cvWaitKey();
	return 0;
}



在這裡插入圖片描述

在這裡插入圖片描述

另:
用Ubuntu安裝opencv時,佔用空間較大,導致安裝到百分之92時home目錄已滿安裝失敗,當初裝雙系統時分配給Ubuntu的空間不夠用了,搜尋解決方案: 回到Windows劃分一個新加捲,掛載到home目錄下。
在重啟電腦時黑屏顯示error:unknown filesystem ,搜尋解決方案: 用ls顯示分割槽資訊,由於不知道Ubuntu所在分割槽,用set root=hd0,msdos1 ; set prefix=(hd0,msdos1) ; insmod normal 的語句一直從msdos0一直試到8,終於不顯示unknow filesystem,輸入nomal後成功進入開機選擇系統的介面。