[雪峰磁针石博客]计算机视觉opcencv工具深度学习快速实战2 opencv快速入门

简介: pandas 0.23.4 官方文档.pdf Python Data Science Handbook - 2017.pdf 《Python数据科学手册》是对以数据深度需求为中心的科学、研究以及针对计算和统计方法的参考书。

opencv基本操作

# -*- coding: utf-8 -*-
# Author:    xurongzhong#126.com wechat:pythontesting qq:37391319
# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入) 
# qq群:144081101 591302926  567351477
# CreateDate: 2018-11-17

import imutils
import cv2

# 读取图片信息
image = cv2.imread("jp.png")
(h, w, d) = image.shape
print("width={}, height={}, depth={}".format(w, h, d))

# 显示图片
cv2.imshow("Image", image)
cv2.waitKey(0)

# 访问像素
(B, G, R) = image[100, 50]
print("R={}, G={}, B={}".format(R, G, B))

# 选取图片区间 ROI (Region of Interest)
roi = image[60:160, 320:420]
cv2.imshow("ROI", roi)
cv2.waitKey(0)

# 缩放
resized = cv2.resize(image, (200, 200))
cv2.imshow("Fixed Resizing", resized)
cv2.waitKey(0)

# 按比例缩放
r = 300.0 / w
dim = (300, int(h * r))
resized = cv2.resize(image, dim)
cv2.imshow("Aspect Ratio Resize", resized)
cv2.waitKey(0)

# 使用imutils缩放
resized = imutils.resize(image, width=300)
cv2.imshow("Imutils Resize", resized)
cv2.waitKey(0)

# 顺时针旋转45度
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, -45, 1.0)
rotated = cv2.warpAffine(image, M, (w, h))
cv2.imshow("OpenCV Rotation", rotated)
cv2.waitKey(0)

# 使用imutils旋转
rotated = imutils.rotate(image, -45)
cv2.imshow("Imutils Rotation", rotated)
cv2.waitKey(0)


# 使用imutils无损旋转
rotated = imutils.rotate_bound(image, 45)
cv2.imshow("Imutils Bound Rotation", rotated)
cv2.waitKey(0)

# apply a Gaussian blur with a 11x11 kernel to the image to smooth it,
# useful when reducing high frequency noise 高斯模糊
# https://www.pyimagesearch.com/2016/07/25/convolutions-with-opencv-and-python/
blurred = cv2.GaussianBlur(image, (11, 11), 0)
cv2.imshow("Blurred", blurred)
cv2.waitKey(0)

# 画框
output = image.copy()
cv2.rectangle(output, (320, 60), (420, 160), (0, 0, 255), 2)
cv2.imshow("Rectangle", output)
cv2.waitKey(0)

# 画圆
output = image.copy()
cv2.circle(output, (300, 150), 20, (255, 0, 0), -1)
cv2.imshow("Circle", output)
cv2.waitKey(0)

# 划线
output = image.copy()
cv2.line(output, (60, 20), (400, 200), (0, 0, 255), 5)
cv2.imshow("Line", output)
cv2.waitKey(0)

# 输出文字
output = image.copy()
cv2.putText(output, "https://china-testing.github.io", (10, 25), 
    cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
cv2.imshow("Text", output)
cv2.waitKey(0)

原图:

图片.png

选取图片区间 ROI (Region of Interest)

图片.png

缩放

图片.png

按比例缩放

图片.png

旋转

图片.png

使用imutils无损旋转

图片.png

高斯模糊

图片.png

画框

图片.png

画圆

图片.png

划线

图片.png

输出文字

Text_screenshot_17.11.2018.png

执行时的输出

$ python opencv_tutorial_01.py 
width=600, height=322, depth=3
R=41, G=49, B=37

本节英文原版代码下载

关于旋转这块,实际上pillow做的更好。比如同样逆时针旋转90度。

opencv的实现:

import imutils
import cv2

image = cv2.imread("jp.png")
rotated = imutils.rotate(image, 90)
cv2.imshow("Imutils Rotation", rotated)
cv2.waitKey(0)

Text_screenshot_17.11.2018.png

pillow的实现:

from PIL import Image

im = Image.open("jp.png")
im2 = im.rotate(90, expand=True)
im2.show()

test.jpg

更多参考: python库介绍-图像处理工具pillow中文文档-手册(2018 5.*)

deep_learning_face_detection_opencv.gif

参考资料

识别俄罗斯方块

# -*- coding: utf-8 -*-
# Author:    xurongzhong#126.com wechat:pythontesting qq:37391319
# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入) 
# qq群:144081101 591302926  567351477
# CreateDate: 2018-11-19
# python opencv_tutorial_02.py --image tetris_blocks.png

import argparse
import imutils
import cv2

ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
    help="path to input image")
args = vars(ap.parse_args())

image = cv2.imread(args["image"])
cv2.imshow("Image", image)
cv2.waitKey(0)

# 转为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray", gray)
cv2.waitKey(0)

# 边缘检测
edged = cv2.Canny(gray, 30, 150)
cv2.imshow("Edged", edged)
cv2.waitKey(0)

# 门限
thresh = cv2.threshold(gray, 225, 255, cv2.THRESH_BINARY_INV)[1]
cv2.imshow("Thresh", thresh)
cv2.waitKey(0)

# 发现边缘
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
    cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]
output = image.copy()

# loop over the contours
for c in cnts:
    # draw each contour on the output image with a 3px thick purple
    # outline, then display the output contours one at a time
    cv2.drawContours(output, [c], -1, (240, 0, 159), 3)
    cv2.imshow("Contours", output)
    cv2.waitKey(0)

# draw the total number of contours found in purple
text = "I found {} objects!".format(len(cnts))
cv2.putText(output, text, (10, 25),  cv2.FONT_HERSHEY_SIMPLEX, 0.7,
    (240, 0, 159), 2)
cv2.imshow("Contours", output)
cv2.waitKey(0)

# we apply erosions to reduce the size of foreground objects
mask = thresh.copy()
mask = cv2.erode(mask, None, iterations=5)
cv2.imshow("Eroded", mask)
cv2.waitKey(0)

# 扩大
mask = thresh.copy()
mask = cv2.dilate(mask, None, iterations=5)
cv2.imshow("Dilated", mask)
cv2.waitKey(0)

# a typical operation we may want to apply is to take our mask and
# apply a bitwise AND to our input image, keeping only the masked
# regions
mask = thresh.copy()
output = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow("Output", output)
cv2.waitKey(0)

原图和灰度图:

图片.png

边缘检测

图片.png

门限

图片.png

轮廓

图片.png

查找结果

图片.png

腐蚀和扩张

图片.png

图片.png

屏蔽和位操作

图片.png

串在一起执行

$ python opencv_tutorial_02.py --image tetris_blocks.png

test.gif

相关文章
|
2月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
98 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
55 1
|
10天前
|
机器学习/深度学习 监控 安全
深度学习驱动下的智能监控革新:图像识别技术的实战应用
【4月更文挑战第16天】 随着人工智能的迅猛发展,深度学习技术在图像处理和分析领域取得了突破性的进展。尤其是在智能监控系统中,基于深度学习的图像识别技术已经成为提高安全水平、实现自动化监控的关键工具。本文聚焦于深度学习在智能监控中的应用,探讨了卷积神经网络(CNN)、递归神经网络(RNN)等先进结构在实时视频流分析和异常行为检测方面的具体实践。通过深入分析多个案例,我们展示了深度学习如何提升监控系统的准确性、效率及智能化程度,同时对面临的挑战和未来发展趋势进行了展望。
13 2
|
3月前
|
机器学习/深度学习 人工智能 监控
探索深度学习在计算机视觉领域的应用
计算机视觉是人工智能领域的重要分支之一,而深度学习技术在这个领域中的应用已经成为了一个热门话题。深度学习的出现,不仅使得计算机视觉的准确性得到了极大的提升,还为我们提供了更多的可能性。本文将探讨深度学习技术在计算机视觉领域中的应用,并讨论其未来的发展前景。
31 0
|
3月前
|
机器学习/深度学习 人工智能 算法
深度学习引领计算机视觉革命
随着深度学习技术的快速发展,计算机视觉领域迎来了一场革命。本文将探讨深度学习在计算机视觉中的应用,包括图像分类、目标检测、图像生成等方面。通过深度学习的强大能力,计算机视觉正在实现更高精度、更广泛的应用,为人们的生活带来了巨大的影响。
|
3月前
|
机器学习/深度学习 算法 TensorFlow
面向计算机视觉的深度学习:6~10
面向计算机视觉的深度学习:6~10
123 0
|
3月前
|
机器学习/深度学习 算法 TensorFlow
面向计算机视觉的深度学习:1~5(4)
面向计算机视觉的深度学习:1~5(4
61 0
|
3月前
|
机器学习/深度学习 数据可视化 算法
面向计算机视觉的深度学习:1~5(3)
面向计算机视觉的深度学习:1~5(3
65 0
|
2月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
41 0
|
16天前
|
编解码 计算机视觉 Python
opencv 图像金字塔(python)
opencv 图像金字塔(python)

热门文章

最新文章