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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV学习的第一天 -> 正文阅读

[人工智能]OpenCV学习的第一天

OpenCV学习的第一天

    编程干了十几年,从JAVA,C#,PHP到当下的各种大前端NodeJS ,VUE,微信小程序等等,千篇一律的数据处理模式,让我干得属实乏味,在从业的这十多年中,很多人为的因素一直困扰着我,简单的数据处理,真的已经无法满足我这些年在项目中遇到的各种人为问题,大数据,人工智能的商业化,让我仿佛看到了一个新的未来,一个能够解决我曾经苦于无法解决现实问题的方向,在自然语言与视觉两个方向,我选择了后者,主要是从我目前所能接触到的开发需求和个人能力两个方面考虑,希望自己的辛苦努力,能够帮助解决现实世界的问题。

第一节 开发工具

老师建议安装的是Python3.6 跟OpenCV3.4.1.5系列 ,我系统内都是高版本的所以没听老师的,直接安装的都是目前我能装到的版本

1、Anaconda :清华的镜像https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
2、opencv-python :清华的镜像 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
3、opencv-contrib-python :清华的镜像 pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple
4、开发工具,我选用的是wing-personal 这个DEBUG超级好用
链接:https://pan.baidu.com/s/1RpMAFMvbx5Am2lmCJFu8Mw
提取码:rjnp

第二节图像处理基础

一、数据读取-图像

import cv2 #opencv读取的格式是BGR
import matplotlib.pyplot as plt
import numpy as np

img=cv2.imread(‘cat.jpg’)
cv2.imshow(‘image’,img) #图像的显示,也可以创建多个窗口
cv2.waitKey(0) #cv2.waitKey(10000) 等待时间,毫秒级,0表示任意键终止
cv2.destroyAllWindows()
print(img.shape) #(414, 500, 3)

img=cv2.imread(‘cat.jpg’,cv2.IMREAD_GRAYSCALE) #cv2.IMREAD_COLOR:彩色图像 cv2.IMREAD_GRAYSCALE:灰度图像
print(img.shape) #(414, 500)

cv2.imwrite(‘mycat.png’,img) #保存

type(img) #numpy.ndarray

img.size #207000 像素点

img.dtype #dtype(‘uint8’)(0~255)

二、数据读取-视频

import cv2
import matplotlib.pyplot as plt
import numpy as np

vc = cv2.VideoCapture(‘test.mp4’)
#cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1。如果是视频文件,直接指定好路径即可。
if vc.isOpened():
oepn, frame = vc.read()
else:
open = False

上面代码块检查是否打开正确

while open:
ret, frame = vc.read()
if frame is None:
break
if ret == True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow(‘result’, gray)
if cv2.waitKey(100) & 0xFF == 27:
break
vc.release()
cv2.destroyAllWindows()

三、截取部分图像数据

import cv2
import matplotlib.pyplot as plt
import numpy as np

def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()

img=cv2.imread(‘IDCard.jpg’)
cat=img[25:110,155:230] #前代表高,后代表宽
cv_show(‘cat’,cat)

四、颜色通道提取

import cv2
import matplotlib.pyplot as plt
import numpy as np

def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img=cv2.imread(‘IDCard.jpg’)
b,g,r=cv2.split(img)
cv_show(‘r’,r)
cv_show(‘g’,g)
cv_show(‘b’,b)
img2=cv2.merge((b,g,r))
cv_show(‘img2’,img2)
#BGR
cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0
cv_show(‘R’,cur_img)

cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,2] = 0
cv_show(‘G’,cur_img)
cur_img = img.copy()
cur_img[:,:,1] = 0
cur_img[:,:,2] = 0
cv_show(‘B’,cur_img)

五、边界填充

import cv2
import matplotlib.pyplot as plt
import numpy as np

def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img=cv2.imread(‘IDCard.jpg’)

top_size,bottom_size,left_size,right_size = (50,50,50,50)
replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_CONSTANT, value=0)
import matplotlib.pyplot as plt
plt.subplot(231), plt.imshow(img, ‘gray’), plt.title(‘ORIGINAL’)
plt.subplot(232), plt.imshow(replicate, ‘gray’), plt.title(‘REPLICATE’)
plt.subplot(233), plt.imshow(reflect, ‘gray’), plt.title(‘REFLECT’)
plt.subplot(234), plt.imshow(reflect101, ‘gray’), plt.title(‘REFLECT_101’)
plt.subplot(235), plt.imshow(wrap, ‘gray’), plt.title(‘WRAP’)
plt.subplot(236), plt.imshow(constant, ‘gray’), plt.title(‘CONSTANT’)

plt.show()

在这里插入图片描述

BORDER_REPLICATE:复制法,也就是复制最边缘像素。
BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg
BORDER_CONSTANT:常量法,常数值填充。

六、数值计算

import cv2
import matplotlib.pyplot as plt
import numpy as np

img_cat=cv2.imread(‘cat.jpg’)
img_dog=cv2.imread(‘dog.jpg’)
img_cat2= img_cat +10
img_cat[:5,:,0]
img_cat2[:5,:,0]
(img_cat + img_cat2)[:5,:,0] #相当于% 256
cv2.add(img_cat,img_cat2)[:5,:,0]

在这里插入图片描述

七、图像融合

import cv2
import matplotlib.pyplot as plt
import numpy as np

def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img_cat=cv2.imread(‘cat.jpg’)
img_dog=cv2.imread(‘dog.jpg’)
print(img_cat.shape)
print(img_dog.shape)
img_dog = cv2.resize(img_dog, (500, 414))
print(img_dog.shape)
res = cv2.addWeighted(img_cat, 0.4, img_dog, 0.6, 0)
cv_show(‘res’,res)
img_cat4 = cv2.resize(img_cat, (0, 0), fx=4, fy=4)
img_cat13 = cv2.resize(img_cat, (0, 0), fx=1, fy=3)
cv_show(‘img_cat’,img_cat)
cv_show(‘img_cat4’,img_cat4)
cv_show(‘img_cat13’,img_cat13)
在这里插入图片描述
在这里插入图片描述

图太大切不下来
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:45:54  更:2021-07-28 07:48:03 
 
开发: 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/17 20:37:12-

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