instalación de opencv 4.4 VS2019

1. Preparación

1. Descargue el archivo exe opencv4.4.0 del sitio web oficial y extráigalo a la carpeta especificada.

2. Agregue la variable de conversión F:\file\opencv\opencv\build\x64\vc15\bin a la ruta. Estoy usando vs2019, por lo que no se agrega vc14.

3. Copie opencv_world440.dll y opencv_world440d.dll a la carpeta C:\Windows\SysWOW64.
Nota: los usuarios de sistemas de 64 bits deben prestar atención. Los archivos DLL de 32 bits se colocan en [C:\Windows\SysWOW64]. y los de 64 bits se colocan en [C:\Windows\SysWOW64]. El archivo DLL se coloca en "[C:\Windows\System32].

4. Abra vs2019 y cree un nuevo programa de línea de comando. Después de que la creación sea exitosa, abra el administrador de propiedades. Primero seleccione el administrador de configuración especificado.
Insertar descripción de la imagen aquí

Agregar al directorio de inclusión:
F:\file\opencv\opencv\build\include
Agregar al directorio de la biblioteca:
F:\file\opencv\opencv\build\x64\vc15\lib
Seleccionar entrada -> Dependencias adicionales Agregar opencv_world440d.lib (Realice cambios de acuerdo con la versión real descargada. Se puede ver en opencv\build\x64\vc15\lib)

5. Pruébalo y lee una foto.

#include <opencv2/opencv.hpp>

int main(int argc, char** argv) {
    
    
	cv::Mat img = cv::imread("F:\\file\\abcdefg.jpg");
	if (img.empty()) {
    
    
		printf("资源未找到");
		return -1;
	}
	cv::namedWindow("Example1", cv::WINDOW_AUTOSIZE);
	cv::imshow("Example1", img);
	cv::waitKey(0);
	cv::destroyWindow("Example1");
	return 0;
}

2. Empezar

1. Leer un vídeo

#include <opencv2/opencv.hpp>

int main(int argc, char** argv) {
    
    
	cv::namedWindow("Example2", cv::WINDOW_AUTOSIZE);
	cv::VideoCapture cap;
	cap.open("F:\\file\\VID_20200131_115507.mp4");
	cv::Mat Frame;
	for (;;) {
    
    
		cap >> Frame;
		if (Frame.empty()) break;
		cv::imshow("Example2", Frame);
		if (cv::waitKey(33) >= 0) break; //等待输入,时长为33毫秒;
		//30FPS播放,准确数字为33.3ms...,60FPS则设置等待(1000/60)ms
	}

	return 0;
}

2. Reproductor de video con barra de progreso

#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>

using namespace std;

int g_slider_position = 0;
int g_run = 1, g_dontset = 0;//start out int single step mode
cv::VideoCapture g_cap;

void onTrackbarSlide(int pos, void*) {
    
    
	g_cap.set(cv::CAP_PROP_POS_FRAMES, pos);

	if (!g_dontset)
		g_run = 1;
	g_dontset = 0;
}

int main(int argc, char** argv) {
    
    
	
	cv::namedWindow("Example2_4", cv::WINDOW_AUTOSIZE); //创建一个窗口

	g_cap.open("F:\\file\\VID_20200131_115507.mp4"); //将指定的视频读取到g_cap中
	int frames = (int)g_cap.get(cv::CAP_PROP_FRAME_COUNT); //获取视频的总帧数
	int tmpw = (int)g_cap.get(cv::CAP_PROP_FRAME_WIDTH); //获取视频的宽度
	int tmph = (int)g_cap.get(cv::CAP_PROP_FRAME_HEIGHT); //获取视频的高度
	cout << "Video has" << frames << "frames of dimensions("
		<< tmpw << "," << tmph << ")." << endl;

	cv::createTrackbar("Position", "Example2_4", &g_slider_position, frames,
		onTrackbarSlide);//创建进度条
	cv::Mat frame;
	for (;;) {
    
    
		if (g_run != 0) {
    
    
			g_cap >> frame;
			if (frame.empty()) break;
			int current_pos = (int)g_cap.get(cv::CAP_PROP_POS_FRAMES); //获取当前的帧数位置
			g_dontset = 1;

			cv::setTrackbarPos("Position", "Example2_4", current_pos);
			cv::imshow("Example2_4", frame);

			g_run -= 1;
		}

		char c = (char)cv::waitKey(10);
		if(c=='s')//single step
		{
    
    
			g_run = 1; cout << "Single step,run=" << g_run << endl;
		}
		if (c == 'r')//run mode
		{
    
    
			g_run = -1; cout << "Run mode,run=" << g_run << endl;
		}
		if (c == 27)
			break;
	}
	return 0;
}

3. Filtrado espacial del núcleo gaussiano

#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>

using namespace std;


//简单处理函数
void example2_5(const cv::Mat& image) {
    
    
	//创建连个窗口用来显示出入和输出的图像
	cv::namedWindow("Example2_5-in", cv::WINDOW_NORMAL);
	cv::namedWindow("Example2_5-out", cv::WINDOW_NORMAL);

	cv::imshow("Example2_5-in", image);

	cv::Mat out; //输出的图像

	//高斯核模糊滤波
	cv::GaussianBlur(image, out, cv::Size(5, 5), 3, 3);
	cv::GaussianBlur(out, out, cv::Size(5, 5), 3, 3);

	//将处理后的图像打印在输出窗口
	cv::imshow("Example2_5-out", out);

	cv::waitKey(0);
}

int main(int argc, char** argv) {
    
    
	
	cv::Mat image = cv::imread("F:\\file\\abcdefg.jpg");

	example2_5(image);

	return 0;
}

Al crear una ventana, AUTOSIZE ajustará automáticamente la ventana al tamaño de la imagen envuelta, pero hay un valor máximo. Cuando la imagen excede el valor máximo, la imagen no se mostrará completamente. Cuando se usa el parámetro NORMAL, un valor fijo -Se creará una ventana de tamaño y la imagen se escalará para ajustarse al tamaño de la ventana.

Supongo que te gusta

Origin blog.csdn.net/qq_40092672/article/details/109035592
Recomendado
Clasificación