读取图像
C++版本
imread( const String& filename, int flags = IMREAD_COLOR )
filename // 图片路径
flags // 以彩色图或灰度图的方式进行读取
IMREAD_GRAYSCALE = 0 // 灰度图
IMREAD_COLOR = 1 // 彩色图(默认)
namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE)
winname // 窗口名称
flags // 窗口属性
WINDOW_NORMAL // 可拖动改变大小
WINDOW_AUTOSIZE // 自动调整适应图片大小
imwrite(const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>())
filename // 文件名
img // 对象名
Mat src = imread("./test.png", IMREAD_GRAYSCALE);
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input", src);
waitKey(0);
Python版本
cv.imread()
cv.imshow()
import cv2 as cv
src = cv.imread("./test.png")
print(type(src)) // <class 'numpy.ndarray'>
print(src.dtype) // uint8
print(src.shape) // (610, 570, 3)
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
cv.waitKey(0)
cv.destroyAllWindows()
转化为灰度图
C++版本
cvtColor(src, gray, COLOR_BGR2GRAY)
src // input
gray // output
COLOR_BGR2GRAY //RGB图转为GRAY灰度图
默认三个通道顺序是: B, G, R
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int artc, char** argv) {
Mat src = imread("./test.png", IMREAD_COLOR);
if (src.empty()) {
printf("could not load image...\n");
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input", src);
Mat gray;
cvtColor(src, gray, COLOR_BGR2GRAY);
imwrite("./gray.png", gray);
namedWindow("gray", WINDOW_AUTOSIZE);
imshow("gray", gray);
waitKey(0);
return 0;
}
Python版本
src = cv.imread("./test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imwrite('gray.png', gray)
cv.imshow("gray", gray)
cv.waitKey(0)
cv.destroyAllWindows()
灰度图