Как программно изменить имя или значок представления Eclipse?

Итак, давайте сделаем это один шаг за раз.

Во-первых, как узнать, какой цвет представлен каким значением? Для этого я сослался на этот вопрос переполнения стека , откуда вы можете получить эту цветовую карту HSV,

enter image description here

Если вы DuckDuckGo / Google / выполните поиск «Цветовая карта HSV или HSL» , вы можете найти множество примеров.

  • Теперь мы можем выбрать цвет вдоль горизонтальной оси. Мы можем использовать одно значение, например 120 для темно-синего или мы можем использовать диапазон значений, например, 45 to 80 для всех оттенков зеленого.

  • В чем я не был уверен, так это как определить пропорцию

желтого (или желтоватого), коричневого и красного цветов в конкретное изображение

blockquote>

, которое вы задаете в своем вопросе.

Тогда я подумал о двух способах представления цветовой пропорции.

  1. Доля пикселей, содержащих некоторую часть этого оттенка.
  2. Доля определенного оттенка относительно всех оттенков на изображении.

Затем, используя следующий скрипт, вы можете получить несколько чисел:

ПРИМЕЧАНИЕ: (Это скрипт Python, который я первоначально разместил. Соответствующий скрипт Matlab находится ниже post.)

import cv2 
import numpy as np

img = cv2.imread("D:\\lenna.jpg")

height_img, width_img, channels_img = img.shape

# Converts images from RGB to HSV 
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 

mask1 = cv2.inRange(hsv, (150, 0, 0), (150, 255,255)) #150 seems like pinkish 
mask2 = cv2.inRange(hsv, (1,0,0), (20, 255, 255)) #1 to 20 seems orangish

total_num_of_pixels = height_img * width_img
all_colors = np.sum(hsv[:,:,:] > 0)
num_of_pixels_with_pinkish_component = np.sum(mask1 > 0)
num_of_pixels_with_orangish_component = np.sum(mask2 > 0)

print("%age of pixels with pinkish component:", "{:.2f}".format(num_of_pixels_with_pinkish_component/total_num_of_pixels * 100))
print("%age of pixels with orangish component:", "{:.2f}".format(num_of_pixels_with_orangish_component/total_num_of_pixels * 100))

print("%age of pinkish component in the entire HSV image:", "{:.2f}".format(num_of_pixels_with_pinkish_component/all_colors * 100))
print("%age of orangish in the entire HSV image:", "{:.2f}".format(num_of_pixels_with_orangish_component/all_colors * 100))   

# To visualize the results
res1 = cv2.bitwise_and(img, img, mask=mask1)
res2 = cv2.bitwise_and(img, img, mask=mask2)

cv2.imshow('img', img) 
cv2.imshow('mask1', mask1)
cv2.imshow('mask2', mask2)
cv2.imshow('res1', res1)
cv2.imshow('res2', res2)

# To save the output
cv2.imwrite('D:\\mask1.png', mask1)
cv2.imwrite('D:\\mask2.png', mask2)
cv2.imwrite('D:\\res1.png', res1)
cv2.imwrite('D:\\res2.png', res2) 
  • Вывод :

% возраста пикселей с розоватой составляющей: 0,41

% возраста пикселей с оранжевым компонентом: 35,58

% возраста розоватого компонента во всем изображении HSV: 0,15

% возраста оранжевого во всем изображении HSV: 13,27

blockquote >
  • Вот как выглядит результат:

MASK1 (150 на оси оттенка кажется розоватым) enter image description here [ 116]

MASK2 (1 ~ 20 на оси оттенка кажется оранжевым) enter image description here

RES1 [1149 ]

enter image description here

RES2

enter image description here

Вот эквивалентный скрипт MATLAB .

close all;
clear all;
clc;

img = imread("/home/junglefox/Downloads/lenna.png");
figure, imshow(img), title('original image (RGB)');

img_size = size(img);
hsv_img = rgb2hsv(img);
hsv_img = im2uint8(hsv_img);
figure, imshow(hsv_img), title('original image in HSV');

% Orange component between 1 and 20 on the HSV map
minval = [1 0 0]; %// Define three element vector here for each colour plane i.e. [0 128 128];
maxval = [20 255 255]; %// Define three element vector here for each colour plane i.e. [0 128 128];

out = true(img_size(1), img_size(2));
for p = 1 : 3
    out = out & (hsv_img(:,:,p) >= minval(p) & hsv_img(:,:,p) <= maxval(p));
end

figure, imshow(out), title('image of orange component in image only');

total_num_of_pixels = img_size(1) * img_size(2);
all_colors = sum(hsv_img(:,:,:) > 0);

num_of_pixels_with_orangish_component = sum(sum(out > 0));
percentage_orange = num_of_pixels_with_orangish_component/total_num_of_pixels * 100;

printf("percentage of orange component in all pixels:%d\n", percentage_orange);

7
задан 24 November 2008 в 23:42
поделиться

2 ответа

setPartName(String) и setTitleImage(Image), оба на WorkbenchPart то, что Вы ищете.

Оба EditorParts и ViewPart расширения WorkbenchPart.

Нужно отметить, что оба этих метода protected так должен быть назван из самой части.

9
ответ дан 7 December 2019 в 03:22
поделиться

setPartName (..) в классе ViewPart.

0
ответ дан 7 December 2019 в 03:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: