Pratiquez la compilation et l'installation de la célèbre bibliothèque de logiciels open source de traitement d'images C / C ++ Opencv sous le système Ubuntu16 / 18

Un, installez opencv3.4.10

1. Mettez le package compressé opencv3.4.10 sous home

Insérez la description de l'image ici
Décompressez

unzip opencv-3.4.1.zip

2. Installez la bibliothèque dépendante cmake

Insérez la description de l'image ici

3. Après avoir installé cmake, exécutez la commande pour créer un dossier de compilation

Insérez la description de l'image ici

4. Démarrez la configuration

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

Insérez la description de l'image ici
Insérez la description de l'image ici

5. Commencez la compilation

sudo make -j4

Insérez la description de l'image ici
Exécution d'une commande

sudo make install

Insérez la description de l'image ici

Configurer l'environnement de compilation OpenCV

Une fois que sudo make install est exécuté, le processus de compilation OpenCV est terminé. Ensuite, vous devez configurer un environnement de compilation OpenCV. Ajoutez d'abord la bibliothèque OpenCV au chemin, afin que le système puisse trouver

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

Insérez la description de l'image ici
Laisser le chemin prendre effet et configurer bash
[Le transfert de l'image du lien externe a échoué, le site source peut avoir une insertion antivol ici! Mécanisme de chaîne, suggérer une description] Il est recommandé de télécharger l'image sur https: // (imblogC5WGsdnimg.cn/2020105330 -640565.png # pic_center3) (https://imgblog.csdnimg.cn/20201030153005656.png#pic_center)]
ajouter à la fin

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

Insérez la description de l'image ici
Rendre la configuration effective et mettre à jour

source /etc/bash.bashrc  
sudo updatedb  

Deux, prétraitement d'image

Insérez la description de l'image ici

Créer une fonction

#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;
}

Enregistrer et traduire

g++ test.cpp -o test `pkg-config --cflags --libs opencv`

Trois, ouvrez la caméra avec opencv

Configurer la caméra de la machine virtuelle USB
Win + R Ouvrez cmd et entrez services.msc pour confirmer que le service USB de la machine virtuelle est activé.
Cliquez sur l'icône de la caméra dans le coin inférieur droit et la caméra
Insérez la description de l'image ici
s'allumera.
Insérez la description de l'image ici
Exécution simple

#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
    
    
	//从摄像头读取视频
	Videocapture capture(0);
	//循环显示每一帧
	white (1)
	{
    
    	Mat frame;//定义一个Mat变量,用于存储每一的图像
		Capture>>frame;//读取当前帧
		imshow("读取视频帧", frame);//显示当前顿
		waitKey(30);//延时30m
	}
	system("pause");
	return 0;
}

Ouvrez l'appareil photo pour capturer des images et enregistrer

Code

#include<iostream>
#include <opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;

void main()
{
    
    
	//打开电脑摄像头
	VideoCapture cap(0);
	if (!cap.isOpened())
	{
    
    
		cout << "error" << endl;
		waitKey(0);
		return;
	}

	//获得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();
}

Insérez la description de l'image ici
La méthode pour obtenir le chemin du fichier d'en-tête opencv et le fichier de bibliothèque de lien lib pendant le processus de compilation:
Si le chemin n'est pas spécifié dans la compilation, le fichier d'en-tête vérifiera les variables d'environnement gcc et trouvera le répertoire par défaut du système: / usr / include; / usr / local / include, liez les variables d'environnement de la bibliothèque lib gcc et trouvez le chemin par défaut / lib; / usr / lib; / usr / local / lib. Après cela, nous pouvons exécuter:
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_47357131/article/details/109385561
conseillé
Classement