python简单图像处理
一、简单图像处理这里我们需要安装opencv-python的包,可以使用下面的代码,也可以直接用pycharm创建一个python文件,然后import cv2,这时pycharm会跳出一个警告提示,点击那个感叹号,我们可以找到一个安装opencv_python的选项,我们就能够安装opencv_python的包pip install opencv_python打开图像此处我们导入cv2的包和nu
一、简单图像处理
这里我们需要安装opencv-python的包,可以使用下面的代码,也可以直接用pycharm创建一个python文件,然后import cv2,这时pycharm会跳出一个警告提示,点击那个感叹号,我们可以找到一个安装opencv_python的选项,我们就能够安装opencv_python的包
pip install opencv_python
打开图像
此处我们导入cv2的包和numpy的包,用imread来打开图像,如果将img打印出来之后,就可以看到具体的数值
import cv2
import numpy as np
#读取同目录下的dog.jpg的文件,并获取其中的像素值
img=cv2.imread("dog.jpg",cv2.IMREAD_COLOR)
保存图像
此处我们使用imwrite的代码,来将我们之前的img保存为dog_1.jpg文件,
保存成功会返回TRUE值
img1=cv2.imwrite("dog_1.jpg",img)
图像颜色的反转
此处我们用到了之前导入的numpy包中的array数组的功能,我们将img中的每一个数值替换为255-原来的图像数据。(此处的array数组是有广播功能能的,虽然array数组中只用255一个元素,但是对于img中的每一个元素,都会用255减去img中原来的数组)。然后我们将img2的图像保存为dog_1.jpg图像。
#反转
img2=np.array([255])-img
cv2.imwrite("dog_1.jpg",img2)
此处为广播功能的演示
arr1=np.array([255])
arr2=np.array([1,2,3,45])
print(arr1+arr2)
将图片变成灰色
我们先创建一个一维的有326*500全是0的一维数组,然后用reshape方法将其改造成一个326*500的二维数组。
i的范围是0到325(len(img3)就是统计img3的行数)
j的范围是0到499(len(img3[0])就是统计img3方阵中第0行的元素个数,也就是列数)
这里我们之前的img数据中的每一个img[i,j]元素都是有RGB三个值,此处我们计算RGB的平均值作为我们img3数据中的数值,就可以得到我们的灰色图像的数据
我们再用imwrite写入dog_2.jpg的文件中,就可以得到我们的灰色图像。
#灰度
img3=np.array([0]*326*500).reshape(326,500)
for i in range(len(img3)):
for j in range(len(img3[0])):
img3[i,j]=img[i,j].mean()
cv2.imwrite("dog_2.jpg",img3)
图像的二值化
将图像中的灰度值设置为0-255,整个图像就会呈现出明显的黑白效果,使图像中的轮廓突出
在下面的代码中,我们利用numpy的功能,将我们上一个代码中已经完成灰度化的图像数据img3中,大于127的灰度值变为255,否则就变成0。
然后我们用imwrite就能img4的图像保存
#二值化
img4=np.where(img3>127,255,0)
cv2.imwrite("dog_3.jpg",img4)
更多推荐
所有评论(0)