OpenCV图像处理初体验(python语言)

一、将图像分为RGB三个通道的图像,转换为灰度图,并画出直方图
1.首先要学会如何读取并展示出一张图片:

# -*- coding: cp936 -*-  
#  防止中文出错
import cv2     #引入OpenCV库
img=cv2.imread('D:/Camera Roll/aling.jpg',1)
# 括号左边填入你所选照片的地址(如果照片和py文件在一个文档里面可以直接输入照片名字),括号右边默认为1彩色图片,当填入0时读取的是灰色图片
cv2.namedWindow('img')   #取一个窗口的名字
cv2.imshow('img',img)    #展示图片
cv2.waitKey(0)   #使图片停留在屏幕上,不至于很快闪退
cv2.destroyAllWindows()    #关闭所有窗口

运行结果为:

在这里插入图片描述
2.进行RGB三通道输出、灰度图以及直方图

import  cv2
import numpy as np   #用np代替引入的numpy
from matplotlib import pyplot as plt
img=cv2.imread('D:/Camera Roll/aling.jpg')

b,g,r=cv2.split(img)   #进行通道分离
pic=np.zeros(np.shape(img),np.uint8)  #生成零矩阵
pic[:,:,0]=b
cv2.namedWindow('blue')
cv2.imshow('blue',pic)
cv2.waitKey(0)

pic=np.zeros(np.shape(img),np.uint8)
pic[:,:,1]=g
cv2.namedWindow('green')
cv2.imshow('green',pic)
cv2.waitKey(0)

pic=np.zeros(np.shape(img),np.uint8)
pic[:,:,2]=r
cv2.namedWindows('red')
cv2.imshow('red',pic)
cv2.waitKey(0)

color=("blue","green","red")
for i,color in enumerate(color):      #用于遍历序列中的下标和元素
    hist=cv2.calcHist([img],[i],None,[256],[0,256])
    #建立直方图([图像],[通道],掩膜:一般不需要,设为None,[256],[0,256])
    plt.plot(hist,color=color)
    plt.xlim([0,256])
 plt.show()

img=cv2.imread('D:/Camera Roll/aling.jpg',0)   #读取图片为灰度图
cv2.namedWindow('gray')
cv2.imshow('gray',img)
cv2.waitKey(0)

plt.hist(img.ravel(),256,[0,256])
plt.show()
cv2.destoryAllWindows()

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述二、运用数学函数对灰色图进行灰度转换
用一个y=-x+255,把黑的变成白的,把白的变成黑的

import cv2
import numpy as np
img=cv2.imread('D:/Camera Roll/wei.jpg',0)
# 获取图片的高度和宽度
height=img.shape[0]
width=img.shape[1]
# 建立一个零矩阵
result=np.zeros((height,width),np.uint8)

for i in range(height):
   for j in range(width):
      gray=255-img[i,j]     # 运用一个 y=-x+255 的数学函数
      result[i,j]=np.uint8(gray)
 
 cv2.imshow('gray',img)
 cv2.imshow('result',result)
 cv2.waitKey(0)
 cv2.destoryAllWindows()

运行结果:
在这里插入图片描述
在这里插入图片描述
三、createTrackbar函数的简单使用

import cv2
def callback(x):  #回调函数
   pass
 
 cv2.namedWindow('image')
 img=cv2.imread('D:/Camera Roll/wifi.jpg')
 # 建立一个滑块
 cv2.createTrackbar('num','image',0,255,callback)
while(1):
    num=cv2.getTrackbarPos("num","image") #获取当前滑块的位置
    ret,img1=cv2.threshold(img,num,255,cv2.THRESH_BINARY)
    cv2.imshow('image',img2)
    k=cv2.waitKey(1) & 0xFF
    if k==27:
       break
cv2.destoryAllWindows()
#  该程序按Esc结束

运行结果:
在这里插入图片描述
不同的num值,图像颜色对比不一样。

本人是第一次接触图像处理,很多东西还不是很懂,以后会多多学习的,如有错误请看到的小伙伴多多提醒。
有冒犯之处,请多原谅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值