Ubuntu18.04 での Opencv のインストールと使用


序文

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 のグラフィカル オペレーティング システムに慣れており、継続的な学習を通じてさらに進歩したいと考えています!

おすすめ

転載: blog.csdn.net/wer4567/article/details/127033885