目录
一、图像类型的转换
虽然自己直接读取的图像也是灰度图像,但是最好还是直接用cvtColor函数将图像再转一边灰度图像。因为有些类型的灰度图像opencv无法识别(比如我在使用findcounters函数时 就遇到了图片类型格式错误的问题)
cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
取常量cv2.COLOR_BGR2GRAY或cv2.COLOR_RGB2GRAY
想要转hsv可以,使用标志cv2.COLOR_GRAY2BGR,再使用标志cv2.COLOR_BGR2HSV。
也可以直接cv2.COLOR_BGR2HSV
二、创建一个空白的图片
在py中可以用np.zeros()函数来创建一个空白的图片:
2.1创建一个单通道的灰度图:
import numpy as np
import cv2 as cv
# 1 创建一个空白的图像
img = np.zeros((512,512), np.uint8)+255
创建一个一个单通道的灰度图用zeros
主要可以表示为:img = np.zeros((height, width), np.uint8) #uint8表示8位的数值
最初创建的img是一个所有值都为0的纯黑图片,但是很很多时候都需要一个纯白的图片,所以在最后+255
2.2创建一个三通道的图像
import numpy as np
import cv2 as cv
# 1 创建一个空白的图像
img = np.zeros((512,512,3), np.uint8)+255
三、对图片尺寸和像素值的提取
3.1获取图像的大小
使用 OpenCV 的 shape 属性来获取图像的大小。
height, width, channels = image.shape
height 和 width 变量将存储图像的高度和宽度,而 channels 变量将存储图像的通道数。
3.2 访问图像的像素值
访问图像中坐标为(y,x)的像素值,可以使用以下代码:
pixel_value = image[y, x]
3.3 修改图像的像素值
要将坐标为 [x, y] 的像素值修改为 new_value ,可以使用以下代码:
image[y, x] = new_value
比如对于一个单通道的灰度图可以:
image(y, x) = 255
对于三个通道的彩色图有:
image[y, x] = (0,255,0)
注意,图像的坐标是用image[高, 宽] 来表示的,也就是image[y,x]也就是image[high,with]
四、opencv中图像的坐标
如下图所示为opecv中图像的坐标
比如:
import numpy as np
import cv2
img = np.zeros([100, 500])
表示建立一个高100,宽500的图像(100行,500列的像素矩阵)
相当于opencv里面的坐标和咱们平常的坐标是反的,有点绕
下面这个图片可以直观看出图片的坐标是怎么表达的