学习教程
思考题
- Opencv库与Matlab、halcon的区别?
Halcon
:底层功能算法多,运算性能快,功能齐全,容易上手,开发项目周期短。非开源项目,商用收费,价格较贵。
OpenCV
:功能算法相对较多(比Halcon少),开源,可用于商用,开发周期较长(比Halcon长),有些算法要自己写。轻量且高效。
Matlab
:Matlab一般用于快速实现算法和测试,用于研究理论,OpenCV适合开发实际的图像处理或视觉的应用。 - 为什么是
import cv2
?
此处 ‘2’ 表示的并不是opencv的版本号,OpenCV是基于C/C++的,”cv”和”cv2”表示的是底层C API和C++API的区别,”cv2”表示使用的是C++API。 - 在显示完之后,用不用
cv.destroyWindow()
有什么区别?
cv.destroyWindow()
用来一个特定的窗口 - png图片格式和jpg图片格式有什么区别?
PNG是无损压缩的图片,JPG是有损压缩;PNG支持透明,JPG不支持。
练习题
- 同时显示两张不同分辨率的图片,对比他们的大小;
import numpy as np
import cv2 as cv
img1 = cv.imread('1.png', cv.IMREAD_COLOR)
cv.imshow('image1', img1)
img1_size=img1.shape
print("img1分辨率:",img1_size)
img2 = cv.imread('2.jpg', cv.IMREAD_COLOR)
cv.imshow('image2', img2)
img2_size=img2.shape
print("img1分辨率:",img2_size)
cv.waitKey(0)
cv.destroyAllWindows()
- 使用Opencv,测试一下你电脑摄像头的分辨率和帧率是多少;
import numpy as np
import cv2 as cv
video = cv.VideoCapture(r"WIN_20210207_16_19_01_Pro.mp4")
while video.isOpened():
ret, frame = video.read()
if ret:
cv.imshow("frame", frame)
else:
print("视频播放完成!")
break
key = cv.waitKey(25)
if key == 27:
break
cv.imshow('frame', frame)
fps = video.get(cv.CAP_PROP_FPS)
size = (int(video.get(cv.CAP_PROP_FRAME_WIDTH)), int(video.get(cv.CAP_PROP_FRAME_HEIGHT)))
print("帧率:",fps)
print("分辨率:",size)
video.release()
cv.destroyAllWindows()
- 利用电脑摄像头从外界拍摄一幅自己的图像,添加圆(或其他图形)给自己打码,图片右下角添加自己的网名和时间。
import numpy as np
import cv2 as cv
img = cv.imread('WIN_20210207_16_27_37_Pro.jpg', cv.IMREAD_COLOR)
cv.circle(img,(900,380), 180, (10,10,225), -1)
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img,'ViTO 02/07 16:43',(950,700), font, 1,(255,255,255),2,cv.LINE_AA)
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()