IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【机器学习手册】【6】OPENCV基础操作 -> 正文阅读

[人工智能]【机器学习手册】【6】OPENCV基础操作

前言

我前年看过了《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
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:29:17  更:2021-11-09 19:34:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 6:17:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码