記事ディレクトリ
序文
Ubuntu18.04 システムでの Opencv のインストールと使用方法を学びます。
1.Opencvのインストール
Opencv の使用と学習にはデスクトップ版の Ubuntu が必要なので、既にインストールされている場合はこの手順を省略できます。サーバー版の場合は、デスクトップ コンポーネントをダウンロードする必要があります。
sudo apt-get update //更新源
sudo apt-get install ubuntu-desktop //安装桌面组件
sudo reboot //重启虚拟机
インストール URL: https://opencv.org/releases/
1. Ubuntu 18.04 で Web サイトを開きます。ダウンロードに関しては、インターネット上に情報が多く、比較的安定している最新版をダウンロードすることをお勧めします。クリックしSources
てダウンロードします。
2. ctrl+alt+T でターミナルに入り、対応する依存環境をインストールします
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libjasper-dev libdc1394-22-dev
3.ダウンロードしたインストール パッケージをホーム ディレクトリにコピーして、次の操作を容易にします。ダウンロードした圧縮パッケージを解凍します
unzip opencv-4.5.5.zip
4.解凍したファイルを入力し、このディレクトリに新しいビルド フォルダーを作成します。
cd opencv-4.5.5
mkdir build
5.ビルド パスを入力しますcmake
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
CMAKE_INSTALL_PREFIX: opencv のインストール パスは、/usr/local の下にインストールされます。
CMAKE_BUILD_TYPE: opencv のインストール バージョン、Release はデフォルトでここにインストールされます。
6.ビルド ディレクトリ内make
sudo make -j2 //我这里是双线程,大家可以根据自己虚拟机的配置来
7.変更したディレクトリにインストール
sudo make install
8. opencv ライブラリをシステム パスに追加し、ld.so.conf ファイルを構成します。
sudo vim /etc/ld.so.conf
//在打开的文件中加一行
include /usr/local/lib
并执行 sudo ldconfig //使配置生效
9.システム bash を構成する
sudo vim /etc/bash.bashrc
//再打开的文件末尾添加以下内容
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
//添加完之后执行以下命令,使配置生效
source /etc/bash.bashrc
10.インストール完了!
2. Ubuntu18.04でのopencvの適用例
1. 写真の表示
1.ディレクトリの下にcode
フォルダを作成し、ディレクトリに入る
mkdir コード
cd コード
2. vim エディターを使用して、コード ディレクトリに 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("lena.jpg");
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;
}
3.次のコマンドを実行します
g++ test.cpp -o test `pkg-config --cflags --libs opencv`
4.次のコマンドを実行します
./test //执行输出文件
写真が特殊効果で表示されていることがわかります
2. カメラの使用
(1) カメラの許可を得る
- Windows システムで win+r、services.msc と入力し、VMware USB Arbitration S... サービスを見つけて、サービスを開始します。
- 仮想マシンの設定をクリックし、USB コントローラの [USB 互換性] を usb3.0 に設定します。
仮想マシンで [リムーバブル デバイス] を選択し、[Quanta USB2.0 VGA UVC WebCam] を選択し、最後に [接続] をクリックします。できる。
(2) ビデオを録画するためのカメラコール
1. .cpp ファイルを作成し、コードを入力します
#include<iostream>
#include <opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main()
{
//打开电脑摄像头
VideoCapture cap(0);
if (!cap.isOpened())
{
cout << "error" << endl;
waitKey(0);
return 0;
}
//获得cap的分辨率
int w = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_WIDTH));
int h = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_HEIGHT));
Size videoSize(w, h);
VideoWriter writer("RecordVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25, videoSize);
Mat frame;
int key;//记录键盘按键
char startOrStop = 1;//0 开始录制视频; 1 结束录制视频
char flag = 0;//正在录制标志 0-不在录制; 1-正在录制
while (1)
{
cap >> frame;
key = waitKey(100);
if (key == 32)//按下空格开始录制、暂停录制 可以来回切换
{
startOrStop = 1 - startOrStop;
if (startOrStop == 0)
{
flag = 1;
}
}
if (key == 27)//按下ESC退出整个程序,保存视频文件到磁盘
{
break;
}
if (startOrStop == 0 && flag==1)
{
writer << frame;
cout << "recording" << endl;
}
else if (startOrStop == 1)
{
flag = 0;
cout << "end recording" << endl;
}
imshow("picture", frame);
}
cap.release();
writer.release();
destroyAllWindows();
return 0;
}
2.次のコマンドを入力して、実行可能ファイルをコンパイルおよび生成します。
g++ test.cpp -o test `pkg-config --cflags --libs opencv`
コンピューターのカメラが撮影に使用されていることがわかります(カメラが壊れているため、撮影効果はありません)
(3) 動画を再生する
1.同様に、.cpp ファイルも必要です。次のコードを貼り付け、コンパイルして実行します。(フォルダの下にビデオがあるはずです)
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
//从摄像头读取视频
VideoCapture capture("2.mp4");
//循环显示每一帧
while(1){
Mat frame;//定义一个Mat变量,用于存储每一帧的图像
capture >> frame;//读取当前帧
if(frame.empty())//播放完毕,退出
break;
imshow("读取视频帧",frame);//显示当前帧
waitKey(30);//掩饰30ms
}
system("pause");
return 0;
}
動画は普通に再生できます!
3.参考文献
1、 https://blog.csdn.net/ssj925319/article/details/109231145?spm=1001.2014.3001.5501
要約する
Opencvはオープンソースの画像処理ライブラリでとても面白いです.windows系では使ったことはありますが,ubuntu系では使ったことがありません.ubuntu系では面倒だと思ったことはありません. もちろん、私たちが感じている問題は Linux オペレーティング システムに慣れていないということだけです.結局のところ、私たちは皆 Windows のグラフィカル オペレーティング システムに慣れており、継続的な学習を通じてさらに進歩したいと考えています!