Maison > Article > développement back-end > Programmation serveur Python : vision par ordinateur avec OpenCV
Avec le développement rapide de la technologie informatique, le domaine de la vision par ordinateur est devenu un domaine de préoccupation pour de plus en plus de programmeurs Python. Cet article expliquera comment utiliser Python et le framework OpenCV pour créer un serveur de vision par ordinateur afin d'implémenter certaines fonctions de base de traitement d'image.
Pour utiliser OpenCV pour le développement de vision par ordinateur, vous devez d'abord installer la bibliothèque OpenCV en Python. Il existe de nombreuses méthodes d'installation. Voici une méthode relativement simple :
Entrez la commande suivante dans la ligne de commande :
pip install opencv-python
De plus, vous pouvez également choisir d'installer d'autres modules OpenCV, tels que :
pip install opencv-contrib-python
Ensuite, nous utiliserons OpenCV pour implémenter certaines fonctions de traitement d'image de base, telles que :
Voici l'implémentation du code :
import cv2 # 读取图像文件 img = cv2.imread("test.jpg") # 显示图像 cv2.imshow("Original Image", img) # 转换图像格式 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 显示灰度图像 cv2.imshow("Gray Image", gray_img) # 裁剪图像 cropped_img = img[100:400, 200:500] # 显示裁剪后的图像 cv2.imshow("Cropped Image", cropped_img) # 缩放图像 resized_img = cv2.resize(img, (800, 600)) # 显示缩放后的图像 cv2.imshow("Resized Image", resized_img) # 滤波图像 blur_img = cv2.GaussianBlur(img, (5, 5), 0) # 显示滤波后的图像 cv2.imshow("Blurred Image", blur_img) cv2.waitKey(0) cv2.destroyAllWindows()
Ce code lira le fichier image nommé "test.jpg" et implémentera les fonctions de traitement d'image de base ci-dessus.
Ensuite, nous utiliserons Flask, le framework Web Python, pour créer un serveur de vision par ordinateur simple et encapsuler les fonctions de traitement d'image ci-dessus sous la forme d'une interface API.
Voici l'implémentation du code :
from flask import Flask, jsonify, request import cv2 app = Flask(__name__) @app.route('/') def index(): return "Welcome to the Computer Vision Server!" @app.route('/api/gray', methods=['POST']) def gray(): # 读取上传的图像文件 img_file = request.files['image'] img = cv2.imdecode(np.fromstring(img_file.read(), np.uint8), cv2.IMREAD_COLOR) # 转换图像格式为灰度 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将灰度图像转换为PNG格式,便于在web上显示 _, encoded_img = cv2.imencode('.png', gray_img) response = {'image': encoded_img.tobytes()} return jsonify(response) @app.route('/api/resize', methods=['POST']) def resize(): # 读取上传的图像文件 img_file = request.files['image'] img = cv2.imdecode(np.fromstring(img_file.read(), np.uint8), cv2.IMREAD_COLOR) # 获取传递的参数 width = int(request.form['width']) height = int(request.form['height']) # 缩放图像 resized_img = cv2.resize(img, (width, height)) # 将缩放后的图像转换为PNG格式,便于在web上显示 _, encoded_img = cv2.imencode('.png', resized_img) response = {'image': encoded_img.tobytes()} return jsonify(response) if __name__ == "__main__": app.run(debug=True, host='0.0.0.0')
Exécutez le code et démarrez le serveur.
Nous pouvons utiliser les requêtes POST pour tester l'interface API que nous venons de construire sur le serveur.
Par exemple, nous pouvons utiliser Postman pour envoyer une image au serveur et appeler l'interface "/api/gray" pour convertir l'image en niveaux de gris.
De même, nous pouvons également appeler l'interface "/api/resize" pour redimensionner l'image.
Grâce à la méthode ci-dessus, nous pouvons facilement tester l'interface API du serveur de vision par ordinateur et implémenter la fonction de traitement d'image côté serveur.
Cet article présente comment créer un serveur de vision par ordinateur à l'aide de Python et du framework OpenCV. En encapsulant les fonctions de base de traitement d’images dans des interfaces API, les utilisateurs peuvent facilement appeler ces fonctions sur le Web. Dans le même temps, la technologie de vision par ordinateur offre un large éventail de scénarios d’application et nous pouvons appliquer ces technologies dans de nombreux domaines, tels que la reconnaissance d’images, la surveillance intelligente, etc.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!