写在前面
本文是复现《学习OpenCV3》的代码,同时也是为了学习Python,希望能和各位共同进步
读取图片
c++
#include <opencv2/opencv.hpp>
int main() {
std::string path = "D:/Opencv/adrian.jpg";
cv::Mat img = cv::imread(path);
if (img.empty()) {
return -1;
} else {
cv::namedWindow("Img", cv::WINDOW_AUTOSIZE);
cv::imshow("Img", img);
cv::waitKey(0);
cv::destroyWindow("Img");
}
return 0;
}
Python
import cv2
sImaPath = "D:/Opencv/adrian.jpg"
src = cv2.imread(sImaPath)
if src is None or src.size == 0:
print("图像为空")
else:
cv2.namedWindow("Img", cv2.WINDOW_NORMAL)
cv2.imshow("Img", src)
cv2.waitKey(0)
cv2.destroyWindow("Img")
重要函数
imread()
参数说明:
filename: 要读取的图像文件的路径。
flags(可选参数): 指定图像的读取方式。它是一个整数,可以使用以下标志来设置读取方式:
cv2.IMREAD_COLOR(默认值):加载彩色图像。如果文件是一个带有Alpha通道的PNG图像,忽略Alpha通道。
cv2.IMREAD_GRAYSCALE:加载灰度图像。
cv2.IMREAD_UNCHANGED:加载图像,并保留Alpha通道(如果有的话)。
返回值:
如果图像成功读取,则返回一个numpy数组(ndarray),表示图像的像素值。如果读取失败,返回None。
namedWindow()
参数说明:
winname: 窗口的名称。这是一个字符串,用于标识窗口。每个窗口都应该有一个唯一的名称。
flags(可选参数): 窗口的属性标志。它是一个整数,可以使用以下标志来设置窗口属性:
cv2.WINDOW_NORMAL:允许用户调整窗口大小。
cv2.WINDOW_AUTOSIZE(默认值):窗口大小自动调整以适应图像大小。
imshow()
参数说明:
winname: 窗口的名称。这应该是先前使用cv2.namedWindow创建的窗口的名称。
mat: 要显示的图像数据,通常是一个numpy数组(ndarray)。
destoryWindow()
参数说明:
winname: 要关闭的窗口的名称。这应该是先前使用cv2.namedWindow创建的窗口的名称。
读取视频
c++
#include <opencv2/opencv.hpp>
int main()
{
std::string path = "D:/Opencv/test.avi";
cv::VideoCapture cap(path);
if (!cap.isOpened()) {
std::cerr << "Error opening video file." << std::endl;
return -1;
}
cv::namedWindow("video", cv::WINDOW_NORMAL);
cv::Mat frame;
while (cap.read(frame)) {
cv::imshow("video", frame);
if (cv::waitKey(33) >= 0)
break;
}
return 0;
}
Python
import cv2 as cv
def main():
path = "D:/Opencv/test.avi"
cap = cv.VideoCapture(path)
if not cap.isOpened():
print("Error opening video file.")
return -1
cv.namedWindow("video", cv.WINDOW_NORMAL)
while True:
ret, frame = cap.read()
if not ret:
break
cv.imshow("video", frame)
if cv.waitKey(33) >= 0:
break
cap.release()
cv.destroyAllWindows()
if __name__ == "__main__":
main()