计算机视觉 OpenCV (6) 像素解决
图
我们读取图片每一个像素值,我们需要一个好用又快速的 python 库来实现操作数组库 numpy。通常会使用 numpy 来遍历图形的每一个像素点。通过修改像素点来改变图像。
也会详情少量我们在 opencv 来用到有关 opencv 的 numpy 常用操作。
def access_pixels(image): print(image.shape) height = image.shape[0] width = image.shape[1] channels = image.shape[2] print("width: %s, height: %s, channels:%s"%(width,height,channels))access_pixels(img)从输出上来看是一个 3 维矩阵,一维 512 为图像宽度而第二个维度 512 为图像高度,最后每个为 3 维像素值,代表图形的 BRG,注意 opencv 读取图片是 BRG 而不是 RGB 格式我们需要进行转换。
(512, 512, 3)width: 512, height: 512, channels:3在 ps 有反色解决,今天我们通过遍历每一个像素而后 255 减去每一个像素值来对图片进行取反。达到反色的效果。
def access_pixels(image): # print(image.shape) height = image.shape[0] width = image.shape[1] channels = image.shape[2] # print("width: %s, height: %s, channels:%s"%(width,height,channels)) for row in range(height): for col in range(width): for c in range(channels): pv = image[row,col,c] image[row,col,c] = 255 -pv cv2.imshow('processed',image)
图片
def create_image(): img = np.zeros([400,400,3],np.uint8) cv2.imshow('img',img)img[:,:,1] = np.ones([400,400])* 255出现一张绿色图片,宽度和高度分别为 400
import cv2import numpy as np# events = [i for i in dir(cv2) if 'EVENT' in i]# print(events)def click_event(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDOWN: cv2.circle(img,(x,y), 3, (0,255,0),-1) points.append((x,y)) if len(points) >= 2: cv2.line(img,points[-1],points[-2], (255,0,0),5) cv2.imshow('image',img)# img = np.zeros((512,512,3),np.uint8)img = cv2.imread('lena.jpg')cv2.imshow('image',img)points = []cv2.setMouseCallback('image',click_event)cv2.waitKey(0)cv2.destroyAllWindows()结合之间学习的鼠标左键事件,以及今天学习通过 numpy 来获取像从来实现在图片进行绘制线条的效果。
图
import cv2import numpy as np# events = [i for i in dir(cv2) if 'EVENT' in i]# print(events)def click_event(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDOWN: blue = img[x,y,0] green = img[x,y,1] red = img[x,y,2] cv2.circle(img,(x,y),3,(0,0,255),-1) mColorImage = np.zeros((512,512,3),np.uint8) mColorImage[:] = [blue,green,red] cv2.imshow('color',mColorImage)# img = np.zeros((512,512,3),np.uint8)img = cv2.imread('lena.jpg')cv2.imshow('image',img)points = []cv2.setMouseCallback('image',click_event)cv2.waitKey(0)cv2.destroyAllWindows()说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 计算机视觉 OpenCV (6) 像素解决
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 计算机视觉 OpenCV (6) 像素解决