OpenCV的图像编程以及OpenCV使用摄像头

OpenCV3.4.11下的图像编程

OpenCV的下载与安装

OpenCV的下载

进入OpenCV的官网下载:https://opencv.org/releases/,选择sources,可以用Windows下,然后传到Ubuntu上,也可以用Ubuntu的浏览器下载(因为下载源在国外,速度很慢,而且会失败很多次)在这里插入图片描述

OpenCV的安装与调试

经过漫长的下载,OpenCV3.4.11终于下好了,然后进入Ubuntu命令行模式。

unzip opencv-3.4.11.zip

然后进入OpenCV-3.4.11,并创建一个目录

cd opencv-3.4.11
mkdir my_build_dir

在这里插入图片描述
然后再分别下载cmake,和支持程序。

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

在这里插入图片描述
cmake一下

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

再执行一个漫长的编译过程

sudo make

终于好了!!!!
在这里插入图片描述

sudo make install

在这里插入图片描述
此时编译过程就结束了,下面我们将来配置一下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/pkgconfigexport
PKG_CONFIG_PATH ,并保存。
在这里插入图片描述
保存,执行如下命令使得配置生效

source /etc/bash.bashrc  

更新

sudo updatedb  

现在所有配置基本完成了。

OpenCV在Ubuntu下的使用

首先进入OpenCV3.4.11,并创建一个名为mytest的文件夹。

cd opencv-3.4.11
mkdir mytest

在这里插入图片描述
创建调试程序test.cpp

touch test.cpp

然后进入test.cpp进行编译。

vim test.cpp

把源码复制进test.cpp,然后ESC,wq保存并退出

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

在这里插入图片描述
保存并编译:

gcc test.cpp -o test `pkg-config --cflags --libs opencv`

在这里插入图片描述

然后测试。
./test
在这里插入图片描述

OpenCV打开摄像头显示处理视频

代码如下

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
VideoCapture capture(0);
while(1)
{
Mat frame;
capture >> frame;
imshow("读取视频帧",frame);
waitKey(30);
}
system("pause");
return 0;
}

在这里插入图片描述
1.如果要求打开你硬盘上一个视频文件来播放,请问第7行代码如何修改?
答:把括号里面改为要播放的文件名加引号
在这里插入图片描述
2.在第9行的while循环中,Mat是一个什么数据结构? 为什么一定要加一句waitKey延时代码,删除它行不行?
答:定义一个Mat变量,用于存储每一帧的图像
3.此代码会在while循环中一直运行,你如果试图用鼠标关闭图像显示窗口,会发现始终关不掉。需要用键盘Ctrl+C 强制中断程序,非常不友好。如何改进?
答:在第13行加入
if(frame.empty())
{
break;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值