windows&ubuntu&樹莓派安裝opencv3.4.1
socket網路程式設計實現圖片特性處理
一、Windows
- 安裝opencv3.4.1
- 配置環境變數
- visual studio配置
(1)新建空專案
(2)新增新建項
(3)開啟屬性管理器:選擇Debug x64右鍵“屬性”
(4)新增包含目錄
(5)新增庫目錄
(6)新增附加依賴項
- 測試效果
- 編寫程式碼
#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
-
官網下載opencv3.4.1 , 選擇sources版本
-
解壓下載下來的zip包
unzip opencv-3.4.1.zip
-
進入到解壓後的檔案包中
-
安裝依賴庫和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
-
安裝完cmake之後執行命令 ,建立編譯資料夾
In-source builds are not allowed.
mkdir my_build_dir
cd my_build_dir
-
cmake一下
cmake -D CMAKE_BUILD_TYPE=Release-D
CMAKE_INSTALL_PREFIX=/usr/local …
-
執行命令,漫長的編譯過程
sudo make
-
執行命令
sudo make install
-
配置OpenCV的編譯環境
首先將OpenCV的庫新增到路徑,從而可以讓系統找到sudo gedit /etc/ld.so.conf.d/opencv.conf
在開啟的空白的檔案末尾新增
/usr/local/lib
-
執行如下命令使得剛才的配置路徑生效
sudo ldconfig
-
配置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
-
所有的配置都已經完成,用一個自帶的程式測試一下
cd ~/dir/opencv-3.4.1/samples/cpp/example_cmake
按順序執行
cmake .
make
./opencv_example
成功打開了攝像頭,左上角有一個hello opencv
配置成功
-
在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目錄下
三、樹莓派
- 安裝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後成功進入開機選擇系統的介面。