我是 OpenCV 的新手,我正在尝试从图像中获取圆形的像素。
例如,我在随机图像上画一个圆圈:
import cv2
raw_img = cv2.imread('sample_picture.png')
x = 50
y = 50
rad = 20
cv2.circle(raw_img,(x,y),rad,(0,255,0),-1)
cv2.imshow('output', raw_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
输出显示带有圆圈的图像。但是,我希望能够以数组的形式获取圆上的所有像素。有什么办法可以做到这一点吗?我知道我可以从圆公式中得到近似坐标,但是它会涉及大量的小数计算,而且我很确定函数cv2.circle()已经计算出了像素,那么有没有办法得到它是从函数本身中得出的,而不是计算我自己?
另外,如果可能的话,我想使用cv2.ellipse()获取椭圆的像素作为坐标数组。但这一次,我只想从椭圆的一部分(从某个角度到另一个角度,我可以在 cv2.ellipse() 的参数中指定)获取像素。
谢谢。
嗨,我是 python 新手,我正在尝试将 2d numpy 数组保存到 png 文件中。
我的 2d numpy 数组中的每个元素都是 0 ~ 100 之间的整数,我有一个getColor()函数将它映射到 rgb 值。我现在正在做的方法是构建一个与我的 2d numpy 数组形状相同的 3 通道 numpy 数组,并将每个值映射到相应的 rgb 值。然而,这需要很多时间,我觉得应该有一种更有效的方法来做到这一点。我的代码目前需要大约 5 秒来处理一张图像。
import numpy as np
import imageio
flt_m = get2dArray() # returns a (880*880) numpy array
def getColor(value):
if(value < 0):
return (0,0,0)
elif(value < 50):
return (100,150,200)
else:
return (255,255,255)
canvas = np.zeros((flt_m.shape[0], flt_m.shape[1], 3)).astype(np.uint8)
for row in range(flt_m.shape[0]):
for col in range(flt_m.shape[1]):
rgb = getColor(flt_m[row, col])
for i …Run Code Online (Sandbox Code Playgroud) 我是c ++的新手,我想使用指针将float数组传递出函数。但是,返回的数组始终为0;我在Arduino Uno上运行。
这是我的代码。我希望readSensor()函数传递一个包含3个float的float数组。浮点数组应传递给指针输出*。但是,当我打印出读数时,它显示的是0.00,而不是我传递的值。
void setup() {
Serial.begin(9600);
}
void loop() {
float readings[3];
readSensor(readings);
for (int i = 0;i < 3;i++) {
Serial.println(readings[i]);
}
delay(1000);
}
// pass out these 3 floats
float val1 = 3.14159;
float val2 = 2.741;
float val3 = 87;
void readSensor(float* output) {
float container[3] = {val1, val2, val3};
output = container;
}
Run Code Online (Sandbox Code Playgroud)