OpenCV轻松入门(二)——图像处理基础

二值图像通常是经过处理后得到的,使用0表示黑色,使用255表示白色。

import cv2
import numpy as np


# ————————————————————案例一————————————————————


'''
使用numpy库生成一个80*80的数组用来模拟一个黑色图像,并对其进行简单处理
'''

# np.zeros()可以生成一个元素值都是0的数组
img = np.zeros((80, 80), dtype=np.uint8)

cv2.imshow('black', img)
cv2.waitKey()

# 修改其中一个像素点的值并显示图片后观察其变化
print('读取像素点,img[0,3]', img[0, 3])
img[0, 3] = 255
print('修改后的像素点,img[0,3]', img[0, 3])
cv2.imshow('new', img)
cv2.waitKey()

# 销毁所有图像窗口
cv2.destroyAllWindows()


# ————————————————————案例二————————————————————


'''读取一个灰度图像,并对其像素进行访问、修改'''
file_path = '/Users/guojun/Desktop/cute.jpeg'
cute = cv2.imread(file_path, 0)
cv2.imshow('before', cute)

# pycharm运行时如不能显示图片,则需要加上等待键盘输入cv2.waitKey()方法
cv2.waitKey()
for i in range(10, 100):
    for j in range(10, 100):
        cute[i, j] = 255

# 修改后的效果展示
cv2.imshow('after',cute)
cv2.waitKey()

# 销毁所有图像窗口
cv2.destroyAllWindows()


#  ————————————————————案例三————————————————————


'''生成一个三位数组,用来模拟一副BGR模式的彩色图像,对其进行访问、修改'''
img = np.zeros((20, 40, 30), dtype=np.uint8)
print(img)
print('img[0,3]:', img[0, 3])

img[0, 3] = 255
img[1, 5] = 333
img[1, 1, 1] = 6
img[1, 2, 2] = 4
img[0, 2, 0] = 5
print('after img[0,3] :', img[0, 3])
print('after img[0,2,0]:', img[0, 2, 0])


#  ————————————————————案例四————————————————————


'''读取一副彩色图像,并对其像素进行访问、修改'''
file_path = '/Users/guojun/Desktop/cute.jpeg'
img = cv2.imread(file_path)
cv2.imshow('before', img)
cv2.waitKey(0)
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)
cv2.waitKey(0)
cv2.destroyAllWindows()


#  ————————————————————案例五————————————————————


'''使用Numpy生成一个二维随机数组,用来模拟一副灰度图像,并对其像素值进行访问、修改'''
img = np.random.randint(10, 99, size=[5, 5], dtype=np.uint8)
print('img=', img)
print('读取像素点img.item(3,2)=', img.item(3, 2))
img.itemset((3, 2), 255)
print('修改后img =', img)
print('修改后像素点img.item(3,2)=', img.item(3, 2))


#  ————————————————————案例六————————————————————


'''使用Numpy生成一个灰色图像,让其中的像素值均为随机数'''
img = np.random.randint(0, 256, size=[256, 256], dtype=np.uint8)
cv2.imshow('window', img)
cv2.waitKey()
cv2.destroyAllWindows()


#  ————————————————————案例七————————————————————


'''读取一幅灰度图像,并对其像素值进行访问、修改'''
file_path = '/Users/guojun/Desktop/cute.jpeg'
img = cv2.imread(file_path, 0)
# 测试读取,修改单个像素值
print('读取像素点img.item(3,2)=', img.item(3, 2))
img.itemset((3, 2), 255)
print('修改后像素点img.item(3,2)=', img.item(3, 2))

# 测试修改一个区域的像素值
for i in range(100, 200):
    for j in range(0, 100):
        img.itemset((i, j), 255)
cv2.imshow('after', img)
cv2.waitKey(0)
cv2.destroyAllWindows()


# ————————————————————案例八————————————————————


'''使用Numpy生成一个二维随机数组,用来模拟一副彩色图像,使用函数item()、itemset()并对其像素值进行访问、修改'''
img = np.random.randint(10, 99, size=[2, 4, 3], dtype=np.uint8)
print(img)

print('读取像素点img[1,2,0]=', img.item(1, 2, 0))
print('读取像素点img[0,2,1]=', img.item(0, 2, 1))
print('读取像素点img[1,0,2]=', img.item(1, 0, 2))

img.itemset((1, 2, 0), 255)
img.itemset((0, 2, 1), 255)
img.itemset((1, 0, 2), 255)

print('after', img)
print('after 读取像素点img[1,2,0]=', img.item(1, 2, 0))
print('after 读取像素点img[0,2,1]=', img.item(0, 2, 1))
print('after 读取像素点img[1,0,2]=', img.item(1, 0, 2))


# ————————————————————案例九————————————————————


'''使用Numpy生成一幅彩色图像,让其中的像素值均为随机数'''

img = np.random.randint(0, 256, size=[256, 256, 3], dtype=np.uint8)
cv2.imshow('demo', img)
cv2.waitKey(0)
cv2.destroyAllWindows()


# ————————————————————案例十————————————————————


'''读取一副彩色图像,使用函数item()、itemset()并对其像素值进行访问、修改'''

file_path = '/Users/guojun/Desktop/cute.jpeg'

img = cv2.imread(file_path)
for i in range(0, 100):
    for j in range(0, 100):
        for k in range(0, 3):
            img.itemset((i, j, k), 255)
cv2.imshow('demo', img)
cv2.waitKey()
cv2.destroyAllWindows()



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值