opencv打印出一张图片颜色不是黑色的点的坐标,python如何实现
时间: 2024-05-12 07:19:10 浏览: 13
以下是使用Python和OpenCV实现的代码示例,该代码可以打印出一张图片中颜色不是黑色的点的坐标:
```python
import cv2
# 加载图片
image = cv2.imread('image.jpg')
# 遍历图片中的每个像素
for i in range(image.shape[0]):
for j in range(image.shape[1]):
# 获取像素的BGR值
b, g, r = image[i, j]
# 判断是否为黑色
if b != 0 and g != 0 and r != 0:
# 不是黑色,打印坐标
print('Pixel at ({}, {}) is not black'.format(j, i))
```
注意:在上述代码中,我们使用了`image.shape`属性来获取图片的高度和宽度,并使用了嵌套的for循环遍历每个像素。对于每个像素,我们获取其BGR值,并判断是否为黑色。如果不是黑色,则打印该像素的坐标。
相关问题
python实现导入一张图片后,画出通过图片中两个点坐标的直线
您可以使用Python的OpenCV库来实现导入图片并画出通过两个点坐标的直线。下面是一个简单的代码示例:
```python
import cv2
import numpy as np
# 导入图片
image = cv2.imread('image.jpg')
# 两个点的坐标
point1 = (100, 100)
point2 = (200, 200)
# 通过两个点坐标绘制直线
image_with_line = cv2.line(image, point1, point2, (0, 255, 0), 2)
# 显示绘制直线后的图片
cv2.imshow('Image with Line', image_with_line)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码首先使用`cv2.imread()`函数导入一张图片,并将其赋值给`image`变量。然后,您可以指定两个点的坐标,例如`point1`和`point2`。接下来,使用`cv2.line()`函数在原始图片上绘制从`point1`到`point2`的直线,线条颜色为`(0, 255, 0)`(绿色),线条宽度为2像素。最后,使用`cv2.imshow()`函数显示绘制直线后的图片,并使用`cv2.waitKey()`等待按键输入,最后使用`cv2.destroyAllWindows()`关闭显示窗口。
请注意,您需要将代码中的'image.jpg'替换为您要导入的实际图片路径。
基于Python-OpenCV实现蓝色物体检测并打印中心坐标
可以的,以下是Python-OpenCV实现蓝色物体检测并打印中心坐标的代码:
```python
import cv2
# 读取图片
img = cv2.imread('test.jpg')
# 转换颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 设定蓝色阈值
lower_blue = np.array([110, 50, 50])
upper_blue = np.array([130, 255, 255])
# 根据阈值构建掩模
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# 对原图和掩模进行位运算
res = cv2.bitwise_and(img, img, mask=mask)
# 转换为灰度图
gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)
# 二值化
ret,thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓并计算中心坐标
for cnt in contours:
# 计算轮廓面积
area = cv2.contourArea(cnt)
if area > 500:
# 绘制轮廓线条
cv2.drawContours(img,[cnt],-1,(0,255,0),2)
# 计算轮廓中心坐标
M = cv2.moments(cnt)
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
# 在中心点位置绘制圆圈
cv2.circle(img, (cx, cy), 10, (255, 0, 0), -1)
# 打印中心坐标
print("Center coordinate:", cx, cy)
# 显示结果
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,我们首先读入一张图片,并将其转换为HSV颜色空间。然后,我们设定蓝色的阈值,在HSV颜色空间下构建掩模,并对原图和掩模进行位运算,得到蓝色物体的部分。接下来,我们将结果转换为灰度图,并对其进行二值化,以便于查找轮廓。通过查找轮廓并计算轮廓中心坐标,我们可以得到蓝色物体的中心坐标,并将其打印出来。最后,我们在原图中绘制轮廓线条和中心点位置,并将结果显示出来。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)