首先需要在电脑上安装 opencv
brew install opencv
如何验证是否安装成功
brew info opencv
———-
brew info opencv
==> opencv: stable 4.9.0 (bottled)
Open source computer vision library
https://opencv.org/
/usr/local/Cellar/opencv/4.9.0_7 (971 files, 248.1MB) *
Poured from bottle using the formulae.brew.sh API on 2024-04-29 at 17:42:56
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/opencv.rb
License: Apache-2.0
==> Dependencies
Build: cmake ✘, pkg-config ✔, python-setuptools ✘
Required: ceres-solver ✔, eigen ✔, ffmpeg@6 ✔, glog ✔, harfbuzz ✔, jpeg-turbo ✔, libpng ✔, libtiff ✔, numpy ✔, openblas ✔, openexr ✔, openjpeg ✔, openvino ✔, protobuf ✔, python@3.12 ✔, tbb ✔, vtk ✔, webp ✔
==> Analytics
install: 14,197 (30 days), 38,891 (90 days), 139,342 (365 days)
install-on-request: 13,479 (30 days), 36,681 (90 days), 130,415 (365 days)
build-error: 44 (30 days)
————
然后安装 nodejs 包,
我使用 nodejs 16.20 一直安装不成功, 后来改为 14.17.6 安装成功
npm install –save –build-from-source opencv4nodejs
需要等待编译, 耗时比较久, nodejs 安装失败了~~使用 python 也可以, 比较简单,
pip install opencv-python
首先, 我们使用 python 的 opencv, 然后简单对图片进行锐化和降噪!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# -*- coding: utf-8 -*- import cv2 import numpy as np import os import random import string import sys import json import os def process_image(image_name, saturation_factor = 1.5, sharpen_factor = 9, output_filename = 'output.jpg'): """ 处理图像:增加饱和度、去噪并锐化图像。 参数: - image_name: 图像文件名,包括路径。 - saturation_factor: 饱和度增加因子,用于调整图像的饱和度。 - sharpen_factor: 锐化因子,用于调整图像的锐化程度。 返回值: 无。函数将处理后的图像显示在窗口中。 """ # 读取图像文件 image = cv2.imread(image_name) # 将图像从 BGR 转换为 HSV 并增加饱和度 image_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 分离 HSV 图像的通道 h, s, v = cv2.split(image_hsv) # 根据饱和度因子调整饱和度 s = np.clip(s * saturation_factor, 0, 255) image_hsv[:,:,1] = s # 将图像从 HSV 转换回 BGR image = cv2.cvtColor(image_hsv, cv2.COLOR_HSV2BGR) # 使用高斯模糊对图像进行去噪处理 image_blur = cv2.GaussianBlur(image, (5, 5), 0) # 应用锐化 kernel 对图像进行锐化处理 kernel = np.array( [[-1, -1, -1], [-1, sharpen_factor, -1], [-1, -1, -1]] ) image_sharpened = cv2.filter2D(image_blur, -1, kernel) # 显示处理后的图像 # cv2.imshow('处理后的图片', image_sharpened) # cv2.waitKey(0) # cv2.destroyAllWindows() # 保存处理后的图片 # 创建 output 目录 os.makedirs('output', exist_ok=True) # 生成随机文件名 def random_string(length): letters = string.ascii_letters return ''.join(random.choice(letters) for i in range(length)) output_filename = 'output/'+ random_string(8) +'.jpg' # 保存处理后的图片 cv2.imwrite(output_filename, image_sharpened); json_data = json.dumps({ "output": output_filename, "full": os.path.abspath(output_filename) }) return json_data; # 调用 process_image 函数 if __name__ == "__main__": img = sys.argv[1] saturation = sys.argv[2] sharpen = sys.argv[3] result = process_image(img, float(saturation), int(sharpen)) print(result) |
处理完成了我们要使用 js 来调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
const { spawn } = require('child_process'); /**调用Python脚本的函数 * @param {*} saturation 饱和度增加因子,用于调整图像的饱和度。 * @param {*} sharpen 锐化因子,用于调整图像的锐化程度。 * @returns 返回文件的路径 */ function callPythonFunction(img, saturation, sharpen) { return new Promise(function (resolve, reject) { const pythonScript = 'cv.py'; // 替换为您的Python脚本文件名 const pythonProcess = spawn('python3', [pythonScript, img.toString(),saturation, sharpen]); pythonProcess.stdout.on('data', (data) => { const output = JSON.parse(data.toString().trim()); console.log(`处理后的图片路径:`, output); resolve(output); }); pythonProcess.stderr.on('data', (data) => { console.error(data.toString()); reject(); }); }) } // 调用Python函数并传入参数 callPythonFunction('77.jpg', '1.5', '9').then(res => { console.log('======最终处理完的文件========', res); }); |
python 开发的东西, 使用其他语言调用还是很简单的!
1 2 3 4 5 6 7 8 9 10 |
ZBMAC-df4b49abc opencv % node index.js 处理后的图片路径: { output: 'output/YpWZtyOj.jpg', full: '/Users/xxx/Desktop/jd/demoDir/opencv/output/YpWZtyOj.jpg' } ======最终处理完的文件======== { output: 'output/YpWZtyOj.jpg', full: '/Users/xxx/Desktop/jd/demoDir/opencv/output/YpWZtyOj.jpg' } ZBMAC-df4b49abc opencv % |