输出 opencv 中 mark 点的坐标,python 实现
时间: 2023-05-23 20:02:09 浏览: 79
可以使用 OpenCV 的函数 findNonZero() 来查找标记点的坐标。
以下是实现代码:
```
import cv2
image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
# 取第一个轮廓点
cnt = contours[0]
# 使用函数 findNonZero 查找标记点的坐标
pts = cv2.findNonZero(cnt)
for pt in pts:
print(pt)
```
这个代码会输出标记点的坐标。注意,这里假设图像中只有一个轮廓。如果图像中有多个轮廓,需要进行修改。
相关问题
opencv角点检测坐标python
可以使用OpenCV中的cornerHarris函数来进行角点检测,该函数会返回检测到的角点的坐标。以下是一个Python示例代码:
```
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 进行角点检测
dst = cv2.cornerHarris(gray, 2, 3, .04)
# 标记角点
img[dst > .01 * dst.max()] = [, , 255]
# 显示结果
cv2.imshow('corners', img)
cv2.waitKey()
cv2.destroyAllWindows()
```
其中,cornerHarris函数的参数含义如下:
- gray:灰度图像
- 2:角点检测窗口大小
- 3:Sobel算子的孔径大小
- .04:角点响应函数的参数k值
最后,通过dst > .01 * dst.max()来筛选出响应值较大的角点,并在原图上标记出来。
python opencv 中文_Python OpenCV实现图片上输出中文
在 Python OpenCV 中输出中文需要先安装中文字体库,然后使用 Pillow 库把中文字体转换为 OpenCV 可以识别的格式,最后使用 OpenCV 在图片上绘制中文。
以下是一个简单的示例代码:
```python
import cv2
from PIL import Image, ImageDraw, ImageFont
# 读取图片
img = cv2.imread("image.jpg")
# 转换为 PIL Image 格式
pil_img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 获取字体
font_path = "fonts/simhei.ttf"
font = ImageFont.truetype(font_path, 36)
# 在 PIL Image 上绘制中文
draw = ImageDraw.Draw(pil_img)
draw.text((100, 100), "你好,世界!", font=font, fill=(255, 0, 0))
# 转换回 OpenCV 格式
cv2_img = cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGB2BGR)
# 显示图片
cv2.imshow("image", cv2_img)
cv2.waitKey(0)
```
其中,`font_path` 是字体文件的路径,可以根据自己需要修改,`font_size` 是字体大小,`draw.text()` 中的 `(100, 100)` 表示文字的位置,可以根据自己需要修改。最后,使用 `cv2.imshow()` 显示图片。
需要注意的是,如果要在 Windows 环境下输出中文,需要将字体文件复制到 `C:\Windows\Fonts` 目录下。