计算机视觉

计算机视觉是人工智能技术的一个重要领域,计算机视觉其实是一个很宏大的概念,下图是从网上找到的的计算机视觉所需要的技能树。 在这里插入图片描述

什么是计算机视觉?

计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取‘信息’的人工智能系统。所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。

关于opencv

  • 最初是Inter公司开发
  • 核心库使用C/C++编写,支持CUDA加速
  • 现在已经发展到了OpenCV4.0.1版本
  • 基本全平台

opencv的基础操作

1.使用opencv读取一张图片。图片要放在工程文件夹里。
Mat src = imread("E:\\zhu.jpg", 1);  //注意分隔符!!!读一张名为“zhu”的图片,存入矩阵中。后一个参数为1表示RGB三通道,为0为灰度图。
	cvtColor(src, src, COLOR_BGR2GRAY);//用于转换颜色,有三个参数,第一个为读取的矩阵名称,第二个为输出矩阵名称,第三个表示转换为灰度图。
	
	namedWindow("src", WINDOW_AUTOSIZE);
	imshow("src", src);//显示图片

运行结果如图:
在这里插入图片描述
在这里插入图片描述

2.修改图像:转换色彩空间。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char** argv) {
	//读入图像。
	Mat src = imread("E:\\zhu.jpg");//注意分隔符!!!
	if (src.empty()) {
		printf("could not load image...\n");
		return -1;
	}
	//创建窗口,自动大小。
	namedWindow("test opencv setup", CV_WINDOW_AUTOSIZE);
	imshow("test opencv setup", src);
	//修改图像:转换色彩空间。
	namedWindow("output windows", CV_WINDOW_AUTOSIZE);
	Mat output_image;
	cvtColor(src, output_image, CV_BGR2HSV);//源和目标彩色空间定义。
	imshow("output windows", output_image);
	//写出图像。
	imwrite("E:/image/lenahsv.png", output_image);
	waitKey(0);//键盘按任意键,关闭。
	return 0;
}

运行结果如图:
在这里插入图片描述
注:
关于灰度图和彩色图:
灰度图是单通道存储,值为0~255
彩色图是三通道存储,即 R(red) G(green) B(blue)
需要注意的是在图像矩阵中,列数为行数的三倍,并且是以 B G R 的顺序存储的

3.调用摄像头的操作。
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;//引入命名空间
using namespace cv;
int main(int argc,char **argv)
{
	VideoCapture video(0);
	while (true)
	{
		Mat frame;    //创建一个Mat 对象,是一个矩阵。
		video >> frame;      //cap类似c++中的cin,cap读取一帧图像保存在frame中,后一个参数为0表示可以调节窗口大小。若为1表示不可以。
		//cvtColor(frame, frame, COLOR_RGB2GRAY);    //用于转换颜色,有三个参数,第一个为读取的矩阵名称,第二个为输出矩阵名称,第三个表示转换为灰度图。
		namedWindow("frame", WINDOW_AUTOSIZE);
		imshow("frame", frame);   //显示图像

		waitKey(30);    //等待30毫秒,为0表示无限延迟。
	}
	return 0;
}

这里就不贴运行结果了。

4.对图像求导,这种处理方法是用中心像素点的右像素点减左像素点。
VideoCapture cap(0);
	while(true)
	{
		Mat frame;
		cvtColor(frame,frame,CV_RGB2GRAY);//用于转换颜色,有四个参数,第一个为读取的矩阵名称,第二个为输出矩阵名称,第三个表示转换为灰度图。
		cout<<"row"<<frame.rows<<"col"<<frame.cols<<endl;//输出行和列
		Mat dimg=Mat(frame.rows,frame.cols-2,CV_8UC1);
		for(int i=0;i<frame.rows;i++)
		{
			for(int j=1;j<frame.cols-1;j++)
			{
				dimg.at<uchar>(i,j-1)=frame.at<uchar>(i,j-1)-frame.at<uchar>(i,j+1);
			}
		}


5.利用卷积的方法

卷积就是加权求和。
形象的说: 利用卷积可以实现对图像模糊处理,边缘检测,产生轧花效果的图像。首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像。然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。这样就完成了滤波过程。
在这里插入图片描述

//5*5卷积模板
	Mat model = Mat(5, 5, CV_64FC1);
	double sigma = 80;  //超参数(运算前根据经验给定的定值)
	for (int i = -2; i <= 2; i++)
	{
		for (int j = -2; j <= 2; j++)
		{
			model.at<double>(i + 2, j + 2) = exp(-(i*i + j * j) / (2 * sigma*sigma)/(2*PI*sigma*sigma ));
		}
	}
6.高斯模糊

高斯模糊的实质是利用了正态分布去生成对应的权值矩阵(卷积核)
在这里插入图片描述
用matlab对图像进行高斯模糊:

image = imread('C:\lena.jpg');
w=fspecial('gaussian',[5 5],0.7);
im=imfilter(image,w);
imwrite(im,'C:\zhu.jpg','jpg')
7.调用opencv的内部方法实现高斯模糊,以及边缘检测。
GaussianBlur(src, dst, Size(15, 15), 180);   //高斯模糊
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值