#目的为记录在自己运行时存在的问题及解决方法,本文基于CSDN社区的Eastmount大佬的课程,通过学习,其中也增加了自己的考量和问题的解决。
- 读取像素
灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。注意OpenCV读取图像是BGR存储显示,当需要图像处理时,需要转换为RGB。
(1)BGR转换RBG可以采用以下代码:
img_bgr = cv2.imread("C:/Users/CLH/Desktop/test.jpg",cv2.IMREAD_UNCHANGED)
B, G, R = cv2.split(img_bgr) #分解像素点
img_rbg = cv2.merge([R, G, B]) #按RBG重新合并
(2)灰度图像:返回值 = 图像[位置参数]
test = img[88,42] #[88,42]指代像素坐标
(3)彩色图像:返回值 = 图像[位置元素, 0/1/2] 获取BGR三个通道像素
blue = img[88,142,0]
green = img[88,142,1]
red = img[88,142,2]
- 修改图像
(1) 如果是灰度图像则直接赋值新像素。
img[88,142] = 255 #图片[位置参数] = 像素
(2)彩色图像依次给三个值赋值。
#方法一
img[88,142, 0] = 255
img[88,142, 1] = 255
img[88,142, 2] = 255
#方法二
img[88,142] = [255,255,255]
#顺序为BGR
- 将[100,200]行、[150,250]列的像素区域设置为白色,代码为:
# -*- coding:utf-8 -*-
import cv2
#读取图片
img = cv2.imread("C:/Users/CLH/Desktop/test.jpg",cv2.IMREAD_UNCHANGED)
#该区域设置为白色
img[100:200, 150:250] = [255,255,255]
#显示图像
cv2.namedWindow("image",cv2.WINDOW_NORMAL)
cv2.imshow("image", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)