我有一个代码,其中图像转换为B / W. 现在我想建立一个参考原始图像的新图像。
原始图像的输出为X- / Y坐标,黑色和白色的输出为“1”和“0”。
新图像将接收这些信息,但不会按时间顺序显示。 因此,如果已经收到有关特定坐标的信息,则必须检查并提供否定输出,以便可以避免双重输入。
我还没有找到很多相似的例子;只有一些例子正朝着这个方向发展。
有没有人知道如何实现这个目标?
更新:
如果原始图像中的参考像素为黑色(否则会使其变为白色),我构建了将像素从白色图像转换为黑色的代码。
此外,使用的坐标输入到列表中并检查是否使用。
但是,这部分不能正常工作。
虽然之前在循环中使用了坐标[10,10],但代码显示Coordinate not in the system
任何帮助将不胜感激!
import cv2
import numpy
white = cv2.imread('white.jpg') #loading white image
white = cv2.resize(white,(640,480)) #adjusting it to the size of the original image
y = 0 #for testing purposes the white image gets blackened manually
x = 0
j = 0
while j < 50:
content = numpy.zeros((200, 2)) #creating a list with 200 entries, every entry contains 2 values
content = ([x, y]) #adding two values to the list
if condition[y, x] = 1: #condition = 1 means that in the reference picture at this coordinate the pixel is black
white[y,x] = 0 #"0" creates a black pixel at the specified coordinate on the white image
x += 5
y += 5
j += 1
x = 10 #taking a value which already has been used
y = 10
try:
b = content.index([x, y]) #check if coordinate is in the list
except ValueError:
print("Coordinate not in the system")
else:
print("Coordinate already in the system")
i = 0
while i < 100:
cv2.imshow('Bild', white) #displays the image
if cv2. waitKey(1) == ord('q'):
break
答案 0 :(得分:0)
我花了一段时间但是我能够在没有任何复杂列表或数组的情况下解决它。 可能不是最优雅的方式,但至少它是有效的!
我创建了第二张白色图片(=参考),如果已经使用了坐标,则会对其进行比较。 如果未使用坐标,则会创建黑色像素。 下次检查此坐标时,它会找到一个黑色像素,因此知道它已被使用。
最后白色图像将包含49个黑色像素(因为位置[10,10]已被使用且不会被绘制)。
import cv2
import numpy
white = cv2.imread('C:\white.jpg') #loading white image
reference = cv2.imread('C:\white.jpg') #loading white image
white = cv2.resize(white,(640,480)) #adjusting it to the size of the original image
reference = cv2.resize(white,(640,480)) #adjusting it to the size of the original image
y = 0 #for testing purposes the white image gets blackened manually
x = 0
j = 0
reference[10,10] = 0
while j < 50:
if [255,255,255] in reference[y,x]:
reference[y,x] = 0 #"0" creates a black pixel at the specified coordinate on the reference image
white[y,x] = 0 #"0" creates a black pixel at the specified coordinate on the white image
print("Coordinate not in system")
else:
print("coordinate already in system")
x += 5
y += 5
j += 1
i = 0
while i < 100:
cv2.imshow('image copy', white) #displays the image
if cv2. waitKey(1) == ord('q'):
break