python opencv(간단한 코드)

조회수 921회

안녕하십니까 한창 열심히 공부하던중 모르는것이 생겼습니다.

아무리 헤매봐도 답이 나오질 않네요..

일단 코드를 보여드리겠습니다

처음 코드는 실행결과

이미지

이런식으로 img창을 클릭을 하면 해당 픽셀의 hsv값을 구해서 출력을 하고 어레이 함수를 써서 마스크 이미지를 만든다음 AND시키고 그 값에 해당하는 색만 출력을 하게 만든 코드인데요

아래 코드를 보시는바와 같이 hsv라는 변수가 보이시죠? 저 hsv라는 변수에는 클릭후 픽셀의 hsv값을 불러와 저장시킨 변수입니다 제가 원하는것은 a라는 변수에 hsv변수에 저장된 hsv값을 저장시키고 그 값에 해당하는 마스크이미지를 만들어 출력을 하고 싶습니다.(간단하게 말해서 그림의 파란색을 클릭하면 파란색에 마스크이미지를 씌워 출력을 하고 싶음) 헌데... 이상하게 되질 않네요.... a = hsv 이런식으로 해보았는데 마스크이미지는 전혀 그려지질 않습니다.... 어떤 문제가 있을까요?

import cv2 
import numpy as np 
hsv = 0 
color = 0 
def mouse_callback(event, x, y, flags, param): 
  global hsv, color; 
  if event == cv2.EVENT_LBUTTONDOWN: 
      color = img[y,x] 
      one_pixel = np.uint8([[color]]) 
      hsv = cv2.cvtColor(one_pixel, cv2.COLOR_BGR2HSV) 
      print(hsv) 

cv2.namedWindow('img') 
cv2.setMouseCallback('img', mouse_callback) 
while True : 
  img = cv2.imread('D:\Image\TT.jpg') 
  img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 
  a=[[[130,255,255]]] 
  lower = np.array(a) 

  img_mask = cv2.inRange(img_hsv,lower,lower) 
  img_bitwise = cv2.bitwise_and(img_hsv, img_hsv, mask=img_mask) 
  img_bitwise = cv2.cvtColor(img_bitwise, cv2.COLOR_HSV2BGR) 
  cv2.imshow('img_bitwise', img_bitwise) 
  cv2.imshow('img_mask', img_mask) 
  cv2.imshow('img',img) 
  if cv2.waitKey(1) > 0 : break 
cv2.destroyAllWindows() 
  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)