已知像素点的灰度值,如何获取此像素点的坐标值
时间: 2024-01-24 07:20:39 浏览: 51
要获取像素点的坐标值,需要知道图像的大小和像素点的位置。在图像处理中,通常将图像的左上角坐标作为原点,而向右和向下分别为正方向。
假设我们有一幅宽度为W,高度为H的图像,像素点的坐标范围为[0, W-1]和[0, H-1]。如果想获取位于第i行、第j列的像素点的坐标值(x, y),可以使用以下公式:
x = j
y = i
例如,在一幅宽度为800,高度为600的图像中,想要获取位于第100行、第200列的像素点的坐标值,可以计算出:
x = 200
y = 100
因此,该像素点的坐标值为(200, 100)。
相关问题
C++怎么在一幅灰度图像中找到一个已知像素值的所有坐标,并把坐标放到vector容器中返回
可以使用双重循环扫描整幅图像,找到与目标像素值相同的像素点,并将其坐标加入到vector容器中返回。具体代码示例如下:
```
vector<pair<int, int>> findPixel(Mat grayImg, int pixelValue) {
vector<pair<int, int>> pixelCoords;
for (int i = 0; i < grayImg.rows; i++) {
for (int j = 0; j < grayImg.cols; j++) {
if (grayImg.at<uchar>(i, j) == pixelValue) { // 判断像素值是否相同
pixelCoords.push_back(make_pair(i, j)); // 将坐标加入到vector容器中
}
}
}
return pixelCoords;
}
```
其中,grayImg表示输入的灰度图像,pixelValue表示待查找的像素值,返回一个存储坐标的vector容器。
已知一些图像边缘点坐标,在边缘点周围进行像素值的扩散,图像其他部分保持不变具体代码
以下是一个简单的示例代码,假设原始图像为灰度图、边缘点坐标存储在列表 `edge_points` 中、扩散半径为 5:
```python
import cv2
import numpy as np
# 读入原始图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 新数组等于原数组,先将其复制一份
new_img = img.copy()
# 扩散像素值
for x, y in edge_points:
for i in range(-5, 6):
for j in range(-5, 6):
new_x, new_y = x + i, y + j
# 只在边缘点周围扩散像素值
if 0 <= new_x < img.shape[0] and 0 <= new_y < img.shape[1]:
new_img[new_x, new_y] = img[x, y]
# 显示结果
cv2.imshow('new image', new_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码的思路是:先将新数组复制成原数组,然后只在边缘点周围进行像素值扩散,其他部分保持不变。在扩散像素值时,需要判断新坐标是否越界,以避免数组越界的错误。
阅读全文