赞
踩
探索新大陆:Python&OpenCV,本文主要记录入门计算机视觉的一些简单程序。
安装opencv库:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python
"""
作者:Want595
微信号:Want_595
公众号:Want595
"""
import 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,即将图像填充为白色。然后展示该图像,以便可以看到所创建图像的效果。
"""
作者:Want595
微信号:Want_595
公众号:Want595
"""
import 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颜色空间的版本,以便更好地理解图片的颜色信息。
"""
作者:Want595
微信号:Want_595
公众号:Want595
"""
import 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三个通道的图片,并分别展示出来。
"""
作者:Want595
微信号:Want_595
公众号:Want595
"""
import numpy as np
import cv2
canvas = 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函数绘制直线。该函数的参数依次为:画布,起点坐标,终点坐标,颜色,线条粗细。
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()
"""
作者:Want595
微信号:Want_595
公众号:Want595
"""
import cv2
image = 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自适应阈值处理后,还在结果图像上添加了实际选取的阈值的文本信息。
我是一只有趣的兔子,感谢你的喜欢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。