如何去模糊img = img.resize((w, h), 4)
时间: 2024-05-07 15:21:38 浏览: 175
如果你想对图片进行模糊处理,可以使用PIL库中的ImageFilter模块。具体操作如下:
```python
from PIL import ImageFilter
# 读取图片
img = Image.open("your_image.jpg")
# 对图片进行模糊处理
blurred_img = img.filter(ImageFilter.GaussianBlur(radius=10))
# 保存模糊处理后的图片
blurred_img.save("blurred_image.jpg")
```
在上面的代码中,我们使用了GaussianBlur滤镜对图片进行了模糊处理。其中radius参数用于控制模糊程度,数值越大,图片越模糊。你可以根据自己的需要调整这个参数的值。
相关问题
写出下列代码可以实现什么功能: #Img = cv2.undistort(Img, K, Dist) Img = cv2.resize(Img,(240,180),interpolation=cv2.INTER_AREA) #将opencv读取的图片resize来提高帧率 img = cv2.GaussianBlur(Img, (5, 5), 0) imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # 将BGR图像转为HSV lower = np.array([h_min, s_min, v_min]) upper = np.array([h_max, s_max, v_max]) mask = cv2.inRange(imgHSV, lower, upper) # 创建蒙版 指定颜色上下限 范围内颜色显示 否则过滤 kernel_width = 4 # 调试得到的合适的膨胀腐蚀核大小 kernel_height = 4 # 调试得到的合适的膨胀腐蚀核大小 kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (kernel_width, kernel_height)) mask = cv2.erode(mask, kernel) mask = cv2.dilate(mask, kernel) mask = cv2.dilate(mask, kernel) light_img = mask[:100,:200 ] cv2.imshow("light",light_img) # 输出红绿灯检测结果 Img1 = Img Img = cv2.cvtColor(Img, cv2.COLOR_BGR2RGB) Img2 = Img cropped2 = Img2[70:128, 0:100] h,w,d = cropped2.shape #提取图像的信息 Img = Image.fromarray(Img) Img = ValImgTransform(Img) # 连锁其它变形,变为tesor Img = torch.unsqueeze(Img, dim=0) # 对tesor进行升维 inputImg = Img.float().to(Device) # 让数据能够使用 OutputImg = Unet(inputImg) Output = OutputImg.cpu().numpy()[0] OutputImg = OutputImg.cpu().numpy()[0, 0] OutputImg = (OutputImg * 255).astype(np.uint8) Input = Img.numpy()[0][0] Input = (Normalization(Input) * 255).astype(np.uint8) OutputImg = cv2.resize(OutputImg,(128,128),interpolation=cv2.INTER_AREA) # 将opencv读取的图片resize来提高帧率 ResultImg = cv2.cvtColor(Input, cv2.COLOR_GRAY2RGB) ResultImg[..., 1] = OutputImg cropped = ResultImg[80:128, 20:100] cropped1 = OutputImg[80:128, 20:100] cv2.imshow("out", cropped1)#显示处理后的图像 cv2.imshow("Img2", Img2) cv2.imshow("Img0", cropped)#显示感兴趣区域图像 print(reached)
这段代码实现的功能是:
1. 读取图像并进行图像去畸变操作,使用cv2.undistort函数。
2. 将图像的大小调整为240x180像素,使用cv2.resize函数。
3. 对图像进行高斯模糊处理,使用cv2.GaussianBlur函数。
4. 将图像从BGR色彩空间转换为HSV色彩空间,使用cv2.cvtColor函数。
5. 创建一个掩码(mask),根据指定的颜色上下限范围过滤出感兴趣的颜色区域,使用cv2.inRange函数。
6. 对掩码进行膨胀和腐蚀操作,使用cv2.erode和cv2.dilate函数。
7. 提取红绿灯区域的图像并显示,使用cv2.imshow函数。
8. 对图像进行一系列处理,包括转换色彩空间、裁剪、调整大小等操作。
9. 使用神经网络模型(Unet)对图像进行处理,并得到处理后的图像。
10. 对处理后的图像进行显示,使用cv2.imshow函数。
11. 打印变量"reached"的值。
请注意,该代码片段缺少一些必要的导入语句和变量定义语句,因此无法单独运行。
def locate_carPlate(car_pic, resize_rate=1): # 预处理图像 img = car_pic pic_hight, pic_width = img.shape[:2] if pic_width > MAX_WIDTH: pic_rate = MAX_WIDTH / pic_width img = cv2.resize(img, (MAX_WIDTH, int(pic_hight * pic_rate)), interpolation=cv2.INTER_LANCZOS4) # cv2.imshow("img", img) if resize_rate != 1: img = cv2.resize(img, (int(pic_width * resize_rate), int(pic_hight * resize_rate)), interpolation=cv2.INTER_LANCZOS4) pic_hight, pic_width = img.shape[:2] blur = cfg["blur"] if blur > 0: img = cv2.GaussianBlur(img, (blur, blur), 0) # 图片分辨率调整 oldimg = img img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将BGR格式转换成灰度图片 # cv2.imshow("gray", img) kernel = np.ones((20, 20), np.uint8) img_opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) # 开运算 # cv2.imshow("opening", img_opening) img_opening = cv2.addWeighted(img, 1, img_opening, -1, 0) # 图像叠加,img - img_opening # cv2.imshow("opening", img_opening) ret, img_thresh = cv2.threshold(img_opening, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # 阈值处理 # cv2.imshow("tresh", img_thresh) img_edge = cv2.Canny(img_thresh, 100, 200) # 边缘检测 # cv2.imshow("edge", img_edge) kernel = np.ones((cfg["morphologyr"], cfg["morphologyc"]), np.uint8) img_edge1 = cv2.morphologyEx(img_edge, cv2.MORPH_CLOSE, kernel) # 闭运算 # cv2.imshow("edge1", img_edge1) img_edge2 = cv2.morphologyEx(img_edge1, cv2.MORPH_OPEN, kernel) # cv2.imshow("edge2", img_edge2)
这段代码是用来定位车牌的,首先对图片进行预处理,包括对图片进行缩放、高斯模糊、灰度化、开运算、阈值处理、边缘检测和闭运算等操作,最终得到一个可以用来定位车牌的图像。其中,MAX_WIDTH是一个常量,表示图片的最大宽度;blur表示高斯模糊的半径大小;morphologyr和morphologyc是闭运算和开运算的卷积核大小。这段代码是车牌识别算法中比较重要的部分,通过这些处理可以将车牌从原始图片中准确地定位出来。
阅读全文
相关推荐














