Connect with us

Big Data

How to Develop a Virtual Keyboard Using OpenCV

Published

on

This article was published as a part of the Data Science Blogathon

Introduction

OpenCV is the most popular library for the task of computer vision, it is a cross-platform open-source library for machine learning, image processing, etc. using which real-time computer vision applications are developed.

CVzone is a computer vision package, where it uses OpenCV and Medias its core that makes us easy to run like hand tracking, face detection, facial landmark detection, pose estimation, etc., and also image processing and other computer vision-related applications. Check here for more information.

Implementation of Virtual Keyboard Using OpenCV

Let us create a virtual Keyboard.

First, let us install the required modules.

---> pip install numpy ---> pip install opencv-python ---> pip install cvzone ---> pip install pynput

Import Libraries for Virtual Keyboard Using OpenCV

Now let’s import the required modules

import cv2
import cvzone
from cvzone.HandTrackingModule import HandDetector
from time import sleep
import numpy as np
from pynput.keyboard import Controller

Here we are importing the HandDetector module from cvzone.HandTrackingModule and then in order to make the virtual keyboard work we need to import Controller from pynput.keyboard.

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
cap.set(3, 1280)
cap.set(4, 720)

Now let’s take real-time input from cv2.Videocapture

detector = HandDetector(detectionCon=0.8)
keyboard_keys = [["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"], ["A", "S", "D", "F", "G", "H", "J", "K", "L", ";"], ["Z", "X", "C", "V", "B", "N", "M", ",", ".", "/"]]
final_text = ""

We initialize HandDetector with detection confidence of 0.8 and assign it to the detector. Then we create an array of lists according to the layout of our keyboard and define an empty string to store the typed keys.

Defining Draw Function

keyboard = Controller()
def draw(img, buttonList): for button in buttonList: x, y = button.pos w, h = button.size cvzone.cornerRect(img, (button.pos[0], button.pos[1], button.size[0],button.size[0]), 20 ,rt=0) cv2.rectangle(img, button.pos, (int(x + w), int(y + h)), (255, 144, 30), cv2.FILLED) cv2.putText(img, button.text, (x + 20, y + 65), cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4) return img

Initialize the keyboard controller, and define a function with name draw() and it takes two arguments that is an image and the buttonList and return the image. Here Inside the draw() function, we are using cvzone’s cornerRect function to draw rectangle edges at the corner of each keys. It is in order to make our keyboard layout look better. It will look something like the below images.

W key Virtual Keyboard Using OpenCV

You can also try changing different colours.

class Button(): def __init__(self, pos, text, size=[85, 85]): self.pos = pos self.size = size self.text = text

Then we define a class called Button() and we give position, text and size as the inputs so that we can arrange the keyboard keys in a well-defined order.

buttonList = []
# mybutton = Button([100, 100], "Q")
for k in range(len(keyboard_keys)): for x, key in enumerate(keyboard_keys[k]): buttonList.append(Button([100 * x + 25, 100 * k + 50], key))

The above loop will loop through the keyboard keys and Button objects where we give position and text as inputs are appended in a list called button list. Later we can pass this list to draw function to draw on top of our real-time frame.

Main Program for Virtual Keyboard Using OpenCV

Here comes the important part.

while True: success, img = cap.read() img = detector.findHands(img) lmList, bboxInfo = detector.findPosition(img) img = draw(img, buttonList) # change the draw funtion to transparent_layout for transparent keys if lmList: for button in buttonList: x, y = button.pos w, h = button.size if x < lmList[8][0]<x+w and y < lmList[8][1] < y+h:
cv2.rectangle(img, button.pos, (x + w, y + h),
(0, 255, 255), cv2.FILLED)
cv2.putText(img, button.text, (x + 20, y + 65),
cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4)
l, _, _ = detector.findDistance(8,12, img, draw=False)
print(l) if l < 25:
keyboard.press(button.text)
cv2.rectangle(img, button.pos, (x + w, y + h),
(0, 255, 0), cv2.FILLED)
cv2.putText(img, button.text, (x + 20, y + 65),
cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4)
final_text += button.text
sleep(0.20) cv2.rectangle(img, (25,350), (700, 450),
(255, 255, 255), cv2.FILLED)
cv2.putText(img, final_text, (60, 425),
cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4) # cv2.rectangle(img, (100,100), (200,200),
# (100, 255, 0), cv2.FILLED)
# cv2.putText(img, 'Q', (120,180), cv2.FONT_HERSHEY_PLAIN, 5,
# (0, 0, 0), 5) # img = mybutton.draw(img)
cv2.imshow("output", img)
cv2.waitKey(1)

Inside the while loop the main function takes place, first we read the real-time input frames and store it in a variable called img. Then we pass that image to the detector.findHands() in order to find the hand in the frame. Then in that image, we need to find the position and bounding box information of that detected hand.

Here we can find the distance between the top point of our index finger and middle finger, if the distance between the two is less than a certain threshold, then we can type the letter on which we are indicating. Once we get the position then we loop through the entire position list. From that list, we find button position and button size and then we plot it on the frame according to a well-defined manner.

hand landmark model | Virtual Keyboard Using OpenCV
Image 1: Hand Landmark Model  

After that, we need to find the distance between the top point of our index finger and middle finger. In the above image, you can see the top points which we require are point 8 and point 12. Hence we need to pass 8, 12 inside a distance finding function in order to get the distance between them. In the above code you can see detector.findDistance() and there we passed 8, 12, and image in order to find the distance and we set the draw flag to false so that we do not need any line between the two points.

If the distance between the points is very less we will use press() function to press the keys. In the above code keyboard.press() and we are passing button.text in order to display that pressed key. And finally, we draw a small white rectangular box just below our keyboard layout in order to display the pressed key.

Once you execute the whole code it looks something like this.

final output | Virtual Keyboard Using OpenCV

After you bring the index finger and middle finger close to each other on top of a particular letter, you can type that letter.

use virtual keyboard

If you need the keyboard layout to be more customized, we can make the keyboard layout transparent. We just need to add a transparent layout function and replace the draw() function with transparent_layout() function.

Let us define the transparent_layout() function. Below is the function, it takes the same input as that of the draw() function. Here we assign a numpy’s zero_like() function to a variable called imgNew and perform the desired operation on that, like having the corner rectangle, creating the rectangle box for each key, and putting the text inside the box. After that, we copy that image to a new variable and create a mask of imgNew and we use OpenCV’s addWeighted() function to place the mask on top of the actual image. Hence this makes the keyboard layout to be transparent.

Customizing the Keyboard

def transparent_layout(img, buttonList): imgNew = np.zeros_like(img, np.uint8) for button in buttonList: x, y = button.pos cvzone.cornerRect(imgNew, (button.pos[0], button.pos[1], button.size[0],button.size[0]), 20 ,rt=0) cv2.rectangle(imgNew, button.pos, (x + button.size[0], y + button.size[1]), (255, 144, 30), cv2.FILLED) cv2.putText(imgNew, button.text, (x + 20, y + 65), cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4)

out = img.copy()
alpaha = 0.5
mask = imgNew.astype(bool)
print(mask.shape)
out[mask] = cv2.addWeighted(img, alpaha, imgNew, 1-alpaha, 0)[mask]
return out


Once you replace the draw() function inside while loop with transparent_layout() function it will look like this. (below image)

transparent keyboard |

Entire Code for Virtual Keyboard Using OpenCV

Below is the entire code

import cv2
import cvzone
from cvzone.HandTrackingModule import HandDetector
from time import sleep
import numpy as np
from pynput.keyboard import Controller cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
cap.set(3, 1280)
cap.set(4, 720) detector = HandDetector(detectionCon=0.8)
keyboard_keys = [["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"], ["A", "S", "D", "F", "G", "H", "J", "K", "L", ";"], ["Z", "X", "C", "V", "B", "N", "M", ",", ".", "/"]] final_text = "" keyboard = Controller() def draw(img, buttonList): for button in buttonList: x, y = button.pos w, h = button.size cvzone.cornerRect(img, (button.pos[0], button.pos[1], button.size[0],button.size[0]), 20 ,rt=0) cv2.rectangle(img, button.pos, (int(x + w), int(y + h)), (255, 144, 30), cv2.FILLED) cv2.putText(img, button.text, (x + 20, y + 65), cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4) return img def transparent_layout(img, buttonList): imgNew = np.zeros_like(img, np.uint8) for button in buttonList: x, y = button.pos cvzone.cornerRect(imgNew, (button.pos[0], button.pos[1], button.size[0],button.size[0]), 20 ,rt=0) cv2.rectangle(imgNew, button.pos, (x + button.size[0], y + button.size[1]), (255, 144, 30), cv2.FILLED) cv2.putText(imgNew, button.text, (x + 20, y + 65), cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4) out = img.copy() alpaha = 0.5 mask = imgNew.astype(bool) print(mask.shape) out[mask] = cv2.addWeighted(img, alpaha, imgNew, 1-alpaha, 0)[mask] return out class Button(): def __init__(self, pos, text, size=[85, 85]): self.pos = pos self.size = size self.text = text buttonList = []
# mybutton = Button([100, 100], "Q")
for k in range(len(keyboard_keys)): for x, key in enumerate(keyboard_keys[k]): buttonList.append(Button([100 * x + 25, 100 * k + 50], key)) while True: success, img = cap.read() img = detector.findHands(img) lmList, bboxInfo = detector.findPosition(img) img = draw(img, buttonList) # change the draw funtion to transparent_layout for transparent keys if lmList: for button in buttonList: x, y = button.pos w, h = button.size if x < lmList[8][0]<x+w and y < lmList[8][1] < y+h: cv2.rectangle(img, button.pos, (x + w, y + h), (0, 255, 255), cv2.FILLED) cv2.putText(img, button.text, (x + 20, y + 65), cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4) l, _, _ = detector.findDistance(8,12, img, draw=False) print(l) if l < 25: keyboard.press(button.text) cv2.rectangle(img, button.pos, (x + w, y + h), (0, 255, 0), cv2.FILLED) cv2.putText(img, button.text, (x + 20, y + 65), cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4) final_text += button.text sleep(0.20) cv2.rectangle(img, (25,350), (700, 450), (255, 255, 255), cv2.FILLED) cv2.putText(img, final_text, (60, 425), cv2.FONT_HERSHEY_PLAIN, 4, (0, 0, 0), 4) # cv2.rectangle(img, (100,100), (200,200), # (100, 255, 0), cv2.FILLED) # cv2.putText(img, 'Q', (120,180), cv2.FONT_HERSHEY_PLAIN, 5, # (0, 0, 0), 5) # img = mybutton.draw(img) cv2.imshow("output", img) cv2.waitKey(1)

Conclusion

This is the implementation of the virtual keyboard, if you want to take it to the next step you can also all the keypress sounds and then we can also make the keyboard layout move within the frames.

Hope you enjoyed it.

Reference

Image 1: https://google.github.io/mediapipe/solutions/hands.html

My LinkedIn

Thank You

The media shown in this article are not owned by Analytics Vidhya and are used at the Author’s discretion.

PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
Click here to access.

Source: https://www.analyticsvidhya.com/blog/2021/09/develop-a-virtual-keyboard-using-opencv/

Big Data

Proximity labeling: an enzymatic tool for spatial biology

Published

on

In this Forum, we highlight how cutting-edge, proximity-dependent, enzymatic labeling tools, aided by sequencing technology developments, have enabled the extraction of spatial information of proteomes, transcriptomes, genome organization, and cellular networks. We also discuss the potential applications of proximity labeling in the unexplored field of spatial biology in live systems.

PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
Click here to access.

Source: https://www.cell.com/trends/biotechnology/fulltext/S0167-7799(21)00211-0?rss=yes

Continue Reading

Big Data

Synthetic biology applications of the yeast mating signal pathway

Published

on


Glossary

Central carbon metabolism (CCM)

as the main source of energy, CCM oxidizes carbon through glycolysis, the pentose phosphate pathway, and the tricarboxylic acid cycle.

Chassis

a cell host or an organism for the production of biochemicals such as enzymes by introducing synthetic modules or devices into the cell.

Circuit

an assembly of biological parts that enables cells to perform logical functions, such as genetic switches, oscillators, and logic gates.

Convolutional neural network

a class of artificial neural networks with multiple building blocks that automatically and adaptively learn spatial hierarchies of features through back-propagation.

Clustered regularly interspaced short palindromic repeats (CRISPR)

a genome-editing tool in which CRISPR-associated nuclease 9 (Cas9)–guide RNA (gRNA) complexes recognize a protospacer adjacent motif through base-pairing and then cleave the target DNA,

CRISPR activation or interference (CRISPRa/i)

a tool that uses dead Cas protein and gRNA to activate or repress genes, resulting in gene upregulation or downregulation, respectively.

Cubic ternary complex model

an equilibrium model that describes the interactions between receptor and ligand. This model simulates the interactions of G proteins and receptors in both their active and inactive conformations.

G proteins

heterotrimeric G protein complexes are composed of α, β and γ subunits. Replacement of GDP by GTP in Gα causes a conformational change that dissociates the Gβγ subunits, leading to the activation of downstream signaling.

G protein-coupled receptor (GPCR)

a generic class of versatile, seven transmembrane-domain proteins that regulate a diverse array of intracellular signaling cascades in response to hormones, neurotransmitters, and other stimuli.

Karyogamy

a cascade of molecular events that finally lead to fusion of the nuclei and the formation of diploid cells.

Metabolic engineering

a new scientific field that combines multi-gene recombination technology with metabolic regulation and biochemical engineering to overproduce desired products.

Mitogen-activated protein kinases (MAPKs)

a family of serine/threonine kinases that convert extracellular signals into a diverse range of cellular responses.

Omics

studies include genomics, transcriptomics, proteomics, and metabolomics that characterize and quantify pools of biological molecules, and together give rise to the field of integrative genetics.

Oscillator

a genetic circuit where oscillation is generated by the inhibition and activation of transcriptional/translational feedback loops.

Pheromone-response element (PRE)

a cis element that is present in multiple copies in the promoters of a variety of pheromone-responsive genes; PREs interact with Ste12 to initiate the transcription of pheromone-induced genes.

Quorum sensing

a cell density-dependent phenomenon in which cells adapt their behavior by synthesizing, secreting, perceiving, and reacting to small diffusible signaling molecules termed autoinducers.

Scaffold protein

proteins that recruit other proteins to form a functional unit, thus enhancing signaling efficiency and fidelity.

Ste5ΔN-CTM

a Ste5 mutant that lacks the Gβγ-binding site because its N-terminus has been truncated; Ste5ΔN-CTM is no longer recruited to the plasma membrane following pheromone treatment.

PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
Click here to access.

Source: https://www.cell.com/trends/biotechnology/fulltext/S0167-7799(21)00210-9?rss=yes

Continue Reading

Big Data

Biotechnology of functional proteins and peptides for hair cosmetic formulations

Published

on

  • New cosmetic science.

    Elsevier, 1997

    • Bouillon C.
    • Wilkinson J.

    The science of hair care.

    CRC Press, 2005

    • Pierce J.S.
    • et al.

    Characterization of formaldehyde exposure resulting from the use of four professional hair straightening products.

    J. Occup. Environ. Hyg. 2011; 8: 686-699

    • Ahmed M.B.
    • et al.

    Neurotoxic effect of lead on rats: relationship to apoptosis.

    Int. J. Health Sci. (Qassim). 2013; 7: 192-199

    • Martins M.
    • et al.

    α-Chymotrypsin catalysed oligopeptide synthesis for hair modelling.

    J. Clean. Prod. 2019; 237117743

    • Tinoco A.
    • et al.

    Fusion proteins with chromogenic and keratin binding modules.

    Sci. Rep. 2019; 9: 14044

    • Cruz C.F.
    • et al.

    Peptide–protein interactions within human hair keratins.

    Int. J. Biol. Macromol. 2017; 101: 805-814

    • Sajna K.V.
    • et al.

    White biotechnology in cosmetics.

    in: Pandey A. Industrial biorefineries and white biotechnology. Elsevier, 2015: 607-652

  • Role of protein in cosmetics.

    Clin. Dermatol. 2008; 26: 321-325

  • Yoshioka, I. and Kamimura, Y. Seiwa Kasei Co. Ltd. Keratin hydrolyzate useful as hair fixatives, US4279996.

  • Fahnestock, S.R. and Schultz, T.M. EI Du Pont de Nemours and Company. Water-soluble silk proteins compositions for skin care, hair care or hair coloring, US7060260B2.

  • Detert, M. et al. Beiersdorf AG. Hair styling preparations with special protein hydrolysates, EP1878423A2.

    • Barba C.
    • et al.

    Restoring important hair properties with wool keratin proteins and peptides.

    Fibers Polym. 2010; 11: 1055-1061

    • Fernandes M.M.
    • et al.

    Keratin-based peptide: biological evaluation and strengthening properties on relaxed hair.

    Int. J. Cosmet. Sci. 2012; : 338-346

    • Ribeiro A.
    • et al.

    Potential of human γD-crystallin for hair damage repair: insights into the mechanical properties and biocompatibility.

    Int. J. Cosmet. Sci. 2013; 35: 458-466

  • Ross, V.M. Further preparations of silk proteins, seed oils, monosaccharide, natural botanicals and polysaccharide mixtures in compositions for hair care or hair repair, and skin care and topical treatments, US9023404B2.

    • Cruz C.F.
    • et al.

    Effect of a peptide in cosmetic formulations for hair volume control.

    Int. J. Cosmet. Sci. 2017; 39: 600-609

  • Edman, W.W. and Klemm, E.J. Shiseido Co. Ltd. Permanent waving compositions, US4798722.

  • Lang, G. et al. LOreal SA. Cosmetic temporary coloring compositions containing protein derivatives, US5192332.

  • Tomita, M. et al. Iwase Cosfa Co. Ltd, Morinaga Milk Industry Co. Ltd. Milk-protein hydrolyzates and compositions for use as hair and skin treating agent, US5314783.

  • Igarashi, S. et al. Kanebo Ltd. Hair coloring composition comprising anti-hair antibodies immobilized on coloring materials, and hair coloring methods, US5597386.

  • Oshika, M. and Naito, S. Kao Corp. Acylated silk proteins for hair care, US5747015.

  • Shah, S.M. Johnson and Johnson Consumer Inc. Heat-safe hair preparation and method of using same, US6156295.

  • Cannell, D. and Nguyen, N. LOreal SA. Composition for treating hair against chemical and photo damage, US6013250.

  • Schultz, T.M. and Tran, H.T. EI Du Pont de Nemours and Company. Modified soy proteins in personal care compositions, US2005/0008604A1.

    • Isnard M.D.
    • et al.

    Development of hair care formulations based on natural ingredients.

    Int. J. Phytocosmet. Nat. Ingred. 2019; 6: 9

    • Tinoco A.
    • et al.

    Keratin-based particles for protection and restoration of hair properties.

    Int. J. Cosmet. Sci. 2018; 40: 408-419

    • Tinoco A.
    • et al.

    Keratin:Zein particles as vehicles for fragrance release on hair.

    Ind. Crop. Prod. 2021; 159113067

    • Camargo Jr., F.B.
    • et al.

    Prevention of chemically induced hair damage by means of treatment based on proteins and polysaccharides.

    J. Cosmet. Dermatol. 2021; ()

    • Malinauskyte E.
    • et al.

    Penetration of different molecular weight hydrolysed keratins into hair fibres and their effects on the physical properties of textured hair.

    Int. J. Cosmet. Sci. 2021; 43: 26-37

    • Cavallaro G.
    • et al.

    Halloysite/keratin nanocomposite for human hair photoprotection coating.

    ACS Appl. Mater. Interfaces. 2020; 12: 24348-24362

    • Baus R.A.
    • et al.

    Strategies for improved hair binding: keratin fractions and the impact of cationic substructures.

    Int. J. Biol. Macromol. 2020; 160: 201-211

  • Cetintas, S. New hair botox material and the method to apply this material to hair, US2020/0197287A1.

    • Basit A.
    • et al.

    Health improvement of human hair and their reshaping using recombinant keratin K31.

    Biotechnol. Rep. 2018; 20e00288

    • Schulze Zur Wiesche E.
    • et al.

    Prevention of hair surface aging.

    J. Cosmet. Sci. 2011; 62: 237-249

    • Daithankar A.V.
    • et al.

    Moisturizing efficiency of silk protein hydrolysate: silk fibroin.

    Indian J. Biotechnol. 2005; 4: 115-121

    • Fernandes M.
    • Cavaco-Paulo A.

    Protein disulphide isomerase-mediated grafting of cysteine-containing peptides onto over-bleached hair.

    Biocatal. Biotransform. 2012; 30: 10-19

    • Tinoco A.
    • et al.

    Crystallin fusion proteins improve the thermal properties of hair.

    Front. Bioeng. Biotechnol. 2019; 7: 298

    • Wistow G.
    • et al.

    Myxococcus xanthus spore coat protein S may have a similar structure to vertebrate lens βγ-crystallins.

    Nature. 1985; 315: 771-773

  • Azizova, M. et al. Henkel IP and Holding GmbH. Hair treatment composition with naturally-derived peptide identical to human hair, US9505820B2.

    • Cruz C.F.
    • et al.

    Changing the shape of hair with keratin peptides.

    RSC Adv. 2017; 7: 51581-51592

  • Hawkins, G. et al. ELC Management LLC. Compositions and methods for permanent straightening of hair, US9011828B2.

  • Dimotakis, E. et al. LOreal SA. Hair cosmetic and styling compositions based on maleic acid copolymers and polyamines, US2013/0309190A1.

    • Song K.
    • et al.

    Effects of chemical structures of polycarboxylic acids on molecular and performance manipulation of hair keratin Kaili.

    RSC Adv. 2016; 6: 58594-58603

    • Qin X.
    • et al.

    Enzyme-triggered hydrogelation via self-assembly of alternating peptides.

    Chem. Commun. (Camb.). 2013; 49: 4839-4841

    • Yazawa K.
    • Numata K.

    Recent advances in chemoenzymatic peptide syntheses.

    Molecules. 2014; 19: 13755-13774

  • Savaides, A. and Tasker, R. Zotos International Inc. Formulations and methods for straightening and revitalizing hair, US2014/0261518A1.

  • Anthony, M.M. Copomon Enterprises LLC, Keratin Holdings LLC. Method of preparing a hair treatment formulation comprising nanoparticles in solution and method of hair treatment utilizing a treatment formulation comprising nanoparticles in solution, US9078818B1.

  • Chahal, S.P. et al. Croda International PLC. Protein-acrylate copolymer and hair conditioning product comprising said polymer, US9421159B2.

  • Huang, X. et al. EI Du Pont de Nemours and Company. Peptide-based conditioners and colorants for hair, skin and nails, US7220405B2.

  • Slusarewiez, P. Unilever Home and Personal Care USA. Method of coloring hair, US6773462B2.

  • Benson, R.E. et al. EI Du Pont de Nemours and Company, Affinergy LLC. Hair binding peptides and peptide-based hair reagents for personal care, US8273337B2.

  • Chung, Y.J. et al. Peptide exhibiting hair growth promoting activity and/or melanin production promoting activity and use thereof, US10344061B2.

  • Vickers, E.R. Clinical Stem Cells Pty Ltd. Peptides for hair growth, US2019/0091494A1.

    • Günay K.A.
    • et al.

    Selective peptide-mediated enhanced deposition of polymer fragrance delivery systems on human hair.

    ACS Appl. Mater. Interfaces. 2017; 9: 24238-24249

    • Bolduc C.
    • Shapiro J.

    Hair care products: waving, straightening, conditioning, and coloring.

    Clin. Dermatol. 2001; 19: 431-436

    • Dias M.F.R.G.

    Hair cosmetics: an overview.

    Int. J. Trichol. 2015; 7: 2

    • Barba C.
    • et al.

    Effect of wool keratin proteins and peptides on hair water sorption kinetics.

    J. Therm. Anal. Calorim. 2010; 102: 43-48

    • Villa A.L.V.
    • et al.

    Feather keratin hydrolysates obtained from microbial keratinases: effect on hair fiber.

    BMC Biotechnol. 2013; 13: 15

    • Mancon S.
    • et al.

    Hair conditioning effect of vegetable native protein in shampoo formulations.

    Seifen Ole Fette Wachse J. 2012; 138: 38-42

    • Wang S.
    • et al.

    Modification of wheat gluten for improvement of binding capacity with keratin in hair.

    R. Soc. Open Sci. 2018; 5171216

  • Sahib, S. and Jungman, E. Aquis Hairsciences Inc. Composition for improving hair health, US2020/0069551A1.

    • Antunes E.
    • et al.

    The effects of solvent composition on the affinity of a peptide towards hair keratin: experimental and molecular dynamics data.

    RSC Adv. 2015; 5: 12365-12371

  • Hair: its structure and response to cosmetic preparations.

    Clin. Dermatol. 1996; 14: 105-112

    • Cruz C.
    • et al.

    Human hair and the impact of cosmetic procedures: a review on cleansing and shape-modulating cosmetics.

    Cosmetics. 2016; 3: 26

    • Robbins C.R.

    Chemical composition of different hair types.

    in: Chemical and physical behavior of human hair. Springer, 2012: 105-176

    • Antunes E.
    • et al.

    Insights on the mechanical behavior of keratin fibrils.

    Int. J. Biol. Macromol. 2016; 89: 477-483

    • Kutlubay Z.
    • Serdaroglu S.

    Anatomy and physiology of hair.

    in: Hair and scalp disorders. IntechOpen, 2017: 13-27

    • Harrison S.
    • Sinclair R.

    Hair colouring, permanent styling and hair structure.

    J. Cosmet. Dermatol. 2004; 2: 180-185

    • Draelos Z.D.

    Hair care: an illustrated dermatologic handbook.

    CRC Press, 2004

    • Takada K.
    • et al.

    Influence of oxidative and/or reductive treatment on human hair (I): analysis of hair-damage after oxidative and/or reductive treatment.

    J. Oleo Sci. 2003; 52: 541-548

    • Kuzuhara A.

    Analysis of structural changes in bleached keratin fibers (black and white human hair) using Raman spectroscopy.

    Biopolymers. 2006; 81: 506-514

    • Wolfram L.J.
    • et al.

    The mechanism of hair bleaching.

    J. Soc. Cosmet. Chem. 1970; 900: 875-900

    • Bagiyan G.A.
    • et al.

    Oxidation of thiol compounds by molecular oxygen in aqueous solutions.

    Russ. Chem. Bull. 2003; 52: 1135-1141

    • Blasi-Romero A.
    • et al.

    In vitro investigation of thiol-functionalized cellulose nanofibrils as a chronic wound environment modulator.

    Polymers (Basel). 2021; 13: 249

  • PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
    Click here to access.

    Source: https://www.cell.com/trends/biotechnology/fulltext/S0167-7799(21)00213-4?rss=yes

    Continue Reading

    Big Data

    VW’s 9-month electric vehicle deliveries to China more than triple

    Published

    on

    FRANKFURT (Reuters) – Volkswagen’s deliveries of battery-powered electric vehicles to China more than tripled in the first nine months of the year, the carmaker said on Friday, less than two months after it flagged the need to change its e-car strategy there.

    Deliveries of battery electric vehicles (BEV) to the world’s largest car market stood at 47,200 in the January-September period, up from 15,700 in the same period last year.

    “As planned, we significantly accelerated the BEV market ramp-up in China in the third quarter, and we are on track to meet our target for the year of delivering 80,000 to 100,000 vehicles of the ID. model family,” Christian Dahlheim, head of group sales, said.

    Volkswagen Chief Executive Herbert Diess in July said the carmaker had to change its approach to how it markets its BEVs in China after first-half deliveries stood at just 18,285.

    (Reporting by Christoph Steitz; Editing by Maria Sheahan)

    Image Credit: Reuters

    PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
    Click here to access.

    Source: https://datafloq.com/read/vws-9-month-electric-vehicle-deliveries-china-triple/18644

    Continue Reading
    Esports4 days ago

    The best teams in Hearthstone Mercenaries

    Energy5 days ago

    Dover Announces Acquisition Of LIQAL B.V., A Leading Provider Of LNG And Hydrogen Fueling Solutions

    Esports3 days ago

    How Many Chapters are in the Demon Slayer Game?

    Energy5 days ago

    Sigma Lithium Says Technology Will Be Key To Make Lithium Greener And Cheaper At Financial Times Live Commodities Summit

    Aviation5 days ago

    Ottawa eyes charging airport security with vaccine verification for travellers

    zephyrnet5 days ago

    APENFT Foundation’s Announcement on Adjusting the APENFT(NFT) Airdrop Strategy

    Gaming5 days ago

    Mobile Casino Apps Explained

    Gaming5 days ago

    Criteria For Using An Online Casino

    Artificial Intelligence5 days ago

    AI Visual Inspection For Defect Detection in Manufacturing

    Esports3 days ago

    Demon Slayer: Kimetsu no Yaiba – The Hinokami Chronicles Character Tier List

    Payments2 days ago

    Everyone is building a wallet

    Crowdfunding5 days ago

    Walmart, With Eyes on Amazon, Tries to Build a Fintech Startup

    Aviation2 days ago

    Vaccine passports for overseas travel to be rolled out this week

    AI3 days ago

    When to Contact an Attorney After a Car Accident

    Esports5 days ago

    What is the VALORANT rank distribution?

    AI3 days ago

    5 Ways to Attract Clients with Law Firm SEO

    IOT5 days ago

    How IoT Can Improve Your Manufacturing Operations

    Esports5 days ago

    Rating every new special edition jersey at the 2021 World Championship

    Supply Chain3 days ago

    Top 10 hydraulic cylinder manufacturers in China

    Crowdfunding5 days ago

    We Founder Circle announces Global Accelerator Programme -EvolveX

    Trending