计算机视觉:opencv(一)

cv2.imread() (文件路径,flags) 读取图像
cv2.imshow() (图像title,图片对象) 显示图像
cv2.imwrite() (文件名,图片对象) 保存图像
cv2.split() 通道分离
cv2.merge() 通道融合
cv2.waitKey() 等待按键
cv2.destroyAllWindows() 销毁窗口
cv2.Canny() 边缘检测

图片的读取

图像属性读取
img = cv2.imread(r'C:\Users\Administrator\Desktop\beginning.jpg')
# 行、列和通道的数量(如果图像是彩色的)
dimensions = img.shape
print(dimensions)
# 图像的大小(图像高度 × 图像宽度 × 图像通道数)
total_number_of_elements= img.size
print(total_number_of_elements)
# 图像的类型
image_dtype = img.dtype
print(image_dtype)

在这里插入图片描述

原图像读取
import cv2
img_OpenCV = cv2.imread(r'C:\Users\Administrator\Desktop\beginning.jpg')
cv2.imshow('bgr image', img_OpenCV)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

灰度方式读取
img_OpenCV = cv2.imread(r'C:\Users\Administrator\Desktop\beginning.jpg',cv2.IMREAD_GRAYSCALE)
或
img_OpenCV = cv2.imread(r'C:\Users\Administrator\Desktop\beginning.jpg',2)

cv2.imread参数说明:cv2.imread(文件路径,flags)

文件路径——一般使用绝对路径即可
flags=1——读取前后,图片格式不变
flags=2——读取后,图片格式转为灰度图
flags=3——读取后,图片格式转为BGR三信道图像
在这里插入图片描述

RGB通道更改顺序
b, g, r = cv2.split(img_OpenCV)
img_matplotlib = cv2.merge([r, g, b])

在这里插入图片描述

只显示某一通道
img_OpenCV = cv2.imread(r'C:\Users\Administrator\Desktop\beginning.jpg')
# img_OpenCV[:, :, 0]=0
img_OpenCV[:, :, 1]=0
img_OpenCV[:, :, 2]=0

在这里插入图片描述

读取某个像素点的通道值
img = cv2.imread(r'C:\Users\Administrator\Desktop\beginning.jpg')
(b, g, r) = img[0, 0]
print(b)
print(g)
print(r)
x=img[0, 0,0]
y=img[0, 0,1]
z=img[0, 0,2]
print(x)
print(y)
print(z)

在这里插入图片描述

读取图像的局部

在这里插入图片描述

图像的预处理

图像灰度化
图像去噪声

轮廓识别

OpenCV 提供了函数 cv2.Canny()来实现 Canny 边缘检测,其语法形式如下:
edges = cv.Canny( image, threshold1, threshold2[, apertureSize[, L2gradient]])
其中:
 edges 为计算得到的边缘图像。
 image 为 8 位输入图像。
 threshold1 表示处理过程中的第一个阈值。
 threshold2 表示处理过程中的第二个阈值。
 apertureSize 表示 Sobel 算子的孔径大小。
 L2gradient 为计算图像梯度幅度(gradient magnitude)的标识。其默认值为 False。如果为 True,则使用更精确的 L2 范数进行计算(即两个方向的导数的平方和再开方),否则使用 L1 范数(直接将两个方向导数的绝对值相加)。

import cv2 as cv
import numpy as np


def line_detect_possible_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    edges = cv.Canny(gray, 50, 150, apertureSize=3)  # apertureSize,Canny边缘检测梯度那一步,窗口大小是3
    lines = cv.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=50, maxLineGap=10)  #函数将通过步长为1的半径和步长为π/180的角来搜索所有可能的直线
    #minLineLength-线的最短长度,比这个线短的都会被忽略
    #maxLineGap-两条线之间的最大间隔,如果小于此值,这两条线就会被看成一条线。
    for line in lines:
        print(type(line))
        x1, y1, x2, y2 = line[0]
        cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)
    cv.imshow("line_detect_possible_demo", edges)

src = cv.imread(r'C:\Users\Administrator\Desktop\beginning.jpg')  #读取图片位置
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
line_detect_possible_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

直线检测

霍夫变换

import cv2 as cv
import numpy as np


def line_detect_possible_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    edges = cv.Canny(gray, 50, 150, apertureSize=3)  # apertureSize,Canny边缘检测梯度那一步,窗口大小是3
    lines = cv.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=50, maxLineGap=10)  #函数将通过步长为1的半径和步长为π/180的角来搜索所有可能的直线
    #minLineLength-线的最短长度,比这个线短的都会被忽略
    #maxLineGap-两条线之间的最大间隔,如果小于此值,这两条线就会被看成一条线。
    for line in lines:
        print(type(line))
        x1, y1, x2, y2 = line[0]
        cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)
    cv.imshow("line_detect_possible_demo", image)

src = cv.imread("C:/Users/lenovo/Desktop/opencv/daima/banknum/template-matching-ocr/images/sudoku.png")  #读取图片位置
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
line_detect_possible_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

直线交点检测

已知两直线求交点

def lineCrossLine(p1, p2, q1, q2):
	def pointAndPointToLine(pt0, pt1): ## 由两点得直线的标准方程 ax+by=c
		x0, y0 = pt0
		x1, y1 = pt1
		return (y1-y0, x0-x1, x0 * y1 - y0 * x1)
	a0,b0,c0 = pointAndPointToLine(p1,p2)
	a1,b1,c1 = pointAndPointToLine(q1,q2)
	dd = a0 * b1 - a1 * b0
	if abs(dd) < 1e-6: return None
	return ((c0 * b1 - c1 * b0) / dd, (a0 * c1 - a1 * c0) / dd)

if __name__ == '__main__':
	print(lineCrossLine((0,0),(1,1),(1,1),(1,0)))
	print(lineCrossLine((0,2),(3,0),(3,1),(2,3)))
	print(lineCrossLine((0,2),(0,1),(0,1),(2,3)))
	print(lineCrossLine((0,2),(3,0),(0,4),(6,0)))
	print(lineCrossLine((1,2),(3,5),(1,2),(7,4)))

颜色识别

形状识别

数字识别

图像的保存

cv2.imwrite('data/1.png',img)
  • 8
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: CSDN提供了OpenCV 4计算机视觉Python语言实现的下载。OpenCV是一个流行的计算机视觉库,它提供了在图像和视频处理中常用的函数和工具。Python是一个简单易学的编程语言,也是OpenCV的主要支持语言之一。 要下载OpenCV 4的Python语言实现,可以按照以下步骤进行操作: 1. 首先,打开CSDN网站,并在搜索栏中输入"OpenCV 4计算机视觉:Python语言实现"的关键词。点击搜索按钮。 2. 在搜索结果中找到相应的下载链接。通常,下载链接之前会有一些介绍和说明,可以帮助你理解该资源的相关信息。 3. 点击下载链接,可能需要先进行登录或注册。如果是付费资源,可能需要完成购买。 4. 下载完成后,将下载的文件保存到本地电脑的某个文件夹中。可以选择一个容易找到的位置,方便后续的安装和使用。 5. 解压下载的文件(如果有压缩文件),得到一个文件夹。该文件夹中应该包含有OpenCV 4的Python代码和相关的示例。 6. 打开Python集成开发环境(IDE),例如PyCharm、Anaconda等,并创建一个新的Python项目。 7. 将解压后得到的文件夹中的Python代码复制到新项目的文件夹中。 8. 在Python项目中运行OpenCV 4的Python代码。可以使用IDE提供的运行按钮或者在命令行中运行相应的命令。 通过以上步骤,你可以从CSDN上下载OpenCV 4的Python语言实现,并在本地搭建和运行计算机视觉应用程序。记得阅读附带的文档和示例,以便更好地理解和应用OpenCV 4库中的函数和方法。 ### 回答2: 要在CSDN上下载OpenCV 4计算机视觉Python语言实现的代码,你可以按照以下步骤进行操作: 1. 打开CSDN网站并登录你的账号。 2. 在网站上方的搜索栏中,输入“OpenCV 4计算机视觉Python语言实现”并点击搜索按钮。 3. 在搜索结果列表中找到与你要下载的内容最相关的文章或资源。 4. 点击进入该文章或资源的详细页面。 5. 在详细页面上,你可以找到文章作者提供的代码下载链接,通常会以类似于“Download”、“Code Download”或者“资源下载”等文字来标识。 6. 点击下载链接,你将被重定向到一个新的页面。 7. 在新页面中,你可能需要先进行人机验证(如输入验证码)。 8. 通过验证后,你可以直接点击下载按钮来下载代码资源。 9. 下载完成后,你可以将代码解压缩到你想要保存的文件夹中。 10. 现在,你可以在本地计算机上使用Python编辑器打开代码,进行阅读和运行。 在下载过程中,你可能会遇到广告或其他弹窗,要小心避免误点击。有时,某些资源需要付费或注册后才能下载,所以请确保你已阅读好相关信息。 以上就是在CSDN上下载OpenCV 4计算机视觉Python语言实现的简要步骤说明。希望这对你有帮助! ### 回答3: 要在CSDN上下载OpenCV 4计算机视觉Python语言实现,可以按照以下步骤进行操作: 1. 打开CSDN官网,或者在搜索引擎中搜索CSDN官网进入主页。 2. 在CSDN主页的搜索栏中输入关键词"OpenCV 4计算机视觉 Python",点击搜索图标。 3. 在搜索结果中找到与所需下载相关的文章或教程,点击进入详情页面。 4. 在详情页面中,可以查看相关内容的详细介绍和下载链接。找到合适的下载链接,点击进入下载页面。 5. 在下载页面中,可以选择下载的方式和格式。选择Python版本,并点击下载按钮。 6. 根据浏览器的设置,可能会出现弹窗询问是否保存文件,选择保存文件并选择保存路径。 7. 下载完成后,找到保存路径下的文件,并解压缩(如果需要)。 8. 打开解压后的文件夹,可以看到其中包含的Python代码和相关数据文件。 9. 打开Python开发环境(如Anaconda),创建一个新的Python项目。 10. 将下载的代码文件复制到新项目中,并确保相关依赖项已安装(如OpenCV、NumPy等)。 11. 打开代码文件,按照代码中的说明运行Python程序。 12. 根据需要,可以根据代码的注释和说明进行修改和调试。 13. 运行程序后,可以看到计算机视觉相关的功能实现,例如图像处理、目标检测等。 14. 根据实际需求进行调整和改进,并保存结果或输出。 以上是在CSDN上下载OpenCV 4计算机视觉Python语言实现的一般步骤,具体过程可能因教程和代码的不同而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值