使用opencv库删除图片函数
时间: 2023-12-29 17:03:25 浏览: 117
可以使用OpenCV库中的函数cv2.imread()读取图片,然后使用cv2.imwrite()函数将修改后的图片保存。在此过程中,可以使用OpenCV中的函数cv2.cvtColor()将图片转换为灰度图像,并使用cv2.threshold()函数进行阈值分割。以下是一个示例代码:
```
import cv2
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
cv2.imwrite('new_image.jpg', thresh)
```
这个示例代码将读取名为'image.jpg'的图片,并将其转换为灰度图像。然后使用阈值127进行二值化,并将结果保存为'new_image.jpg'。
相关问题
python opencv 显示图片后,在图片上鼠标绘制矩形并可以选择大小删除
可以使用以下步骤实现:
1. 导入`opencv`库和`numpy`库。
```python
import cv2
import numpy as np
```
2. 加载图片并创建`namedWindow`窗口。
```python
img = cv2.imread('image.jpg')
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
```
3. 定义鼠标事件函数,用于绘制矩形。
```python
drawing = False
ix, iy = -1, -1
def draw_rectangle(event, x, y, flags, param):
global ix, iy, drawing
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix, iy = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), 2)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), 2)
```
4. 将鼠标事件函数与窗口绑定。
```python
cv2.setMouseCallback('image', draw_rectangle)
```
5. 在窗口中等待键盘输入,按下`q`键退出程序,按下`c`键清除所有矩形。
```python
while(1):
cv2.imshow('image', img)
k = cv2.waitKey(1) & 0xFF
if k == ord('q'):
break
elif k == ord('c'):
img = cv2.imread('image.jpg')
```
6. 最后,释放窗口和销毁所有窗口。
```python
cv2.destroyAllWindows()
```
opencv 利用哈希值算法大批量删除数据集中重复的图片
你可以使用哈希值算法来检测和删除数据集中的重复图片。一种常用的哈希算法是感知哈希算法(Perceptual Hashing),它可以将图片转换成一个唯一的哈希值。以下是使用OpenCV和Python进行大批量删除重复图片的基本步骤:
1. 导入所需的库:
```python
import os
import cv2
import imagehash
from PIL import Image
```
2. 定义一个函数来计算图片的哈希值:
```python
def calculate_hash(image_path):
image = Image.open(image_path)
image_hash = imagehash.average_hash(image)
return str(image_hash)
```
3. 创建一个空字典来存储每个哈希值及其对应的图片路径:
```python
hash_dict = {}
```
4. 遍历数据集中的每张图片,计算其哈希值,并将哈希值及其对应的图片路径存储在字典中:
```python
dataset_path = 'your_dataset_path'
for root, dirs, files in os.walk(dataset_path):
for file in files:
image_path = os.path.join(root, file)
image_hash = calculate_hash(image_path)
if image_hash in hash_dict:
hash_dict[image_hash].append(image_path)
else:
hash_dict[image_hash] = [image_path]
```
5. 遍历字典中的每个哈希值,如果该哈希值对应的图片路径数量大于1,则删除重复图片(保留一张即可):
```python
for image_hash, image_paths in hash_dict.items():
if len(image_paths) > 1:
for i in range(1, len(image_paths)):
os.remove(image_paths[i])
```
注意:在删除图片之前,请务必备份你的数据集,以防止误删。
这是一个基本的示例,你可以根据自己的需求进行相应的修改和优化。希望能对你有所帮助!
阅读全文