[D06] OpenCV 介绍与用法

OpenCV 广泛被应用在对目标进行辨识、测量、纪录等,并更进一步的进行影像处理!

读取图片

由於 OpenCV 本身就有提供读取图片档的函数可用,读取一般的图片档时,只要呼叫 cv2.imread 即可将图片读取进来。

以 cv2.imread 读进来的资料,会储存成一个 NumPy 阵列
此 NumPy 阵列的前两个维度分别是图片的高度与宽度,第三个维度则是图片的 channel(RGB 彩色图片的 channel 是 3,灰阶图片则为 1)

import cv2

img = cv2.imread('image.jpg') #读取图片
print(type(img))              #查看资料型态
print(img.shape)              #检查这个 NumPy 阵列的大小

显示图片

图片读取进来之後,使用 OpenCV 所提供的 cv2.imshow 来显示图片

cv2.imshow 的第一个参数为欲定的视窗名称,第二个参数为要显示的图像~

cv2.imshow('My Image', img)  #显示图片

    #关闭所有视窗
cv2.waitKey(0)                      
cv2.destroyAllWindows()

   #关闭指定视窗
cv2.destroyWindows('My Image')   

cv2.waitKey 是用来等待与读取使用者按下按键而关闭图片视窗。
参数是等待时间(毫秒),若设为 0 就表示会等待使用者按下任何按键为止。

如果在程序中有许多的 OpenCV 视窗,而我们只要关闭特定的视窗时,可以改用 cv2.destroyWindow 加上视窗名称,关闭指定的视窗。


图片来源: 朋友的狗狗愤怒吐舌瞬间><

注意视窗上的名称 My Image 是自己在cv2.imshow定的喔~

储存图片

使用 OpenCV 的 cv2.imwrite
可以使用 opencv 内建的函数 cvtColor 将图片转为灰阶~

# 将图片转成灰阶
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

cv2.imwrite('My Image.jpg', gray)  # 储存图档 

假如原本的图是 jpg 档,也可以用cv2.imwrite存为其他格式

# 写入不同图档格式 
cv2.imwrite('My Image.png', img) 
cv2.imwrite('My Image.tiff', img)


转成灰阶的狗勾!


<<:  深不可测的海 - Regular Expression

>>:  Day6 Android - 元件使用(EditText->Button->TextView)

Angular 图片上传之...日记文

插播 本来预定今天要发布的文章延後了,今天要要来分享这一两天的踩雷心路历,花了一半天时间,连铁人都没...

Day-17 就是要重现这一部!没有极限的 PS2!

在这第六世代的战争中、面对来势汹汹的 DC、SONY 当然也早就有准备、非常机歪的选在 DC 发售的...

Day 14:Load testing

虽然在昨天有说到今天希望可以改善 dashboard,然而我在做到一半的时候突然惊觉...现在根本就...

[Day 8]开赛八天即遭遇难题(前端篇)

挑战目标: MockNative Camp前端 今天原本是要来refactor和解决hover的问题...

Day 18:专案03 - PTT 八卦版爬虫03 | 文章标题、作者、时间

哎呀哎呀,开学後变得好忙阿,连一天写一篇的时间都没有,果然先预留点文章是对的。参赛前还以为30天很短...