tensorflow深度学习学习笔记01:Opencv基础使用

OpenCv的全称是Open Source Compter Vision Library
一、Opencv基本的图片获取
1、基本图片存储格式
在计算机中,图片是以矩阵的形式存储在存储介质中的

import cv2

import numpy as np
#创建一个长宽各300的矩阵
img = np.mat(np.zeros((300, 300)))
cv2.imshow("text", img)
cv2.waitKey(0)

在图像生成时,每个像素都是由八个整数来表示的,即每个像素的范围是0~255
将原始一维图片转化成三维图片

img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
print(img.shape)

2、图像的读取和存储
imread和imwrite方法分别是读和写的方法

image = cv2.imread("jpg1.jpg", cv2.IMREAD_GRAYSCALE)
cv2.imwrite("jpg11.png", image)

OpenCv在进行读写操作时候,imread()函数会删除所有图片Alpha通道的信息,而imwrite()函数要求输出的图片格式为BGR或者灰度图
3、图像的转换

# 将生成的[300,300]的矩阵按数组的形式转化并打印,之后通过调用Numpy中数组处理函数重新将其重构并显示
import cv2
import numpy as np

image = np.mat(np.zeros((300, 300)))
imageByteArray = bytearray(image)
print(imageByteArray)
imageBGR = np.array(imageByteArray).reshape(300, 300)
cv2.imshow("cool", imageBGR)
cv2.waitKey(0)
#展示了随机生成一个长度为120000的数组,之后将其重构成[300,400]的矩阵
import cv2
import numpy as np
import os

randomByteArray = bytearray(os.urandom(120000))
flatNumpyArray = np.array(randomByteArray).reshape(300, 400)

cv2.imshow("cool", flatNumpyArray)
cv2.waitKey(0)

在这里插入图片描述
4、使用Numpy模块对图像进行编辑
优点:
首先Numpy是专门进行数组操作的python模块,有专门的处理函数能够完成更多的任务,其次,其在性能上是经过专门的优化,在规模较大的数据矩阵上有更好的操作性

import cv2
import numpy as np



img = np.zeros((300, 300))
img[0, 0] = 255
cv2.imshow("img", img)
cv2.waitKey(0)

在这里插入图片描述

import cv2
import numpy as np

img = np.zeros((300, 300))
img[:, 10] = 255
img[10,:] = 255

cv2.imshow("img", img)
cv2.waitKey(0)

在这里插入图片描述
二、OpenCv的卷积核处理
1、计算机视觉的三种不同的彩色空间
灰度、BGR、HSV
2、卷积核与图像特征提取
(1)卷积核主要是通过确定的核块来检测图像的某个区域,之后根据所检测的像素与其周围存在的像素的亮度差值来改变像素明亮度的工具

import numpy as np
import cv2
from scipy import ndimage

kerne133 = np.array([[-1, -1, -1],
                     [-1, 8, -1],
                     [-1, -1, -1]])
kerne133_D = np.array([[1, 1, 1],
                       [1, 8, 1],
                       [1, 1, 1]])
img = cv2.imread("lena.jpg", 0)
lightImg = ndimage.convolve(img, kerne133)
# lightImg2 = ndimage.convolve(img, kerne133)
# cv2.imshow("img", lightImg2)
cv2.imshow("img", lightImg)
cv2.waitKey()

在这里插入图片描述
在这里插入图片描述
(2)采用Gauss模糊处理后提取的图像特征(最常用的特征提取的方法)

import numpy as np
import cv2
from scipy import ndimage

img = cv2.imread("lena.jpg", 0)
blurred = cv2.GaussianBlur(img, (11, 11), 0)
gaussImg = img - blurred
cv2.imshow("img", gaussImg)
cv2.waitKey()

在这里插入图片描述
3、卷积核进阶
filter2D的使用
kernel是所使用的卷积核矩阵

cv2.filter2D(src,-1,kernel,dst)

猜你喜欢

转载自blog.csdn.net/weixin_37411471/article/details/89363056