#ifndef DAY02
#define DAY02
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
void day02() {
Mat src = imread("E:\\_Image\\OpenCVTest\\girl.jpg");
if (src.empty()) {
cout << "could not load image.." << endl;
return;
namedWindow("show", WINDOW_AUTOSIZE);
imshow("show", src);
Mat gray;
cvtColor(src, gray, COLOR_BGR2GRAY);
namedWindow("gray", WINDOW_AUTOSIZE);
imshow("gray", gray);
imwrite("E:\\_Image\\OpenCVTest\\girl_gray.jpg", gray);
if (gray.type() == CV_8UC1) {
//input image is grayscale
cout << "gray" << endl;
else {
//input image is colour
cout << "color" << endl;
waitKey(0);
#endif // !DAY02
注意事项:
1、COLOR_GRAY2BGR 要求图像的类型是 CV_8UC1。该函数的原理是将图像的通道变多,但是每个像素点三通道的像素值还是一样!所以即使转换成功,图像依旧是灰色的。
2、读取图像的 imread() 函数有第二个参数,其默认值是 IMREAD_COLOR ,即将加载的图像总是转换为彩色图像。转换后图像的类型是 CV_8UC3。
Python代码
import cv2 as cv
# 查看版本
print(cv.__version__)
# 读取图像
src = cv.imread("E:/_Image/OpenCVTest/girl.jpg")
# 显示图像
cv.imshow("input", src)
# 彩色转灰度
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
# 显示图像
cv.imshow("gray", gray)
# 保存图像
cv.imwrite("E:/_Image/OpenCVTest/girl_gray.jpg", gray)
# 等待键盘输入
cv.waitKey()
# 释放内存
cv.destroyAllWindows()
// 官方文档链接:https://docs.opencv.org/4.5.0/db/d64/tutorial_js_colorspaces.html
const cv = window.cv
// 读取图像
const src = cv.imread('imageSrcRaw')
// 转换为灰度图
const gray = new cv.Mat()
cv.cvtColor(src, gray, cv.COLOR_RGBA2GRAY, 0)
// 显示图像
cv.imshow('canvasOutput', gray)
// opencv.js不支持imwrite方法
// 销毁所有 mat 释放内存
src.delete()
gray.delete()
注意事项:
1、opencv.js 不支持 imwrite 方法。仔细想想也可以理解,毕竟是 web 端程序,不可以随意往服务器端保存东西呀。
2、但是,如果看官用的是 opencv4nodejs,它是提供 imwrite 方法的,亲测。这是专门用于服务器端的 opencv,注意我说的是服务器端,而不是 web 端。意思是 opencv4nodejs 可以用于 nodejs 写的服务器端,但是直接在浏览器是无法运行的。具体如何安装 opencv4nodejs 可以看我写的这篇文章:OpenCV-npm安装opencv4nodejs(Windows)
3、官方文档链接:https://docs.opencv.org/4.5.0/db/d64/tutorial_js_colorspaces.html
返回总目录
OpenCV4学习笔记 - 目录
如果这篇文章对您有帮助,欢迎给我的 github项目 点一个⭐ ο(=•ω<=)ρ⌒☆
知识点:1、图像保存— imwrite第一个参数是图像保存路径第二个参数是图像内存对象2、色彩空间转换函数 — cvtColorCOLOR_BGR2GRAY = 6 彩色到灰度COLOR_GRAY2BGR = 8 灰度到彩色COLOR_BGR2HSV = 40 BGR到HSVCOLOR_HSV2BGR = 54 HSV到BGR#ifndef DAY02...
简单几何图像一般包括点、直线、矩阵、圆、椭圆、多边形等等。首先认识一下opencv对像素点的定义。图像的一个像素点有1或者3个值,对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值,他们表现出不同的颜色。
那么有了点才能组成各种多边形。
(一)首先绘制直线
函数为:cv2.line(img,Point pt1,Point pt2,color,thickness=1,line_type=
图像数据有图像的属性、类型、行数、列数、大小、深度、通道
let img=cv.imread('canvasInput')
console.log("img size :",img.size())
console.log('img type :',img.type())
console.log('img c...
opencv-contrib-python和opencv-python都是针对OpenCV计算机视觉库的Python接口。opencv-python是OpenCV的Python接口的官方版本,提供了基本的计算机视觉功能,包括图像处理、目标检测、视频分析等。opencv-contrib-python是OpenCV的Python扩展包,提供一些额外的计算机视觉功能。这些功能包括3D重建、特征检测、跟踪、人脸识别等。
OpenCV-contrib-python是OpenCV的扩展包,在opencv-python的基础上添加了很多额外的功能,由OpenCV社区其他开发者贡献,它提供了更多的识别和跟踪算法,如SIFT、SURF等,还提供了更多的人脸检测算法,如Facedetect和Cascade_classifier等。不过,使用OpenCV-contrib-python需要注意版本的兼容性问题,因为其版本更新频率比OpenCV-python高,需要根据自己的需求来选择适合的版本。
总之,opencv-contrib-python是opencv-python的扩展,提供了更多的计算机视觉功能,需要注意版本兼容性问题。用户可以根据实际需求,选择相应的版本,或者根据自己的开发需求进行选择。