OpenCV操作集锦

  |  

摘要: 本文整理 OpenCV 中常见的操作和小功能,持续更新

【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:算法题刷刷
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


bytes 与 cv2 互相转换

bytes 转 cv2。

1
2
img_buffer_np = np.frombuffer(img_bytes, dtype=np.uint8)
img_np = cv2.imdecode(img_buffer_np, 1)

cv2 转 bytes。

1
2
_, img_encode = cv2.imencode(".jpg", img_np)
img_bytes = img_encode.tobytes(*)

读取 URL 视频流

1
2
3
4
5
6
7
8
9
10
11
url = "http://39.105.154.142:8080/download/videos/myvideo.mp4"

videoCapture = cv2.VideoCapture(url)

success, frame = videoCapture.read()
while success and cv2.waitKey(1) == -1:
cv2.imshow("MyWindow", frame)
success, frame = videoCapture.read()

cv2.destroyWindow("MyWindow")
videoCapture.release()

读取 URL 图像

1
2
3
4
5
6
7
8
9
10
11
12
13
import urllib.request as request

import cv2 as cv
import numpy as np

url = "http://39.105.154.142:8080/download/images/24.jpeg"
response = request.urlopen(url)
img_array = np.array(bytearray(response.read()), dtype=np.uint8)
img = cv.imdecode(img_array, -1)

cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

在 Jupyter Notebook 中用 imshow 显示

  • cv2.imshow

非常关键的是在同一个元胞里加上 cv2.destroyAllWindows(),如果不加就会卡死。

1
2
3
cv2.imshow("cv2.imshow", frame)
cv2.waitKey()
cv2.destroyAllWindows() # 非常重要
  • plt.imshow

OpenCV 图像的通道顺序是 BGR,如果用 plt.imshow 的话需要一步转换。

1
plt.imshow(img[:, :, (2, 1, 0)])

Share