图像处理基础

本文介绍了如何使用OpenCV进行图像读取、显示、保存的基本操作,包括不同模式下读取图片,像素级别的修改与ROI选取,以及通道操作如二值图像、灰度图像和RGB色彩空间的转换。通过实例演示了如何访问并修改图像像素,以及如何利用ROI处理图像部分区域。
摘要由CSDN通过智能技术生成

图像处理基础

1.图像读取、显示、保存

1.读取图像cv2.imread(filename, flags) flags的值:

cv2.IMREAD_UNCHANGED -1 #原图

cv2.IMREAD_GRAYSCALE 0 #灰度图

cv2.IMREAD_COLOR 1 #BGR图像,默认

cv2.IMREAD_ANYDEPTH 2 #对应深度图像

cv2.ANYCOLOR 4 #以任何可能的格式读图
2.显示图像cv2.imshow(winname, mat) #显示函数

cv2.waitkey(delay) #等待按键函数

destroyWindow(winname)#销毁窗口函数

destroyAllWindows()#销毁所有窗口函数

3.保存图像cv2.imwrite(filename, img)

import cv2
img=cv2.imread('dog.jpg')
cv2.imshow('Dog',img) 
cv2.waitKey() 
cv2.destroyAllWindows()
`img1=cv2.imread('dog.jpg',cv2.IMREAD_GRAYSCALE)
img2=cv2.imread('dog.jpg',cv2.IMREAD_COLOR)
cv2.imshow('Dog2',img1) 
cv2.waitKey(0) 
cv2.destroyAllWindows()

简易方法

def cv_show(name,img):
    cv2.imshow(name,img) 
    cv2.waitKey(0) 
    cv2.destroyAllWindows()
cv_show('Dog3',img1)
#**图像保存**
cv2.imwrite('littledoge.jpg',img)

2.图像像素处理
*

二值图像(仅包含黑色和白色) 因图像比较简单,只有两种颜色,所以一个bit位0/1就可以表示 灰度图像
二值图像表示起来方便,但是由于只有两种颜色,所表示的图像不够细腻,而灰度图像采用更多数值来体现不同的颜色。
通常,计算机把灰度处理为256个灰度级,[0, 255],其中,0表示纯黑,255表示纯白正好用一个字节就可以表示(8位) 彩色图像
仅介绍常见的RGB色彩空间,其中存在R(red), G(Green), B(Blue)三个通道。每个值都在[0,
255]以内,用这三个色彩通道的组合表示颜色,故需要三个字节来表示。

#**访问图像,修改像素**
img=cv2.imread("dog.jpg")
cv2.imshow("before",img)
print("访问img[0,0]=",img[0,0])
print("访问img[0,0,0]=",img[0,0,0])
print("访问img[0,0,1]=",img[0,0,1])
print("访问img[0,0,2]=",img[0,0,2])
print("访问img[50,0]=",img[50,0])
print("访问img[100,0]=",img[100,0])
#区域1
for i in range(0,50):
    for j in range(0,100):
        for k in range(0,3):
            img[i,j,k]=255       #白色
#区域2
for i in range(50,100):
    for j in range(0,100):
        img[i,j]=[128,128,128]  #灰色
#区域3            
for i in range(100,150):
    for j in range(0,100):
        img[i,j]=0          #黑色
cv2.imshow("after",img)
print("修改后img[0,0]=",img[0,0])
print("修改后img[0,0,0]=",img[0,0,0])
print("修改后img[0,0,1]=",img[0,0,1])
print("修改后img[0,0,2]=",img[0,0,2])
print("修改后img[50,0]=",img[50,0])
print("修改后img[100,0]=",img[100,0])
cv2.waitKey()
cv2.destroyAllWindows()
ROI
img=cv2.imread('dog.jpg')
dog=img[0:50,0:200] 
cv2.imshow('dog_roi',dog)
cv2.waitKey()
cv2.destroyAllWindows()

通道操作

通道拆分-通过索引拆分
import cv2
dog=cv2.imread('dog.jpg')
cv2.imshow('dog',dog)
b=dog[:,:,0]
g=dog[:,:,1]
r=dog[:,:,2]
cv2.imshow("b",b)
cv2.imshow("g",g)
cv2.imshow("r",r)
cv2.waitKey()
cv2.destroyAllWindows()
通道拆分-通过函数拆分
dog=cv2.imread('dog.jpg')
b,g,r=cv2.split(dog)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
cv2.waitKey()
cv2.destroyAllWindows()

© Fu Xianjun. All Rights Reserved.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值