opencv是计算机视觉中的经典专用库,支持多语言、跨平台、功能强大。OpenCV-Python为OpenCV提供了python接口,使用的时候可以直接使用Python调赌C/C++,在保证易读性和运行效率的前提下,实现所需要的功能。

    基础环境

    1. python 3.8.5
    2. pip install numpy
    3. pip install matplotlib
    4. opencv官网下载opencv ,然后采用pip install opencv-python
    5. pycharm工具
    1. import cv2 as cv
    2. print(cv.__version__)
    3. #正确打印出python的版本号则表示opencv安装成功
    1. import cv2 as cv
    2. import numpy as np
    3. from matplotlib import pyplot as plt
    4. # 采用opencv对图片读取 灰色读取等操作
    5. def opencv_example1():
    6. # 读取图像
    7. # cv.IMREAD_COLOR加载彩色图像 -1
    8. # cv.IMREAD_GRAYSCALE灰色模式加载 0
    9. # cv.IMREAD_UNCHANGED加载图像 1
    10. # cv.imread()第一个参数传递图片地址 第二个参数可以传入-1 0 或者1 跟上面的cv.IMREAD_COLOR是一致的
    11. img = cv.imread("images/ly.jpg", -1)
    12. # 显示图像
    13. cv.imshow("ly", img)
    14. # 参数传递为毫秒数 如果你在期间按下按键程序继续运行 否则 一直执行 0的话表示无限期等待
    15. cv.waitKey(0)
    16. # 写入图片到images目录下面 名称为nice.png
    17. cv.imshow("images/nice.png", img)
    18. # destroyAllWindows 表示破坏所有的窗口 如果需要指定关闭某个窗口采用 在创建窗口的时候采用cv.namedWindow() 第一个参数为窗口名称,第二个模式
    19. cv.destroyAllWindows()
    20. # 使用matap和opencv对图片缩放截取
    21. def opencvAndMatp():
    22. # 灰色模式读取图片
    23. img = cv.imread("images/ly.jpg", 0)
    24. plt.imshow(img, cmap="gray", interpolation="bicubic")
    25. plt.xticks([]), plt.yticks([]) # 隐藏x和y轴上的刻度 也就是隐藏x和y的轴值
    26. plt.show()
    27. # 彩色图像加载并且显示在mataplotlib中
    28. def example():
    29. img = cv.imread("images/ly.jpg", -1)
    30. # plt.imshow(img)
    31. # plt.show()
    32. b, g, r = cv.split(img)
    33. # opencv遵行的是BGR形式 所mataplotlib是以BGR形式展示 所以无法正确显示图像
    34. # 需要重新排列一下 所以采用merge重新调整顺序
    35. image2 = cv.merge([r, g, b])
    36. # subplot()
    37. # 是由3个整数构成 第一个表示plot图片的行数 第二个表示plot图片的列数 第三个参数表示所处plot图位置
    38. # 索引位置必须从1开始
    39. # 121 表示1行 2列 索引位置在1
    40. plt.subplot(121)
    41. plt.xticks([]), plt.yticks([])
    42. plt.imshow(img)
    43. cv.cvtColor()
    44. # 121 表示1行 2列 索引位置在1
    45. plt.subplot(122)
    46. # 隐藏ticks
    47. plt.xticks([]), plt.yticks([])
    48. plt.imshow(image2)
    49. plt.show()
    50. cv.imshow("test", img)
    51. cv.imshow("test1", image2)
    52. cv.waitKey(0)
    53. cv.destroyAllWindows()
    54. def example_img():
    55. img = cv.imread("images/ly.jpg", -1)
    56. b, g, r = cv.split(img)
    57. # 转换成rgb给plot展示
    58. image2 = cv.merge([r, g, b])
    59. plt.subplot(121)
    60. plt.xticks([]), plt.yticks([])
    61. plt.imshow(image2)
    62. plt.subplot(122)
    63. # 图片翻转 正值x轴翻转 负数则为y轴转
    64. image2 = cv.flip(image2, 1)
    65. plt.xticks([]), plt.yticks([])
    66. plt.imshow(image2)
    67. plt.show()
    68. if __name__ == '__main__':
    69. # opencvAndMatp()
    70. # example()
    71. example_img()