2K+ 浏览量
OpenCV 提供了函数 cv2.arrowedLine() 用于在图像上绘制带箭头的线。此函数采用不同的参数来绘制线条。请参见以下语法。cv2.arrowedLine(img, start, end, color, thickness, line_type, shift, tip_length) img − 要在其上绘制线条的输入图像。Start − 线路的起始坐标,格式为 (宽度,高度)。End − 线路的结束坐标,格式为 (宽度,高度)。Color − 线的颜色。对于 BGR 格式的红色,我们传递 (0, 0, 255) Thickness − 线的像素厚度。line_type − 类型 ... 阅读更多
4K+ 浏览量
在仿射变换中,原始图像中的所有平行线在输出图像中仍然是平行的。要对图像应用仿射变换,我们需要输入图像上的三个点以及输出图像上的对应点。因此,首先,我们定义这些点并传递给函数 cv2.getAffineTransform()。它将创建一个 2×3 矩阵,我们称之为变换矩阵 M。我们可以使用以下语法找到变换矩阵 M:− M = cv2.getAffineTransform(pts1, pts2) 其中 pts1 是输入图像上三个点的数组,pts2 是输出图像上三个点的数组 ... 阅读更多
3K+ 浏览量
按位与运算在计算机视觉或图像处理中一个非常重要的应用是创建图像蒙版。我们还可以使用该运算符向图像添加水印。图像的像素值表示为 numpy ndarray。像素值使用 8 位无符号整数 (uint8) 存储在 0 到 255 的范围内。两个图像之间的按位与运算是在对应图像的这些像素值的二进制表示上执行的。以下是对两个图像执行按位与运算的语法:− cv2.bitwise_and(img1, img2, mask=None) ... 阅读更多
1K+ 浏览量
要在 OpenCV 中计算直方图,我们使用 cv2.calcHist() 函数。在本教程中,我们将展示如何计算输入图像不同颜色(蓝色、绿色和红色)的直方图。要计算和绘制图像不同颜色的直方图,可以按照以下步骤操作:− 步骤 导入所需的库 OpenCV 和 matplotlib。确保您已安装它们。import cv2 import matplotlib.pyplot as plt 使用 cv2.imread() 方法读取图像。图像的宽度和高度必须相同。img1 = cv2.imread('birds.jpg') 计算不同... 阅读更多
要按一定角度执行图像旋转,我们首先需要获取旋转矩阵。要找到旋转矩阵,我们应用 cv2.getRotationMatrix2D() 函数。此函数的语法为:− M = cv2.getRotationMatrix2D(cr, degree, scale) 其中 cr 是旋转中心,degree 是图像旋转的角度,scale 是用于放大或缩小图像的缩放因子。旋转矩阵 M 是一个 2×2 矩阵(numpy 数组)。我们将旋转矩阵 M 作为参数传递给 cv2.warpAffine() 函数。请参见以下语法:− 语法 cv2.warpAffine(img, M, (width, height)) 这里,... 阅读更多
在特定方向上移动图像位置称为图像平移。要执行图像平移,我们应该首先了解什么是平移矩阵以及如何使用 OpenCV 和 NumPy 定义它。如果我们想在 (x, y) 方向上进行平移,设为 (tx, ty)。tx 是水平方向的偏移量,ty 是垂直方向的偏移量。使用 (tx, ty),我们可以定义平移矩阵 M 如下:− M = np.float32([[1, 0, tx], [0, 1, ty]]) 平移矩阵 M 是类型为 np.float32 的 numpy 数组。... 阅读更多
Otsu 阈值化是一种阈值化技术。还有其他类型的阈值化技术,例如简单阈值化和自适应阈值化。简单阈值化技术使用全局阈值,而自适应阈值化技术对图像的不同区域使用不同的阈值。Otsu 阈值化技术使用全局阈值,但它不是选择的。它是自动确定的。它对双峰图像非常准确。双峰图像是指直方图有两个峰值的图像。阈值是这两个峰值中间的近似值。如果图像不是双峰的,则此阈值化... 阅读更多
自适应阈值化是一种阈值化技术。还有其他类型的阈值化技术,例如简单阈值化,它使用全局阈值。但是,对于在不同区域具有不同光照条件的图像,使用全局阈值并不是一个好主意。自适应阈值化计算图像中一小块区域的阈值。因此,我们对图像中的不同区域有不同的阈值,与简单阈值化技术相比,这可以产生更好的结果。有三个特殊的参数:adaptive_method、block_size 和 const。请参见以下给出的语法。语法 cv2.adaptiveThreshold(img, max_val, adaptive_method, ... 阅读更多
763 浏览量
在简单阈值化中,我们定义一个阈值,如果像素值大于阈值,则将其分配一个值(例如 255),否则将其分配另一个值(例如 0)。可以使用函数 cv2.threshold() 应用简单阈值化。它接受四个参数:源图像、阈值、maxVal 和阈值类型。OpenCV 提供以下不同类型的阈值化:− cv2.THRESH_BINARY − 在此阈值化中,像素值大于阈值的值分配为 255,否则分配为 0。cv2.THRESH_BINARY_INV − 它是 cv2.THRESH_BINARY 的相反情况。cv2.THRESH_TRUNC − ... 阅读更多
在 OpenCV 中,图像是一个 NumPy 数组。我们可以使用 NumPy 数组的属性访问图像属性。对于输入图像 img,我们访问以下图像属性 - 图像类型 - 图像的数据结构。OpenCV 中的图像为 numpy.ndarray。我们可以将其访问为 type(img)。图像形状 - 它以 [H, W, C] 格式表示形状,其中 H、W 和 C 分别表示图像的高度、宽度和通道数。我们可以将其访问为 img.shape。图像大小 - 它是图像中像素的总数... 阅读更多