Python+OpenCV 그림 부분 영역 픽 셀 값 처리 개선 판 상세 설명

지난 버 전의Python OpenCV 그림 부분 영역 픽 셀 값 처리제 가 필요 로 하 는 기능 을 실 현 했 지만 많은 시행 착 오 를 겪 었 습 니 다.저 는 그림 이 바로 배열 형식 이라는 것 을 깨 달 았 습 니 다.8 비트 그 레이스 케 일 그림 에 대해 채널 수 는 1 이 고 두 개의 배열 입 니 다.그러면 ROI 구역 을 다시 설정 하고 이 구역 을 복사 해서 픽 셀 을 추출 하여 배열 에 저장 할 필요 가 없습니다.그림 을 배열 에 직접 저장 하고 numpy 를 이용 하여 해당 하 는 배열 작업 을 하면 됩 니 다.이렇게 생각하면 훨씬 간단 합 니 다.이 편 은 제 가 수 정 된 코드 를 붙 여 큰 코드 를 절약 할 것 입 니 다.
ps:이번에 제 가 다시 설치 한 opencv 3.2.0 버 전 은 코드 에 cv2 를 직접 사 용 했 습 니 다.

#   opencv  ,    :
$ pkg-config --modversion opencv
cv_img_cv2.py

# -*- coding:utf-8 -*-
__author__ = 'lwp'

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
path ='/media/lwp/A/111111.jpg' #     
lwpImg = cv2.imread(path) #     
gray_lwpImg = cv2.cvtColor(lwpImg, cv2.COLOR_BGR2GRAY) #      

#      ,       、    、    、    、      
lwpImg = cv2.rectangle(lwpImg, (290, 0), (310, 327), (0, 255, 0), 2) 
#         
cv2.imshow('local_pixel', lwpImg) 

#           
pixel_data = np.array(gray_lwpImg)
#       
box_data = pixel_data[:, 290:310]
#      
pixel_sum = np.sum(box_data, axis=1)

#   
x = range(576)
fig = plt.figure(figsize=(4, 2))
ax1 = fig.add_subplot(1, 1, 1)
ax1.bar(x, pixel_sum, width=1) # x      x 0    ,width       
plt.xlabel('X')
plt.ylabel('Y')
plt.title('edge_filter')
plt.grid(True)
plt.show()

key = cv2.waitKey(0) & 0xFF
if key == ord('q'): #  q    
  cv2.destroyAllWindows()
효과:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기