《CSDN 人工智能学习笔记》第一部分 机器视觉 第三节 OpenCV入门初步
- 图像读取与显示
- 图像高斯平滑
- 图像缩放
- 颜色空间及阈值化
声明:本系列博客为本人学习CSDN人工智能课程的学习笔记,仅供学习交流使用。
这里引用百度百科关于OpenCV的描述给大家简单说明一下OpenCV:
“OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。”
通过上面的描述,相信大家已经对OpenCV有了简单的认知,下面我将借助Matlab、Python以及C++语言通过图像平滑、图像大小改变以及图像阈值化操作三个方面来开展OpenCV的入门学习。好了,话不多说,开始学习吧。
图像读取与显示
Matlab
Python
import cv2 as cv
# 图片地址指针
imgAddress = r'D:\OpenCV\sources\samples\data\lena.jpg'
# 读取图片
img = cv.imread(imgAddress)
# 显示图片
cv.imshow("Hello,world", img)
# 给定时间内等待用户按键触发
cv.waitKey()
# 关闭所有窗口
cv.destroyAllWindows()
C++
#include "pch.h"
#include "opencv2/opencv.hpp"
#include
using namespace cv;
int main()
{
//读取图片地址字符串
const char *fn = "D:\\OpenCV\\sources\\samples\\data\\lena.jpg";
//读取图片
Mat image = imread(fn);
//显示原始图片
imshow("Hello,World", image);
waitKey(0);
}
图像高斯平滑
Matlab
Python
# 利用GaussianBlur函数对原始图像进行高斯滤波
imgGauss = cv.GaussianBlur(img, (5, 5), 0)
# 显示处理后的图像
cv.imshow("Gaussian Blur image", imgGauss)
C++
//新建高斯图片
Mat imageGauss;
//原始图片高斯滤波
GaussianBlur(image, imageGauss, Size(5, 5), 0);
//显示高斯滤波后的图片
imshow("Gaussian filter Image", imageGauss);
图像缩放
Matlab
Python
# 利用resize函数对原始图像进行缩放
imgResize = cv.resize(img, (int(img.shape[1]/2), int(img.shape[0]/2)))
# 显示处理后的图像
cv.imshow("resize image", imgResize)
# 利用pyrDown函数对原始图像进行金字塔缩放
imgPyr = cv.pyrDown(img)
# 显示处理后的图像
cv.imshow("pyrDown image", imgPyr)
C++
//新建放缩图片
Mat imageResize,imagePyr;
//设置缩放后的图片尺寸
Size imageResizeSize = Size(image.cols / 2, image.rows / 2);
//对原始图片采用立方差值的方法进行缩放,CV_INTER_LINEAR - 双线性差值 (缺省使用)
resize(image, imageResize, imageResizeSize,CV_INTER_CUBIC);
//显示利用resize函数放缩处理后的图片
imshow("Resize Image", imageResize);
//利用pyrDown函数进行缩小处理
pyrDown(image, imagePyr);
//显示利用pyrDown金字塔压缩处理后的图片
imshow("Pyr金字塔压缩处理图片", imagePyr);
颜色空间及阈值化
Matlab
Python
# 利用cvtColor函数对原始图像进行色彩变换
imgGray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 利用cvtColor函数获得原始图像的HSV分量图像
imgHSV = cv.cvtColor(img, cv.COLOR_BGR2HSV)
# 显示处理后的图像
cv.imshow("cvtColor image", imgGray)
cv.imshow("Hue", imgHSV[:, :, 0])
cv.imshow("Saturation", imgHSV[:, :, 1])
cv.imshow("Value", imgHSV[:, :, 2])
C++
//新建色彩转换图像、灰度图像
Mat imageCVT, imageGray, imageHSV, imageHSVChannels[3];
//利用cvtColor函数将原始图像转换为灰度图像
cvtColor(image, imageCVT, COLOR_BGR2GRAY);
//利用cvtColor函数将原始图像转换为HSV图像
cvtColor(image, imageHSV, COLOR_BGR2HSV);
//利用通道分离函数,分离图像
split(imageHSV, imageHSVChannels);
//利用threshold函数将灰度图像转换为二值化图像
threshold(imageCVT, imageGray, 120, 0xff, THRESH_BINARY);
//显示灰度图像,HSV图像分量和二值化图像
imshow("gray image", imageCVT);
imshow("Hue", imageHSVChannels[0]);
imshow("Saturation", imageHSVChannels[1]);
imshow("Value", imageHSVChannels[2]);
imshow("BlackWhite image", imageGray);