输入/输出图像
从文件加载图像:
img = cv.imread(filename)
如果读取 jpg 文件,默认情况下会创建一个3通道图像。如果需要灰度图像,请使用:
img = cv.imread(filename, cv.IMREAD_GRAYSCALE)
文件的格式由其内容(前几个字节)决定。要将图像保存到文件,请执行以下操作:
cv.imwrite(filename, img)
图像的基本操作
访问像素值
为了得到像素强度值,必须知道图像的类型和通道的数量。下面是针对一个单通道灰度图像(类型8UC1)和像素坐标为 x 和 y 的例子:
_intensity = img[y,x]
现在考虑一个具有 BGR 颜色排序的3通道图像(由 imread 返回的默认格式):
_blue = img[y,x,0]_green = img[y,x,1]_red = img[y,x,2]
修改像素值:
img[y,x] = 128
复制对象:
img = cv.imread('image.jpg')_img1 = np.copy(img)
基本操作
可以对矩阵进行许多方便的运算。例如,下面是如何从现有灰度图像 img 生成黑色图像
img[:] = 0
选择感兴趣的区域:
_smallImg = img[10:110,10:110]
从彩色图像转换到灰度图像:
img = cv.imread('image.jpg')_grey = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
将图像类型从 8UC1 改为 32FC1:
_dst = src.astype(np.float32)
可视化图像
在开发过程中查看算法的中间结果是非常有用的。OpenCV 提供了一种方便的图像可视化方法。一个 8U 的图像可以通过以下方式显示:
import cv2 as cvimg = cv.imread('64.jpg')cv.namedWindow('image', cv.WINDOW_AUTOSIZE)cv.imshow('image', img)cv.waitKey()
注意:
需要在安装了 opencv 的情况下才行,我测试用例是在Windows 中,进入虚拟环境(venv\Scripts\activate.bat)
然后运行:python demo.py
调用 waitKey() 开始一个消息传递循环,等待 “image” 窗口中的一次按键。一个 32F 的图像需要转换为 8U 类型。例如:
import cv2 as cvimport numpy as npimg = cv.imread(demo.jpg')grey = cv.cvtColor(img, cv.COLOR_BGR2GRAY)sobelx = cv.Sobel(grey, cv.CV_32F, 1, 0)minVal = np.amin(sobelx)maxVal = np.amax(sobelx)draw = cv.convertScaleAbs(sobelx, alpha=255.0/(maxVal - minVal), beta=-minVal * 255.0/(maxVal - minVal))cv.namedWindow('image', cv.WINDOW_AUTOSIZE)cv.imshow('image', draw)cv.waitKey()
官方文档:
https://docs.opencv.org/4.5.5/d5/d98/tutorial_mat_operations.html
文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




