# 创建窗口和滑动条 cv2.namedWindow('img', cv2.WINDOW_AUTOSIZE) cv2.setMouseCallback('img', callback, "userdata") cv2.createTrackbar('H', 'img', 0, 360, callback) cv2.createTrackbar('S', 'img', 0, 100, callback) cv2.createTrackbar('V', 'img', 0, 100, callback) # 读取图片 path = filedialog.askopenfilename() img=Image.open(path) img = np.asarray(img).astype(np.float32) / 255.0 # 转化RGB图片为HSV图片 hsvimg = cv2.cvtColor(img, cv2.COLOR_RGB2HSV) hsv_img = np.copy(hsvimg) while True: H = cv2.getTrackbarPos('H', 'img') S = cv2.getTrackbarPos('S', 'img') V = cv2.getTrackbarPos('V', 'img') # 调节H,S,V hsv_img[:, :, 0] = H + hsvimg[:, :, 0] # 0-360 # hsv_img[:, :, 0][hsv_img[:, :, 1] > 360] = 360 hsv_img[:, :, 1] = (1.0 + S / 100) * hsvimg[:, :, 1] # 0-1 hsv_img[:, :, 1][hsv_img[:, :, 1] > 1] = 1 hsv_img[:, :, 2] = (1.0 + V / 100) * hsvimg[:, :, 2] # 0-1 hsv_img[:, :, 2][hsv_img[:, :, 2] > 1] = 1 # 显示图片 new_img = cv2.cvtColor(hsv_img, cv2.COLOR_HSV2BGR) cv2.imshow("img", new_img) new = new_img * 255 # cv2.resizeWindow('img',(640,480)) key = cv2.waitKey(1) if key & 0xFF == ord('q'): break elif key & 0xFF == ord('s'): save_path = filedialog.asksaveasfilename() cv2.imwrite(save_path, new) cv2.destroyAllWindows()
如下小程序为使用 python + opencv 将表格 图片 ,按照表格进行分割,并识别分割后的子 图片 中的文字,希望对需要的小伙伴有一些些帮助。具体的实现见如下代码。 # -*- coding: utf-8 -*- Created on Tue May 28 19:23:19 2019 将 图片 按照表格框线交叉点分割成子 图片 (传入 图片 路径) @author: hx import cv2 import numpy as np import pytesseract image = cv2.imread('C:/Users/Administrator/Desktop/7.jpg', 1) fImg = img.astype(np.float32) fImg = fImg / 255.0 # HLS空间,三个通道分别是: Hue色相、lightness明度、saturation 饱和度 # 通道0是色相、通道
python opencv 把一张 图片 嵌入(叠加)到另一张 图片 上 1、背景: 最近做了个烟火生成系统的界面设计,需要将烟雾 图片 嵌入到任意一张 图片 中,因此需要 python opencv 把一张 图片 嵌入(叠加)到另一张 图片 上的知识。(图中红框最终生成 图片 没有的,只是界面有这个功能) resized1[global_y0:height+global_y0, global_x0:weight+global_x0] = resized0 resized0是小图 resized1是大图,其他参数是左上点和右下点 3、效果图 工程中部分代码 这个是截取我pyqt5中部分代码,具体实现,可以借鉴一下
# 按指定图像大小调整尺寸 def resize_image(image, height = 640, width = 480): top, bottom, left, right = (0,0,0,0) # 获取 图片 尺寸 h, w, _ = image.shape # 对于长宽不等的 图片 ,找到最长的一边 longest_edge = max(h,w) # 计算短边需要增加多少像素宽度才能与长边等长(相当于pad
Photoshop 的色相/ 饱和度 调整,可以对全图、红、黄、绿、青、蓝、洋红六个通道进行设置。每个通道可设置: 色相(hue), 饱和度 (satuation), 明度(Lightness)三个调整值。 另包含 多个颜色空间转换函数
import matplotlib.pyplot as plt #读取 图片 代码 img = cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE) #IMREAD_COLOR = 1 #IMREAD_UNCHANGED = -1 #展示 图片 cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() #使用matplotlib分析 图片 #plt.imshow
饱和度 调整算法说明(完整 python 代码在文末): 本算法主要是利用HSL颜色空间进行 饱和度 S的上下限控制,对RGB空间进行补丁式调整。调整过程在RGB空间进行,其原理简单地说就是判断每个像素的R、G、B值是否大于或小于平均值,大于加上调整值,小于则减去调整值,如何计算各个像素点的调整系数是关键。本算法主体思想就是利用HSL来计算各点的调整系数。 算法过程如下: (参考CSDN博客:http...
# 色温调整 hsv_image[:, :, 1] = np.clip(hsv_image[:, :, 1] * 0.7, 0, 255) hsv_image[:, :, 2] = np.clip(hsv_image[:, :, 2] * 0.7, 0, 255) 在上面的代码中,我们将 色调 减小了10度,并将 饱和度 亮度 分别乘以0.7来降低色温。 3. 将 图片 转换回 BGR 色彩空间并保存。 ``` python output_image = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2BGR) cv2.imwrite("output.jpg", output_image) 完整代码如下: ``` python import cv2 import numpy as np image = cv2.imread("image.jpg") hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 色调 调整 hsv_image[:, :, 0] = (hsv_image[:, :, 0] - 10) % 180 # 色温调整 hsv_image[:, :, 1] = np.clip(hsv_image[:, :, 1] * 0.7, 0, 255) hsv_image[:, :, 2] = np.clip(hsv_image[:, :, 2] * 0.7, 0, 255) output_image = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2BGR) cv2.imwrite("output.jpg", output_image)