Opencv学习笔记一(读取 创建 显示 保存图像,像素算术 逻辑运算)

Opencv学习笔记一

读取、显示和保存图像

读取:imread(路径)

显示:imshow(名+图片)

保存:imwrite(保存路径+图片)

import cv2 as cv
src = cv.imread("D:/lenna.jpg") #读取图像
cv.namedWindow("input",cv.WINDOW_AUTOSIZE) #创建名为input的窗口
cv.imshow("input",src) #显示图像
cv.imwrite("input",src)
cv.waitKey(0) #waitKey(0)表示阻塞等待用户键盘输入,用户按键盘任意键就会停止阻塞,继续执行直到程序正常退出!
cv.destroyAllWindows() #销毁窗口

色彩空间

cvtColor(图片+转换方式)

  1. COLOR_BGR2GRAY 彩色到灰度

  2. COLOR_GRAY2BGR 灰度到彩色

  3. COLOR_BGR2HSV BGR到HSV

  4. COLOR_HSV2BGR HSV到 BGR

import cv2 as cv
src = cv.imread("D:/lenna.jpg") #读取图像
cv.namedWindow("input",cv.WINDOW_AUTOSIZE) #创建名为input的窗口
gray=cv.cvtcolor(src,cv.COLOR_BGR2GRAY)
hsv=cv.cvtcolor(src,cv.COLOR_BGR2HSV)
cv.imshow("gray",gray)
cv.imshow("hsv",hsv)
cv.waitKey(0) 
cv.destroyAllWindows() 

创建图像

在计算机中,图像的存储利用的是矩阵,创建图像在这里就是创建矩阵。

用到的库为numpy,这是一个功能强大的科学计算库。

这里 主要库函数:

np.copy()

np.zeros(shape,dtype)

np.ones(shape,dtype)

import cv2 as cv
import numpy as np
src = cv.imread("D:/lenna.jpg") #读取图像
cv.namedWindow("input",cv.WINDOW_AUTOSIZE) #创建名为input的窗口
m1=copy(src) #将src拷贝一份
imshow("m1",m1)
m2=src
m2[100:200,200:300,:]=255  #宽,高,通道数
cv.imshow("m2",m2)
m3=np.zeros(src.shape,src.dtype)  #0矩阵,形状和类型与src一致
cv.imshow("m3",m3)
m4=np.zeros([512,512],np.uint8)
cv.imshow("m4",m4)
m5=np.ones(shape=[512,512,3],dtype=np.uint8)
m5[:,:,0]=255 #0代表第0号通道,0,1,2号通道分别代表B、G、R通道
cv.imshow("m5",m5)
cv.waitKey(0)
cv.destroyAllWindows()

像素算术操作

  1. 加add
  2. 减subtract
  3. 乘multiply
  4. 除dvide
import cv2 as cv
import numpy as np

src1 = cv.imread("D:/Logo1.jpg");
src2 = cv.imread("D:/Logo2.jpg");

add_result = np.zeros(src1.shape, src1.dtype);#创建图像,用于保存结果
cv.add(src1, src2, add_result);
cv.imshow("add_result", add_result);

sub_result = np.zeros(src1.shape, src1.dtype);
cv.subtract(src1, src2, sub_result);
cv.imshow("sub_result", sub_result);

mul_result = np.zeros(src1.shape, src1.dtype);
cv.multiply(src1, src2, mul_result);
cv.imshow("mul_result", mul_result);

div_result = np.zeros(src1.shape, src1.dtype);
cv.divide(src1, src2, div_result);
cv.imshow("div_result", div_result);

cv.waitKey(0)
cv.destroyAllWindows()

像素逻辑运算

  1. 与操作:bitwise_and
  2. 异或操作:bitwise_xor
  3. 或操作:bitwise_or
  4. 取反操作:bitwise_not 图像二值分析中经常使用

跟我们平时编程中的逻辑运算很类似,这里我们举个例子。

我们知道黄色是由红色和绿色组成的

一张黄色图像与一张红色图像进行与操作时,结果只会保留两者重叠部分的红色;

异或操作,重叠部分变为绿色,其余部分保留;

或操作,黄色会覆盖红色(重叠的话)

input
reasult

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值