簡體   English   中英

在for循環中更改像素顏色

[英]Changing pixel color in for-loop

import cv
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import Image
cam = cv2.VideoCapture(0)
s,img1 = cam.read()
height, width, depth = img1.shape
print height, width
for i in range(0,height):
   for j in range(0,width):
      if (img1[i, j] <= [25,25,25]).all():
        img1[i, j] = [255, 0, 128]
      elif ((img1[i, j] > [25,25,25]).all() and (img1[i, j] <= [50,50,50]).all()):
          img1[i,j] = [255, 255, 128]
      elif ((img1[i, j] > [50,50,50]).all() and (img1[i, j] <= [75,75,75]).all()):
          img1[i,j] = [255, 128, 0]
      elif ((img1[i, j] > [75,75,75]).all() and (img1[i, j] <= [100,100,100]).all()):
          img1[i,j] = [0, 255, 0]
      elif ((img1[i, j] > [100,100,100]).all() and (img1[i, j] <= [125,125,125]).all()):
          img1[i,j] = [68, 128, 251]      
      elif ((img1[i, j] > [125,125,125]).all() and (img1[i, j] <= [150,150,150]).all()):
          img1[i,j] = [0, 255, 255]
      elif ((img1[i, j] > [150,150,150]).all() and (img1[i, j] <= [175,175,175]).all()):
          img1[i,j] = [0, 0, 255]
      elif ((img1[i, j] > [175,175,175]).all() and (img1[i, j] <= [200,200,200]).all()):
          img1[i,j] = [128, 128, 128]
      elif ((img1[i, j] > [200,200,200]).all() and (img1[i, j] <= [225,225,225]).all()):
          img1[i,j] = [0, 0, 0]
      elif ((img1[i, j] > [225,225,225]).all() and (img1[i, j] <= [255,255,255]).all()):
          img1[i,j] = [255, 255, 255]
      else:
         img1[i,j] = [0, 60, 0]
      j=j+1
   i=i-1
m=1
while m<2:
  cv2.imshow('pseudocolor',img1)
  cv2.waitKey(10)

在運行此else語句時,效果更好,即我應該怎么做才能為像素值(例如[10、50、2],[23,3,167])賦予不同的顏色,等等。在像素值分配方面存在一些問題.....無法獲取一些像素,這就是為什么else語句可以工作更多次的原因

import cv
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import Image
cam = cv2.VideoCapture(0)
s,img1 = cam.read()
imgg1=img1
height, width, depth = img1.shape
print height, width
for i in range(0,height):
   for j in range(0,width):
      if (img1[i, j] <= [25,25,25]).all():
        img1[i,j] = [255, 255, 255]
        imgg1[i, j] = [255, 0, 128]
      elif (img1[i, j] <= [50,50,50]).all():
          img1[i,j] = [255, 255, 255]
          imgg1[i,j] = [255, 255, 128]
      elif (img1[i, j] <= [75,75,75]).all():
          img1[i,j] = [255, 255, 255]
          imgg1[i,j] = [255, 128, 0]
      elif (img1[i, j] <= [100,100,100]).all():
          img1[i,j] = [255, 255, 255]
          imgg1[i,j] = [0, 255, 0]
      elif (img1[i, j] <= [125,125,125]).all():
          img1[i,j] = [255, 255, 255]
          imgg1[i,j] = [68, 128, 251]      
      elif (img1[i, j] <= [150,150,150]).all():
          img1[i,j] = [255, 255, 255]
          imgg1[i,j] = [0, 255, 255]
      elif (img1[i, j] <= [175,175,175]).all():
          img1[i,j] = [255, 255, 255]
          imgg1[i,j] = [0, 0, 255]
      elif (img1[i, j] <= [200,200,200]).all():
          img1[i,j] = [255, 255, 255]
          imgg1[i,j] = [128, 128, 128]
      elif (img1[i, j] <= [225,225,225]).all():
          img1[i,j] = [255, 255, 255]
          imgg1[i,j] = [0, 0, 0]
      elif (img1[i, j] < [255,255,255]).all():
          img1[i,j] = [255, 255, 255]
          imgg1[i,j] = [255, 255, 255]
      else:
         imgg1[i,j] = [0, 60, 0]
      j=j+1
   i=i-1
m=1
while m<2:
  cv2.imshow('pseudocolor',imgg1)
  cv2.waitKey(10)

以上程序執行似乎需要大約7-8分鍾。 有什么方法可以提高執行速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM