【python学习笔记】openCV包(1)图像操作

碎碎念

python中图像操作的包有很多,之前看过一个教识别的大佬的视频用了openCV,所以今天也就选择openCV进行学习啦。另外,感觉openCV可以在很多语言环境下使用啊,C,C++,PHP啥的。
这里只是openCV包中的文件操作的一些方法,不要小看这个部分,只要掌握了这部分,理论上已经可以解决所有的图像处理问题。剩下的算法实现就是自己的事啦。毕竟这些内容已经可以进行像素操作了,所以好好学习吧!

程序简介

下面的代码片就是自己学习这些函数的一个路径,看着书的介绍一边码代码一边观察执行效果。如果有疑问的话还可以顺便测试一下。程序总体是实现了“灰度反转”和“对数变换”的功能。如果学过数字图像处理的同学应该对这个不陌生吧。这也是我今年开的一门新课。如果对图形处理有兴趣的同学,希望这篇文章可以帮你入门,另外别忘了学完之后动手实现一些基础的图像处理哦。

#-------------------------openCV包---------------------- #
#| openCV是python的一个图像处理包,可以进行复杂的图形处理,图像 	|#
#| 识别。本次学习openCV的几个基本的图像处理方法,并尝试做图像初级	|#
#| 变换。													|#
#------------------------------------------------------- #
import cv2
import math
# cv2.imread("图像文件名",读取方式 -1原始模式 0灰度模式 1默认彩色模式)
# 将图像文件以n维数组的形式读入变量,灰度n=2,彩色n=3 (BGR排列)
img = cv2.imread("/Users/wch/Desktop/elephant.png",0)
# 图像变量.shape() 获取图像大小,以列表方式依次存放宽 长
# 坐标是以左上角为零点,竖直方向向下为x,水平向右为y,这是图像处理的坐标方式
x = img.shape[0]
y = img.shape[1]
# cv2.namedWindow("窗口名",窗口标示) 创建一个窗口,用来承载画布
#
# 窗口标示有:cv2.WINDOW_AUTOSIZE 自适应固定窗口(默认)  1
#			cv2.WINDOW_FREERATIO 图像铺满窗口可任意比例调节 256
#			cv2.WINDOW_FULLSCREEN 全屏幕不可调节窗口	1
#			cv2.WINDOW_KEEPRATIO 保持图像比例可调节		0
#			cv2.WINDOW_NORMAL 窗口大小可变				0
#			cv2.WINDOW_OPENGL 支持OpenGL的窗口		4096	
# 所有标示可以用print直接打印其值,使用值相同的标示创建的窗口属性也相同
cv2.namedWindow("img1",cv2.WINDOW_FREERATIO)
# cv2.imshow("窗口名",图形变量) 将图像显示在指定窗口
cv2.imshow("img1",img)
# 依次修改每个像素,使得灰度值与原图互补(灰度反转)
# for a in range(x):
# 	for b in range(y):
# 		img[a][b] = 255 - img[a][b]
img = 255 - img 	# 等价于 255减去列表 img的每一个元素
## 这里实现的是一个 对数变换,图像处理中对数变换可以整体提高画面亮度常用语调整傅立叶频谱的显示
#  for a in range(x):
# 	for b in range(y):
# 		img[a][b] = int( 255/math.log(256)*math.log(img[a][b]+1) )
cv2.namedWindow("img2")
cv2.imshow("img2",img)
# cv2.imwrite("存盘路径",图形变量,[标示,值])
# cv2.IMWRITE_JPEG_QUALITY jpg或jpeg格式文件质量
# 同理可以设置 webp(0-100) 文件质量
# cv2.IMWRITE_PNG_COMPRESSION 设置压缩比例,默认3,值0-9
cv2.imwrite("/Users/wch/Desktop/changed.jpeg",img,[cv2.IMWRITE_JPEG_QUALITY,93])
# cv2.waitKey(参数) 延迟函数,经测试,参数是最长等待时间,0为无穷大。
# 在等待时间内按下任意键可以结束等待
cv2.waitKey(0)
# cv2.destroyAllWindows() 销毁所有窗口 注意大小写
# cv2.destroyWindow("窗口名") 可以销毁指定窗口
cv2.destroyAllWindows()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值