opencv的基本操作方法

本文介绍了在Ubuntu系统下如何安装opencv-3.4.1,包括依赖库的安装、编译配置和环境变量设置。接着讲解了如何使用opencv进行图像处理,如创建函数读取、处理图片。此外,还展示了如何利用opencv操控摄像头,实现视频捕捉。最后,作者分享了学习opencv过程中的乐趣和实践经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.Ubuntu下安装opencv-3.4.1

先拷贝opencv-3.4.1.zip到home目录下
在这里插入图片描述
再对压缩包进行解压

$ unzip opencv-3.4.1.zip

进入到刚解压的opencv-3.4.1目录下

$ cd opencv-3.4.1

再安装依赖库cmake

$ sudo apt install cmake

在这里插入图片描述安装好程序之后,创建编译文件夹并进入文件夹进行配置

$ mkdir my_build_dir

然后进入文件夹进行配置

$ cd my_build_dir

运行一下cmake命令

$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev  

然后再输入下列代码

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

接着就可以开始执行编译了

在执行编译时,有两种方式
1.单线程

$ sudo make

2.多线程

$ sudo make -j8

代码中的-j8表示的是八线程,这便与你的电脑处理器性能有关了,比如现在电脑处理器是i5-8300H,有8线程,如果是i7带H的处理器则有12线程,今年的AMD R7-4800H有16线程,大家可以在设备管理器里面查看自己的处理器有几个线程

在这里采用单线程方式执行,时间比较长,可以暂停改用多进程的方式
先ctrl+Z暂停,再输入执行多线程的代码。
在这里插入图片描述

执行命令

$ sudo make install

在这里插入图片描述

这样这个编译的过程就结束了

接下来,便是配置opencv的环节

输入下列代码,将OpenCV的库添加到路径,从而可以让系统找到

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

执行之后会出现白色文本框,在文本框中输入

$ /usr/local/lib

在这里插入图片描述

保存后退出

执行

$ sudo ldconfig

使得配置的路径有效

接下来需要配置bash

$ sudo gedit /etc/bash.bashrc

在弹出的文本框中的最后一列添加以下代码

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

在这里插入图片描述

保存之后输入以下命令更新配置

$ source /etc/bash.bashrc
$ sudo updatedb

这样,整个环境就配置好了

二.图像处理

(1)新建文件夹,并选择要处理的图片
在opencv -3.4.1下面新建文件夹mytest,并选择一张图片保存到目录下命名

$ cd opencv-3.4.1

再创建文件夹mytest

$ mkdir mytest

复制一张图片到home目录下,并将其复制到opencv-3.4.1这个文件夹中
在这里插入图片描述

(2)创建函数(c++)

创建cpp文件test.cpp

$ touch test.cpp

紧接着进入编程

$ gedit  /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("kirito.JGP");//切记图片命名要与程序中的命名相同包括大小写
	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;
}

在这里插入图片描述函数首先是展示wave这张照片,然后对图片进行处理展示处理后的图片并写到目录下为.png

(3)保存并编译并运行程序

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

编译cpp文件用g++ test.cpp -o test 编译生成可执行文件
pkg-config:
1、检查库的版本号,避免连接错误版本的库文件
2、获取编译预处理参数,如宏定义、头文件位置
3、获得链接参数,如库及以来的其它库位置,文件名及其它一些连接参数
4、自动加入所以来的其他库位置
而-cflags是用来指定程序再编译时需要的头文件所在目录
-libs是指定程序再链接时所需要的动态链接库的目录
以此来获取opencv的头文件与库文件

完成上述操作后,便可以开始运行程序了

$ ./test

在这里插入图片描述

二.运用opencv操控摄像头

1.首先要将虚拟机摄像头USB配置好

Win+R打开cmd 输入services.msc把虚拟机的USB服务打开
在这里插入图片描述

2.设置虚拟机
在虚拟机菜单栏中选择“虚拟机(M)”->选择“可移动设备”->选择“xxxx Camera”->选择“连接(断开与主机连接)”,设置完这项之后,虚拟机接管了笔记本摄像头。
在这里插入图片描述

观察虚拟机右下角,摄像头标志亮了
在这里插入图片描述

这时候输入查看是否有摄像头

$ ls /dev/video0

在这里插入图片描述

在虚拟机中输入以下命令进行打开摄像头查看

$ cheese

若没有安装可以进行安装

$ cheese

3.一个简单的打开摄像头显示处理视频的代码
创建一个cpp文件

$ touch main.cpp

进入编程

$ sudo gedit  /main.cpp

输入下列代码

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

编译然后运行

$ g++ /main1.cpp -o main1 `pkg-config --cflags --libs opencv`
$ ./main1

在这里插入图片描述

这样就能够开始录制视频了

四.总结

总的来说,这一章非常的有趣,学了这么久的编程终于开始接触到了图片识别和视频这些了,让我体验到了其中的乐趣,其中亲手一步步的操作更是熟悉了这些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值