机器学习手册opencv基础操作(代码片段)

此心安处是家乡 此心安处是家乡     2023-01-30     436

关键词:

前言

我前年看过了《Opencv3编程入门》,当时我下的是Opencv4.0.1 , 所以有些代码用不了就改成了适合早期4.0的代码了,不知道后面的版本的使用方法变了没。

我只记得概念特别多,我也看不懂,尽管笔记都做出来了。后面也没有项目经验,就都忘了。也是因为学的不好,不知道该怎么实践。你说磨皮,非线性滤波和高斯模糊这种东西,这就调用个函数的事,不屑于去做,但是物体识别也不懂,特征不知道怎么找


图像加载显示

import numpy as np
from sklearn import preprocessing
from sklearn.preprocessing import Normalizer
from sklearn.preprocessing import FunctionTransformer
from sklearn.preprocessing import Binarizer
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import StandardScaler
import pandas as pd
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from fancyimpute import KNN
from sklearn.covariance import EllipticEnvelope
from sklearn.preprocessing import LabelBinarizer, MultiLabelBinarizer
from sklearn.feature_extraction import DictVectorizer
from sklearn.neighbors import KNeighborsClassifier
import cv2 
from matplotlib import pyplot as plt 


#版本
print("cv version : ",cv2.__version__)


"""
cv2.IMREAD_COLOR             彩色BGR
cv2.IMREAD_GRAYSCALE         灰度
cv2.IMREAD_UNCHANGED         原图BGRA
"""
src_image=cv2.imread("ntr.jpg",cv2.IMREAD_COLOR)

h,w=src_image.shape[:2]
dst_image = cv2.resize(src_image,(int(w/2),int(h/2)))

print(type(src_image))
print(src_image.shape)
#print(src_image)



cv2.imshow("src",src_image)
cv2.imshow("dst",dst_image)
cv2.waitKey(0)
cv2.destroyAllWindows()



# plt.subplot(2,2,1)
# plt.imshow(src_image,cmap="gray")

# plt.subplot(2,2,2)
# plt.imshow(src_image)

# plt.axis("on")
# plt.show()

cv version :  4.5.4-dev
<class 'numpy.ndarray'>
(797, 564, 3)

单个点的像素值

src_image=cv2.imread("ntr.jpg",cv2.IMREAD_COLOR)

print(src_image.shape)
print(src_image[0,0])  #BGR



print('--------------------------------------------------------')

src_image2=cv2.imread("sister.png",cv2.IMREAD_UNCHANGED)

print(src_image2.shape)
#角上的点
print(src_image2[0,0])
print('--------------------------------------------------------')

h,w=src_image2.shape[:2]
#中间的点
print(src_image2[int(w/2),int(h/2)])  #BGRA


cv2.imshow("ntr.jpg",src_image)
cv2.imshow("sister.png",src_image2)

cv2.waitKey(0)
cv2.destroyAllWindows()
  • []寻址必须是整数
(797, 564, 3)
[158 148 148]
--------------------------------------------------------
(518, 541, 4)
[255 255 255   0]
--------------------------------------------------------
[229 248 253 255]

  • sister.png是用PS扣过背景的透明图
  • 不扣背景,只是用格式工厂转成png的话,还是没用Alpha通道,只是BGR三个通道

cvtColor色彩空间转换

#BGR
src_image=cv2.imread("yes.png",cv2.IMREAD_COLOR)


"""
cv2.COLOR_BGR2GRAY
cv2.COLOR_RGB2GRAY

cv2.COLOR_GRAY2BGR
cv2.COLOR_GRAY2RGB

cv2.COLOR_BGR2RGB

cv2.COLOR_BGR2HSV
cv2.COLOR_RGB2HSV

cv2.COLOR_HSV2BGR
cv2.COLOR_HSV2RGB

cv2.COLOR_BGR2YUV
cv2.COLOR_RGB2YUV

cv2.COLOR_YUV2BGR
cv2.COLOR_YUV2RGB
"""
#RGB
dst_image=cv2.cvtColor(src_image,cv2.COLOR_BGR2RGB)


plt.subplot(1,2,1)
plt.imshow(src_image)

plt.subplot(1,2,2)
plt.imshow(dst_image)

plt.show()

  • BGR格式的数据在matplotlib上显示不好

裁剪


img1=cv2.imread("cute.jpg",cv2.IMREAD_COLOR)

h,w=img1.shape[:2]

img2=img1[:,: int(w/2)]  #裁掉右边一半

img3=img1[: int(h/2),:]  #裁掉下面一半

cv2.imshow("1",img1)
cv2.imshow("2",img2)
cv2.imshow("3",img3)

cv2.waitKey(0)
cv2.destroyAllWindows()

线性滤波

boxFilter 方框滤波

img1=cv2.imread("fox.jpg",cv2.IMREAD_COLOR)

h,w=img1.shape[:2]



"""
boxFilter的卷积核

1  1  1  1  1
1  1  1  1  1
1  1  1  1  1
1  1  1  1  1
1  1  1  1  1

"""
img2=cv2.boxFilter(img1,
    -1,  #输出深度为原图深度
    (5,5), #卷积核5X5
    True  #要归一化
    )   



cv2.imshow("1",img1)
cv2.imshow("2",img2)

cv2.waitKey(0)
cv2.destroyAllWindows()

blur 均值滤波

img1=cv2.imread("stare.jpg",cv2.IMREAD_COLOR)

h,w=img1.shape[:2]



"""
blur的卷积核

0  0  1  0  0
0  1  1  1  0
1  1  1  1  1
0  1  1  1  0
0  0  1  0  0

"""
img2=cv2.blur(img1,
    (5,5), #卷积核5X5
    )   



cv2.imshow("1",img1)
cv2.imshow("2",img2)

cv2.waitKey(0)
cv2.destroyAllWindows()

GaussianBlur 高斯滤波

img1=cv2.imread("happy.jpg",cv2.IMREAD_COLOR)

h,w=img1.shape[:2]



img2=cv2.GaussianBlur(img1,
    (5,5), #卷积核5X5
    0.8 , #表示高斯核函数在X方向的标准偏差
    0.8   #在Y方向的标准偏差
    )   



cv2.imshow("1",img1)
cv2.imshow("2",img2)

cv2.waitKey(0)
cv2.destroyAllWindows()

filter2D 自定义核

img1=cv2.imread("my.jpg",cv2.IMREAD_COLOR)

h,w=img1.shape[:2]


kernel=np.ones((5,5))/5
print(kernel)
img2=cv2.filter2D(img1,-1,kernel)



cv2.imshow("1",img1)
cv2.imshow("2",img2)

cv2.waitKey(0)
cv2.destroyAllWindows()

核为 np.ones((5,5))/100

核为 np.ones((5,5))/25


核为 np.ones((5,5))/5

机器学习数学基础之线代篇——线性代数python手册(建议收藏)(代码片段)

...底是干什么的?事实上如果你后面想做科研、想研究机器学习、深度学习,你会发现处处是线性代数。这么抽象又重要的课程,一本书里基本看不到几张图,就好比是没有注释的代码&#x 查看详情

opencv学习笔记——基础知识(代码片段)

文章目录1.Opencv环境配置1.1创建opencv虚拟环境1.2让notebook进入虚拟环境1.3虚拟环境导入pycharm2.图像的基本操作2.1读取图片2.1.1基本操作2.1.2颜色通道提取2.2读取视频2.3边界填充2.4图像融合2.4.1数值计算2.4.2图像融合2.5灰度图2.6HSV3.阈... 查看详情

opencv4机器学习:knn原理及实现(代码片段)

...结合OpenCV4,来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一):... 查看详情

opencv4机器学习:knn原理及实现(代码片段)

...结合OpenCV4,来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一):... 查看详情

opencv4机器学习:标注文字和矩形框(代码片段)

...结合OpenCV4,来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一):... 查看详情

opencv4机器学习:标注文字和矩形框(代码片段)

...结合OpenCV4,来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一):... 查看详情

opencv4机器学习:决策树原理及分类实战(代码片段)

...结合OpenCV4,来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一):... 查看详情

opencv4机器学习:图像的几何变换仿射变换(代码片段)

...本),来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章:OpenCV4机器学习(一):Op 查看详情

opencv4机器学习:图像的几何变换仿射变换(代码片段)

...本),来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章:OpenCV4机器学习(一):Op 查看详情

opencv4机器学习:颜色空间(rgbhsihsvlabgray)之间的转换(代码片段)

...本),来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章:OpenCV4机器学习(一):Op 查看详情

opencv4机器学习:颜色空间(rgbhsihsvlabgray)之间的转换(代码片段)

...本),来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章:OpenCV4机器学习(一):Op 查看详情

opencv4机器学习:opencv4+vs2017环境搭建与配置(代码片段)

...本),来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一࿰ 查看详情

opencv4机器学习:图像的读取显示与存储(代码片段)

...本),来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。文章目录一、OpenCV4头文件介绍二、读取图像二、显示图像三、保存... 查看详情

《机器学习实战》-机器学习基础(代码片段)

目录机器学习基础什么是机器学习机器学习应用场景海量数据机器学习的重要性机器学习的基本术语监督学习和非监督学习监督学习:supervisedlearning非监督学习:unsupervisedlearning机器学习工具介绍Python非PythonNumPy函数库基础测试Nu... 查看详情

opencv4机器学习:k-means原理及实现(代码片段)

...结合OpenCV4,来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一):... 查看详情

opencv4机器学习:k-means原理及实现(代码片段)

...结合OpenCV4,来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一):... 查看详情

opencv4机器学习:决策树原理及分类实战(代码片段)

...结合OpenCV4,来实现一些基本的图像处理操作、经典的机器学习算法(比如K-Means、KNN、SVM、决策树、贝叶斯分类器等),以及常用的深度学习算法。系列文章,持续更新:OpenCV4机器学习(一):... 查看详情

计算机视觉入门(代码片段)

...片质量控制、像素操作几何变换、图片特效、图像美化、机器学习机器学习:视频分解图片、图片合成视频  (二)计算机视觉之TensorFlow:手写数字识别常量变量、Numpy模块使用四则运算、matplotlib模块使用矩阵操作基础、神... 查看详情