OpenCV4(2)-保存图像与色彩空间的转换(C++,Python,JS)

 

目录

环境

知识点

C++代码

Python代码

JS代码

结果展示

返回总目录


环境

  • Python:3.6.5 OpenCV 4.1.2
  • C++:OpenCV 4.1.2
  • JS:OpenCV 4.5.0

环境搭建可参考:B站视频

欢迎访问博主搭建的 在线运行平台 (o゜▽゜)o☆

知识点

1、图像保存 — imwrite

第一个参数是图像保存路径

第二个参数是图像内存对象

2、色彩空间转换函数 — cvtColor

COLOR_BGR2GRAY = 6 彩色到灰度

COLOR_GRAY2BGR = 8 灰度到彩色

COLOR_BGR2HSV = 40 BGR到HSV

COLOR_HSV2BGR = 54 HSV到BGR

C++代码

#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()

JS代码

// 官方文档链接: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项目 点一个⭐ ο(=•ω<=)ρ⌒☆

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apple_Coco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值