table des matières
Un, installez opencv3.4.10
1. Mettez le package compressé opencv3.4.10 sous home
Décompressez
unzip opencv-3.4.1.zip
2. Installez la bibliothèque dépendante cmake
3. Après avoir installé cmake, exécutez la commande pour créer un dossier de compilation
4. Démarrez la configuration
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
5. Commencez la compilation
sudo make -j4
Exécution d'une commande
sudo make install
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
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
Rendre la configuration effective et mettre à jour
source /etc/bash.bashrc
sudo updatedb
Deux, prétraitement d'image
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
s'allumera.
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();
}
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: