pyopencv的一些需要注意的点

目录

一、图像类型的转换

二、创建一个空白的图片

2.1创建一个单通道的灰度图:

2.2创建一个三通道的图像

三、对图片尺寸和像素值的提取

3.1获取图像的大小

3.2 访问图像的像素值

3.3 修改图像的像素值

四、opencv中图像的坐标

一、图像类型的转换

虽然自己直接读取的图像也是灰度图像,但是最好还是直接用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里面的坐标和咱们平常的坐标是反的,有点绕

下面这个图片可以直观看出图片的坐标是怎么表达的

图片来源:究极清晰!一文带你看懂OpenCV中的坐标系与图像通道顺序 - 知乎 (zhihu.com)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值