图像基本读取修改等操作

图像读取

传统读取像素和修改像素值

.# -*- coding:utf-8 -*-
import cv2

#读取图片
img = cv2.imread("picture.bmp", cv2.IMREAD_UNCHANGED)

#灰度图像
p = img[88, 142]
print(p)

#显示图像
cv2.imshow("Demo", img)

#修改像素
img[78, 125, 0] = 255
img[78, 125, 1] = 255
img[78, 125, 2] =255
print(img[78, 125])  #Result: [255,255,255]

#修改区域像素值
img[100:150, 400:500] = [255, 255, 0]

#等待显示,无限期等待输入
k=cv2.waitKey(0)
#如果输入ESC退出
if k==27:
    cv2.destroyAllWindows()
    
#写入图像
cv2.imwrite("testyxz.jpg", img)

Numpy读取和修改像素

import cv2
import numpy

#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)

#Numpy读取像素
blue = img.item(78, 100, 0)#返回值 = 图像.item(位置参数)
green = img.item(78, 100, 1)
red = img.item(78, 100, 2)

#Numpy修改像素
img.itemset((78, 100, 0), 100)#图像.itemset(位置, 新值)
img.itemset((78, 100, 1), 100)
img.itemset((78, 100, 2), 100)

#显示图像
cv2.imshow("Demo", img)

#等待显示,无限期等待输入
k=cv2.waitKey(0)
#如果输入ESC退出
if k==27:
    cv2.destroyAllWindows()

获取图像属性

import cv2
import numpy

#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)

#获取图像形状
print(img.shape) # Result:(400, 600, 3)

#获取像素数目
print(img.size) # Result:720000

#获取图像类型
print(img.dtype) # Result:uint8

图像融合实验

# -*- coding:utf-8 -*-
import cv2
import numpy as np

#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)

#定义300*100矩阵 3对应BGR
face = np.ones((100, 100, 3))

#显示ROI区域
face = img[200:300, 250:450]#将像素值赋值给图像,注意,是[y1:y2,x1:x2]
img[300:400,400:600] = face#定义在图像中的显示位置,注意,是[y1:y2,x1:x2]
cv2.imshow("face", img)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

通道分离合并

import cv2
import numpy as np

#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
rows, cols, chn = img.shape
#拆分通道
b, g, r = cv2.split(img)
#或者 g = cv2.split(img)[1]

#显示原始图像
cv2.imshow("B", b)
cv2.imshow("G", g)
cv2.imshow("R", r)

#合并通道
m = cv2.merge([b, g, r])#记好opencv是BGR顺序
m_show = cv2.merge([r, g, b])
#cv2.imshow("Merge", m_show)

#显示每个通道的颜色的图
g1 = np.zeros((rows,cols),dtype=img.dtype)
r1 = np.zeros((rows,cols),dtype=img.dtype)
m = cv2.merge([b, g1, r1])

#合并显示
htich2 = np.hstack((img,m_show,m1))
cv2.imwrite('rs1.png',htich2)
           
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值