Opencv 入门(一)

简介: 笔记

一、图像基本操作


1. 图像读取

cv2.imread()

cv2.waitKey(0)

cv2.destroyAllWindows()


imread的第二个参数:格式指定

1.cv2.IMREAD_COLOR : 彩色图像(默认)

2.cv2.IMREAD_GRAYSCALE : 灰度图像


import cv2 as cv
img = cv.imread('xxx\\name.jpg')
def show(name, img) # name - 窗口名, img - 图像
  cv.imshow(name, img)
  cv.waitKey(0)
  cv.destroyAllWindows()

2. 视频读取

cv2.VideoCapture()

vc = cv.VideoCapture('xxx\\name.mp4')


# 用来判断图像是否正常读取
if vc.isOpened():
    open, frame = vc. read() # read会返回两个, boolean, 帧
else :
    open = False
while open:
    ret, frame = vc.read()
    if frame is None: # 没读完整,退出
        break
    if ret == True: # 读到,ret置true
        gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) # 转成灰度图像
        cv.imshow('result', gray) # 显示每一帧
        if cv.waitKey(100) & 0xFF == 27: # 控制帧率
            break
vc.release() # 释放
cv.destroyAllWindows()

3. ROI

ROI(感兴趣区域)


img = cv.imread(name1) 
cat = img[0:100, 0:200] # 切片操作
show('cat', cat)


4. 颜色通道提取

OpenCV 图片存储,以B,G,R格式


b, g, r = cv.split(img) # 存储 B, G, R
b, g, r
print(b.shape)
img=cv.merge((b,g,r))
img.shape


显示特定通道,可置0其它通道

cur_img=img.copy()
cur_img[:,:,0] = 0 # B通道置0
cur_img[:,:,1] = 0 # G通道置0
show('R', cur_img)


5. 边界填充

cv2.copyMakeBorder() // 用法如示例

填充方式 (borderType):第五个参数


BORDER_REPLICATE : 复制法,复制最边缘像素

BORDER_REFLECT : 反射法,对感兴趣的图像中的像素在两边进行复制

BORDER_REFLECT_101 : 反射法,以最边缘像素为轴对称

BORDER_WRAP : 外包装法

BORDER_CONSTANT : 常量法,常数值填充


replicate=cv.copyMakeBorder(img, top_size,botttop_size,bottom_size,left_size,right_size=(30,30,30,30) # 制定填充宽度
#
om_size,left_size,right_size,borderType=cv.BORDER_REPLICATE)
reflect=cv.copyMakeBorder(img, top_size,bottom_size,left_size,right_size,cv.BORDER_REFLECT)
reflect101=cv.copyMakeBorder(img, top_size,bottom_size,left_size,right_size,cv.BORDER_REFLECT_101)
wrap=cv.copyMakeBorder(img, top_size,bottom_size,left_size,right_size,cv.BORDER_WRAP)
constant=cv.copyMakeBorder(img, top_size,bottom_size,left_size,right_size,cv.BORDER_CONSTANT,value=0) # 常数填充,需指定value值


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()

1.png

6. 数值计算

  • cv2.add(img1, img2)
name1 = name+'1.jpg'
name2 = name+'2.jpg'
img_cat1 = cv.imread(name1)
img_cat2 = cv.imread(name2)
img_cat2.resize((300,300,3)) # 同shape 才能执行运算
img_cat1[:5,:,0]
img_cat1_1 = img_cat1 + 10 # 加法会溢出 == %256
img_cat1_1[:5,:,0]
print((img_cat1 + img_cat2)[:5,:,0]) # 加法会溢出 == %256
print(cv.add(img_cat1, img_cat2)[:5,:,0]) # 不溢出

7. 图像融合

cv2.resize()

坐标都是,宽,高,不要写反了


cv2.resize(img, (x, y))

cv2.resize(img, (0, 0), fx = 1, fy = 1) // 倍数

cv2.addWeighted(img1, α, img2, β, γ)

α,β 权重

γ 亮度, 不宜过大,总和255以上就是白了

img1 = cv.imread(name+'1.jpg')
img2 = cv.imread(name+'2.jpg')
img2 = cv.resize(img2, (300, 300))
img_new = cv.resize(img1, (200 , 100))
plt.imshow(img_new)

2.png

img_new = cv.resize(img1, (0, 0), fx=2,fy=3)
plt.imshow(img_new)

3.png

res = cv.addWeighted(img2, 0.4, img1, 0.6, 0)
plt.imshow(res)

4.png

相关文章
|
7月前
|
计算机视觉 C++
11.【openCV计算机视觉入门基础】
11.【openCV计算机视觉入门基础】
46 0
|
3月前
|
存储 算法 C语言
OpenCV 即时入门(全)
OpenCV 即时入门(全)
83 0
|
4月前
|
机器学习/深度学习 算法 计算机视觉
python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作
python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作
|
4月前
|
存储 XML 计算机视觉
OpenCV 入门之旅
OpenCV 入门之旅
|
4月前
|
计算机视觉 索引 Python
分析”圣诞帽“代码,入门OpenCV
分析”圣诞帽“代码,入门OpenCV
分析”圣诞帽“代码,入门OpenCV
|
8月前
|
存储 Linux 计算机视觉
openCV之图像处理入门
openCV之图像处理入门
|
9月前
|
存储 计算机视觉 C++
【OpenCv】c++ 入门认识 Mat 类,单通道 Mat 的基本操作
【OpenCv】c++ 入门认识 Mat 类,单通道 Mat 的基本操作
186 0
|
10月前
|
计算机视觉 C++ Python
OpenCV入门(C++/Python)- 使用OpenCV进行图像旋转和转换(五)
OpenCV入门(C++/Python)- 使用OpenCV进行图像旋转和转换(五)
195 0
|
10月前
|
存储 C++ 计算机视觉
OpenCV入门(C++/Python)-使用OpenCV裁剪图像(四)
OpenCV入门(C++/Python)-使用OpenCV裁剪图像(四)
321 0
|
10月前
|
机器学习/深度学习 消息中间件 数据可视化
OpenCV入门(C++/Python)- 使用OpenCV调整尺寸大小(三)
OpenCV入门(C++/Python)- 使用OpenCV调整尺寸大小(三)
216 1