北京做网站设计,网站开发小程序开发公司,企业网站的形式,做app 的模板下载网站有哪些内容文章目录 写在前面入门篇1.生成图片2.转换色彩空间3.拆分颜色通道4.绘制线条5.阈值自适应处理 写在后面 写在前面
探索新大陆#xff1a;PythonOpenCV#xff0c;本文主要记录入门计算机视觉的一些简单程序。
入门篇
安装opencv库#xff1a;
pip install -i https… 文章目录 写在前面入门篇1.生成图片2.转换色彩空间3.拆分颜色通道4.绘制线条5.阈值自适应处理 写在后面 写在前面
探索新大陆PythonOpenCV本文主要记录入门计算机视觉的一些简单程序。
入门篇
安装opencv库
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python1.生成图片 作者Want595
微信号Want_595
公众号Want595import cv2
import numpy as np
width 200
height 100
img np.ones((height, width), np.uint8) * 255
cv2.imshow(img, img)
cv2.waitKey()
cv2.destroyAllWindows()这段代码使用OpenCV库创建了一个宽度为200高度为100的空白图像并将图像中所有像素点的值设为255白色。然后展示了该图像。
具体的执行过程如下 导入cv2和numpy库。 import cv2 import numpy as np 定义图像的宽度和高度。在这里宽度为200高度为100。 width 200 height 100 使用numpy库的ones函数创建一个指定大小的全为1的数组并将数组中的元素类型转换为8位无符号整数。 img np.ones((height, width), np.uint8) * 255 参数(height, width)指定数组的维度即图像的高度和宽度。参数np.uint8表示数组中元素的数据类型为8位无符号整数。* 255 表示将所有元素的值乘以255即将所有像素点的值设为255。 使用cv2.imshow函数显示创建的图像。该函数的参数为展示图像的窗口名称和图像数据。 cv2.imshow(img, img) 等待按下任意键后关闭窗口。使用cv2.waitKey函数该函数返回按键的ASCII码。当按下任意键后cv2.waitKey函数将返回一个非负数通过与0xFF进行按位与操作将返回值转换为一个8位整数。 cv2.waitKey() 关闭所有窗口。使用cv2.destroyAllWindows函数该函数用于销毁已创建的所有窗口。 cv2.destroyAllWindows()
这段代码的作用是创建一个指定大小的空白图像并将图像中所有像素点的值设为255即将图像填充为白色。然后展示该图像以便可以看到所创建图像的效果。
2.转换色彩空间 作者Want595
微信号Want_595
公众号Want595import cv2
image cv2.imread(Pikachu.jpg)
cv2.imshow(RGB, image)
hsv_image cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
cv2.imshow(HSV, hsv_image)
cv2.waitKey()
cv2.destroyAllWindows()这段代码使用OpenCV库读取了一张名为Pikachu.jpg的彩色图片并展示了该图片的原始版本以及转换为HSV颜色空间的版本。
具体的执行过程如下 使用cv2.imread函数读取图片。该函数的参数是要读取的图片路径。读取的图片会被存储为一个numpy数组。 image cv2.imread(Pikachu.jpg) 使用cv2.imshow函数显示图片的原始版本。该函数的参数为展示图片的窗口名称和图像数据。 cv2.imshow(RGB, image) 使用cv2.cvtColor函数将图片转换为HSV颜色空间。该函数的参数为要转换的图像数据和转换的颜色空间标识。在这里使用cv2.COLOR_BGR2HSV将图片从BGR颜色空间转换为HSV颜色空间。 hsv_image cv2.cvtColor(image, cv2.COLOR_BGR2HSV) 使用cv2.imshow函数显示转换后的图片。该函数的参数为展示图片的窗口名称和图像数据。 cv2.imshow(HSV, hsv_image) 等待按下任意键后关闭窗口。使用cv2.waitKey函数该函数返回按键的ASCII码。当按下任意键后cv2.waitKey函数将返回一个非负数通过与0xFF进行按位与操作将返回值转换为一个8位整数。 cv2.waitKey() 关闭所有窗口。使用cv2.destroyAllWindows函数该函数用于销毁已创建的所有窗口。 cv2.destroyAllWindows()
这段代码的作用是展示一张彩色图片的原始版本以及转换为HSV颜色空间的版本以便更好地理解图片的颜色信息。
3.拆分颜色通道 作者Want595
微信号Want_595
公众号Want595import cv2
image cv2.imread(Pikachu.jpg)
cv2.imshow(img, image)
b,g,r cv2.split(image)
cv2.imshow(b, b)
cv2.imshow(g, g)
cv2.imshow(r,r)
cv2.waitKey()
cv2.destroyAllWindows()这段代码使用OpenCV库读取了一张名为Pikachu.jpg的图片并展示了该图片的原始版本以及分离出的蓝色通道、绿色通道和红色通道。
具体的执行过程如下 使用cv2.imread函数读取图片。该函数的参数是要读取的图片路径。读取的图片会被存储为一个numpy数组。 image cv2.imread(Pikachu.jpg) 使用cv2.imshow函数显示原始图片。该函数的参数为展示图片的窗口名称和图像数据。 cv2.imshow(img, image) 使用cv2.split函数分离出图片的蓝色通道、绿色通道和红色通道。该函数的参数为要分离的图像数据。 b,g,r cv2.split(image) 使用cv2.imshow函数分别显示蓝色通道、绿色通道和红色通道的图像。 cv2.imshow(b, b) cv2.imshow(g, g) cv2.imshow(r,r) 等待按下任意键后关闭窗口。使用cv2.waitKey函数该函数返回按键的ASCII码。当按下任意键后cv2.waitKey函数将返回一个非负数通过与0xFF进行按位与操作将返回值转换为一个8位整数。 cv2.waitKey() 关闭所有窗口。使用cv2.destroyAllWindows函数该函数用于销毁已创建的所有窗口。 cv2.destroyAllWindows()
这段代码的作用是将一张彩色图片分离成RGB三个通道的图片并分别展示出来。
4.绘制线条 作者Want595
微信号Want_595
公众号Want595import numpy as np
import cv2canvas np.zeros((300, 300, 3), np.uint8)
cv2.line(canvas, (50, 50), (250, 50), (255, 0, 0), 5)
cv2.line(canvas, (50, 150), (250, 150), (0, 255, 0), 10)
cv2.line(canvas, (50, 250), (250, 250), (0, 0, 255), 15)
cv2.line(canvas, (150, 50), (150, 250), (0, 255, 255), 20)
cv2.imshow(Lines, canvas)
cv2.waitKey()
cv2.destroyAllWindows()这段代码使用OpenCV库绘制了一张300x300像素的画布并在画布上绘制了四条直线。具体的绘制过程如下 创建了一个300x300x3的空白画布像素值都为0。其中300x300表示画布的宽高3表示每个像素点的通道数RGB。 canvas np.zeros((300, 300, 3), np.uint8) 使用cv2.line函数绘制直线。该函数的参数依次为画布起点坐标终点坐标颜色线条粗细。 绘制一条从(50, 50)到(250, 50)的红色直线线条粗细为5。绘制一条从(50, 150)到(250, 150)的绿色直线线条粗细为10。绘制一条从(50, 250)到(250, 250)的蓝色直线线条粗细为15。绘制一条从(150, 50)到(150, 250)的青色直线线条粗细为20。 cv2.line(canvas, (50, 50), (250, 50), (255, 0, 0), 5) cv2.line(canvas, (50, 150), (250, 150), (0, 255, 0), 10) cv2.line(canvas, (50, 250), (250, 250), (0, 0, 255), 15) cv2.line(canvas, (150, 50), (150, 250), (0, 255, 255), 20) 显示绘制好的画布。使用cv2.imshow函数显示图像。参数为窗口名称和图像数据。 cv2.imshow(Lines, canvas) 等待按下任意键后关闭窗口。使用cv2.waitKey函数该函数返回按键的ASCII码。当按下任意键后cv2.waitKey函数将返回一个非负数通过与0xFF进行按位与操作将返回值转换为一个8位整数。 cv2.waitKey() 关闭所有窗口。使用cv2.destroyAllWindows函数该函数用于销毁已创建的所有窗口。 cv2.destroyAllWindows()
5.阈值自适应处理 作者Want595
微信号Want_595
公众号Want595import cv2image cv2.imread(Pikachu.jpg)
image_Gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
t1, dst1 cv2.threshold(image_Gray, 127, 255, cv2.THRESH_BINARY)
t2, dst2 cv2.threshold(image_Gray, 0, 255, cv2.THRESH_BINARY cv2.THRESH_OTSU)
cv2.putText(dst2, best threshold: str(t2), (0, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
cv2.imshow(BINARY, dst1)
cv2.imshow(OTSU, dst2)
cv2.waitKey()
cv2.destroyAllWindows()这段代码使用OpenCV库加载一张名为Pikachu.jpg的图像并进行灰度化处理。然后使用两种不同的阈值方法对灰度图像进行二值化处理分别为全局固定阈值和Otsu自适应阈值。
具体的执行过程如下 导入cv2库。 import cv2 使用cv2.imread函数加载一张名为Pikachu.jpg的图像并将图像数据存储在image变量中。 image cv2.imread(Pikachu.jpg) 使用cv2.cvtColor函数将图像从BGR颜色空间转换为灰度图像。 image_Gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 使用cv2.threshold函数进行全局固定阈值的二值化处理。该函数的参数包括待处理的灰度图像、设定的阈值、结果图像的最大像素值、阈值类型等。 t1, dst1 cv2.threshold(image_Gray, 127, 255, cv2.THRESH_BINARY) 参数image_Gray为待处理的灰度图像。参数127为设定的阈值小于等于该阈值的像素值被设为0大于该阈值的像素值被设为最大像素值。参数255为结果图像的最大像素值。参数cv2.THRESH_BINARY表示使用固定阈值法进行二值化处理。 函数的返回值t1为实际选取的阈值dst1为处理后的二值图像。 使用cv2.threshold函数进行Otsu自适应阈值的二值化处理。与步骤4相似只是阈值类型为cv2.THRESH_BINARY cv2.THRESH_OTSU。 t2, dst2 cv2.threshold(image_Gray, 0, 255, cv2.THRESH_BINARY cv2.THRESH_OTSU) 参数0表示使用Otsu算法计算的阈值。参数cv2.THRESH_BINARY cv2.THRESH_OTSU表示使用Otsu自适应阈值法进行二值化处理。 函数的返回值t2为实际选取的阈值dst2为处理后的二值图像。 使用cv2.putText函数在dst2图像上打印出实际选取的阈值。该函数的参数包括待处理的图像、要绘制的文本内容、文本的起始位置、字体、字体大小、字体颜色、文本的线宽等。 cv2.putText(dst2, best threshold: str(t2), (0, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2) 参数best threshold: str(t2)为要绘制的文本内容。参数(0, 30)为文本的起始位置。参数cv2.FONT_HERSHEY_SIMPLEX为字体类型。参数1为字体大小。参数(0,0,0)为字体颜色即黑色。参数2为文本的线宽。 使用cv2.imshow函数显示处理后的二值图像。参数为展示图像的窗口名称和图像数据。 cv2.imshow(BINARY, dst1) cv2.imshow(OTSU, dst2) 使用cv2.waitKey函数等待按键操作直到按下任意键后关闭窗口。 cv2.waitKey() 关闭所有窗口。使用cv2.destroyAllWindows函数销毁所有已创建的窗口。 cv2.destroyAllWindows()
该代码的作用是对灰度图像进行阈值分割分别使用全局固定阈值和Otsu自适应阈值方法进行二值化处理并展示处理后的结果图像。在Otsu自适应阈值处理后还在结果图像上添加了实际选取的阈值的文本信息。
写在后面
我是一只有趣的兔子感谢你的喜欢